diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-shentong200.yml b/casic-web/src/main/resources/config/application-shentong200.yml index b7f7f61..bca45e3 100644 --- a/casic-web/src/main/resources/config/application-shentong200.yml +++ b/casic-web/src/main/resources/config/application-shentong200.yml @@ -40,6 +40,12 @@ video: admin: role: administrator + av: + open: true + url: http://localhost:6909 + token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 + deviceCorn: 0 */1 * * * * + deviceStatusCorn: 0 */5 * * * * dc: corn: refreshToken: 0 */5 * * * * diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-shentong200.yml b/casic-web/src/main/resources/config/application-shentong200.yml index b7f7f61..bca45e3 100644 --- a/casic-web/src/main/resources/config/application-shentong200.yml +++ b/casic-web/src/main/resources/config/application-shentong200.yml @@ -40,6 +40,12 @@ video: admin: role: administrator + av: + open: true + url: http://localhost:6909 + token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 + deviceCorn: 0 */1 * * * * + deviceStatusCorn: 0 */5 * * * * dc: corn: refreshToken: 0 */5 * * * * diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index b8280ce..31022c0 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -25,7 +25,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/jitGWAuthP7,/jitGWRandom,/login,/record/upload db: init: enable: false @@ -37,6 +37,10 @@ picPath: D:\casic\stay\ log: #百万日志存储量 total: 1000000 + sm: + open: true + path: D:\workspace\server\keti\casic-production-safety\casic-web\src\main\resources\ + clientIp: 10.10.5.80 logging: level.root: info level.com.casic: debug diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-shentong200.yml b/casic-web/src/main/resources/config/application-shentong200.yml index b7f7f61..bca45e3 100644 --- a/casic-web/src/main/resources/config/application-shentong200.yml +++ b/casic-web/src/main/resources/config/application-shentong200.yml @@ -40,6 +40,12 @@ video: admin: role: administrator + av: + open: true + url: http://localhost:6909 + token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 + deviceCorn: 0 */1 * * * * + deviceStatusCorn: 0 */5 * * * * dc: corn: refreshToken: 0 */5 * * * * diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index b8280ce..31022c0 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -25,7 +25,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/jitGWAuthP7,/jitGWRandom,/login,/record/upload db: init: enable: false @@ -37,6 +37,10 @@ picPath: D:\casic\stay\ log: #百万日志存储量 total: 1000000 + sm: + open: true + path: D:\workspace\server\keti\casic-production-safety\casic-web\src\main\resources\ + clientIp: 10.10.5.80 logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-test42.yml b/casic-web/src/main/resources/config/application-test42.yml index e688bdf..9c3c9a3 100644 --- a/casic-web/src/main/resources/config/application-test42.yml +++ b/casic-web/src/main/resources/config/application-test42.yml @@ -26,7 +26,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/sync/org,/sync/user db: init: enable: false diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-shentong200.yml b/casic-web/src/main/resources/config/application-shentong200.yml index b7f7f61..bca45e3 100644 --- a/casic-web/src/main/resources/config/application-shentong200.yml +++ b/casic-web/src/main/resources/config/application-shentong200.yml @@ -40,6 +40,12 @@ video: admin: role: administrator + av: + open: true + url: http://localhost:6909 + token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 + deviceCorn: 0 */1 * * * * + deviceStatusCorn: 0 */5 * * * * dc: corn: refreshToken: 0 */5 * * * * diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index b8280ce..31022c0 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -25,7 +25,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/jitGWAuthP7,/jitGWRandom,/login,/record/upload db: init: enable: false @@ -37,6 +37,10 @@ picPath: D:\casic\stay\ log: #百万日志存储量 total: 1000000 + sm: + open: true + path: D:\workspace\server\keti\casic-production-safety\casic-web\src\main\resources\ + clientIp: 10.10.5.80 logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-test42.yml b/casic-web/src/main/resources/config/application-test42.yml index e688bdf..9c3c9a3 100644 --- a/casic-web/src/main/resources/config/application-test42.yml +++ b/casic-web/src/main/resources/config/application-test42.yml @@ -26,7 +26,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/sync/org,/sync/user db: init: enable: false diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 75ea0fd..04629c5 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -42,9 +42,20 @@ day: 180 #超期日志删除,日志保留天数 file: uploadPath: C:\casic\tmp\ + sm: + user: + open: true + cron: 0 */2 * * * * + url: http://10.11.13.5:8088 + clientId: client_id + clientSecret: client_secret + grantType: grant_type + scope: read + defaultId: + createStateDate: 1900-01-01 mdm: - wsdl: http://localhost:6909/safe-server/ws/mdmService?wsdl - mqId: 123456 #h后缀需添加 -UUM + wsdl: http://10.11.13.5:8088/hussarApi/services/MdmService?wsdl + mqId: 123456-UUM #h后缀需添加 -UUM open: false corn: 0 */60 * * * * video: @@ -54,26 +65,26 @@ corn: refreshToken: 0 */5 * * * * device: 0 */20 * * * * - open: true + open: false url: https://192.168.83.42:18080 user: jtcsyh pwd: dh: - open: true + open: false type: Dahua hik: - open: true + open: false areaCorn: 0 */60 * * * * deviceCorn: 0 */10 * * * * av: open: true - url: http://10.20.90.196:10025 + url: http://localhost:6909 token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 deviceCorn: 0 */1 * * * * deviceStatusCorn: 0 */5 * * * * wvp: #wvp视频平台配置信息 open: true - url: http://192.168.83.42:18080 + url: http://192.168.83.42:80 userName: admin pwd: 21232f297a57a5a743894a0e4a801fc3 server: diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml index 6b35fdc..7ea82c7 100644 --- a/casic-server-sync/pom.xml +++ b/casic-server-sync/pom.xml @@ -90,7 +90,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java index 6acb71f..e664540 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/GateController.java @@ -6,7 +6,6 @@ import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.model.auth.CasicCustomToken; import com.casic.missiles.core.shiro.ShiroKit; -import com.casic.missiles.modular.device.service.ISyncService; import com.casic.missiles.modular.domain.constants.PermissionConstants; import com.casic.missiles.modular.interfaces.log.LogManager; import com.casic.missiles.modular.interfaces.log.factory.LogTaskFactory; @@ -19,11 +18,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.io.PrintWriter; import java.io.UnsupportedEncodingException; @Api(tags = "应用网关") @@ -45,6 +42,7 @@ public void resourceCode(HttpServletRequest request,String x, HttpServletResponse response) throws IOException { String noPage = getBaseWeb(); try { + super.getSession().setAttribute(PermissionConstants.IS_APP, false); String dnName = request.getHeader("dnname"); log.info("dnName:{}", dnName); @@ -55,14 +53,15 @@ return; } -// String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); -// String account = getValueByDn(dn, key1); - String account = x; + String dn = new String(request.getHeader("dnname").getBytes("ISO8859-1"), "UTF-8"); + String account = getValueByDn(dn, key1); + //String account = x; //token自定义 CasicCustomToken token = new CasicCustomToken(account, "password"); token.setType(LoginType.NO_PASSWD); token.setRememberMe(false); Subject currentUser = ShiroKit.getSubject(); + try { currentUser.login(token); } catch (Exception e) { @@ -70,21 +69,22 @@ response.sendRedirect(noPage); return; } + AuthUser shiroUser = ShiroKit.getUser(); super.getSession().setAttribute("shiroUser", shiroUser); super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), clientip, shiroUser.getRoleTips())); - ShiroKit.getSession().setAttribute("sessionFlag", true); String sid = ShiroKit.getSession().getId().toString(); response.sendRedirect(webUrl+"?token=" + sid); + } catch (UnsupportedEncodingException e) { log.error(e.getMessage()); response.sendRedirect(noPage); } } + private String getBaseWeb(){ String[] parts = webUrl.split("#", 2); // 限制分割后的数组长度为2,避免将#号之后的内容也分割 if (parts.length > 0) { @@ -93,6 +93,7 @@ } return ""; } + private String getValueByDn(String dn, String key) { try { int start = dn.indexOf(key) + 2; @@ -105,4 +106,5 @@ return dn; } } -} + +} \ No newline at end of file diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java index 3bef152..f7d7d17 100644 --- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java +++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/SyncServiceImpl.java @@ -45,26 +45,41 @@ this.jdbcTemplate = jdbcTemplate; } + /** + * 保存组织管理信息 + * @param orgDTOS 组织集合 + */ @Transactional public void saveDeptList(List orgDTOS) { + + //检索全部同步组织信息 LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.isNotNull(Dept::getSyncId); List oldDeptList = deptService.list(query); Map deptMap = oldDeptList.stream().collect(Collectors.toMap(Dept::getSyncId, (dept -> dept))); + + //迭代组织信息进行维护 for (UumOrganizationDispDTO orgDTO : orgDTOS) { Dept dept = createDefaultDept(); dept.setFullName(orgDTO.getOrgName()); dept.setSimpleName(orgDTO.getOrgName()); dept.setSyncId(orgDTO.getInternalOrgCode()); + + //判断是否已同步该组织信息,已同步则进行数据更新 if (deptMap.containsKey(orgDTO.getInternalOrgCode())) { dept.setId(deptMap.get(orgDTO.getInternalOrgCode()).getId()); dept.setPid(deptMap.get(orgDTO.getInternalOrgCode()).getPid()); } + + //判断同步类型, if ("2".equals(orgDTO.getSyncType())) { + //设置删除标志 dept.setDelFlag("1"); } else { dept.setDelFlag("0"); } + + //设置同步父ID设置 dept.setSyncPid(orgDTO.getInternalPOrgCode()); deptService.saveOrUpdate(dept); } @@ -97,14 +112,14 @@ Map userMap = users.stream().collect(Collectors.toMap(User::getSyncId, (user -> user))); List delIds = new ArrayList<>(); for (UumOperatorDTO mdmPerson : uumOperatorDisps) { - String account = mdmPerson.getHID(); + String account = mdmPerson.getPID(); User user = null; - if (userMap.containsKey(mdmPerson.getHID())) { - user = userMap.get(mdmPerson.getHID()); + if (userMap.containsKey(mdmPerson.getPID())) { + user = userMap.get(mdmPerson.getPID()); } else { user = createDefaultUser(); } - user.setSyncId(mdmPerson.getHID()); + user.setSyncId(mdmPerson.getPID()); //转换为当前系统密级 SecretLevelEnum secretLevelEnum = SecretLevelEnum.valueOfCode(mdmPerson.getSecretLevel()); diff --git a/casic-server/pom.xml b/casic-server/pom.xml index 4b90eb4..f9120ce 100644 --- a/casic-server/pom.xml +++ b/casic-server/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java index 36bb267..96e082c 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/UploadLogController.java @@ -78,7 +78,12 @@ public void download(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { uploadLogService.download(response,path+ File.separator+url); } - + @BussinessLog(value = "告警图片访问") + @ApiOperation(value = "抓拍图片访问") + @GetMapping(value = "/alarm/{path}/{url}") + public void downloadAlarm(HttpServletResponse response,@PathVariable("path") String path,@PathVariable("url") String url) { + uploadLogService.downloadAlarm(response,path+ File.separator+url); + } @ApiIgnore @ApiOperation(value = "修改接口") @PostMapping(value = "/update") diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java index 4f683ef..9337787 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/BusDeviceInfoMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -25,4 +26,8 @@ List selectBusDeviceInfoPage(@Param("page") Page page, @Param("ew") QueryWrapper query); List searchStatusByArea(@Param("ew") QueryWrapper query); + + List selectRecognitionUrl(@Param("deviceId")Long deviceId); + + List selectDeviceBoundaryList(@Param("deviceId")Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml index 5e198d8..dce80c0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml @@ -119,7 +119,23 @@ - + + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java index 8859bd8..9a44521 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusGmDeviceExportDTO.java @@ -37,14 +37,6 @@ @TableField("monitor_name") private String monitorName; - - - - - - - - @ApiModelProperty(value = "设备类型", dataType = "String") @TableField("device_type") private String deviceType; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java index e041fa2..df389e8 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/BusDeviceInfo.java @@ -12,12 +12,14 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.video.dto.DeviceDTO; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 设备对象 bus_device_info @@ -174,8 +176,17 @@ @TableField("device_manufacture") private String deviceManufacture; + @ApiModelProperty(value = "识别流地址", dataType = "String") + @TableField(exist = false) + private String recognitionUrl; + + @ApiModelProperty(value = "识别边界地址列表", dataType = "String") + @TableField(exist = false) + private List deviceBoundaryDTOS; + /** * 设备传输对象 + * * @param deviceInfo 设备实体信息 * @return */ @@ -219,6 +230,4 @@ } - - } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java index 70c3415..24279f0 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IBusDeviceInfoService.java @@ -7,6 +7,7 @@ import com.casic.missiles.modular.data.dto.TotalDataDTO; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.video.service.IDeviceInfoSupportService; @@ -65,4 +66,20 @@ List addDeviceBatch(List results); List searchStatusByArea(); + + /** + * 查询识别流地址 + * + * @param deviceId 设备id + * @return + */ + List selectRecognitionUrl(Long deviceId); + + /** + * 根据设备查询 识别边界 + * + * @param id 主键 + * @return + */ + List selectDeviceBoundaryList(Long id); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java index 6064429..fbd54c7 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IUploadLogService.java @@ -27,4 +27,8 @@ String saveUploadDTO(UploadDTO uploadDTO); void download(HttpServletResponse response, String url); + void downloadAlarm(HttpServletResponse response, String url); + String saveFile(String base64Image); + + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java index 1c58177..80dd058 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/BusDeviceInfoServiceImpl.java @@ -21,21 +21,19 @@ import com.casic.missiles.modular.device.dao.BusDeviceInfoMapper; import com.casic.missiles.modular.device.dto.BusDeviceImportDTO; import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.dto.DeviceBoundaryDTO; import com.casic.missiles.modular.device.model.BusDeviceInfo; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import com.casic.missiles.modular.device.service.IBusDeviceInfoService; import com.casic.missiles.modular.device.tree.DeptDefaultTreeBuildFactory; import com.casic.missiles.modular.device.util.AesUtil; import com.casic.missiles.modular.enums.SysEnum; - import com.casic.missiles.modular.system.model.Area; import com.casic.missiles.modular.system.model.Dept; import com.casic.missiles.modular.system.model.Dict; import com.casic.missiles.modular.system.service.IAreaService; import com.casic.missiles.modular.video.dto.DeviceDTO; -import com.hikvision.artemis.sdk.config.ArtemisConfig; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -102,7 +100,7 @@ private QueryWrapper query(QueryWrapper query, String column, Long userId, Set roleTips) { //指定管理角色可以看全部设备信息 - if (roleTips.contains(adminRole)||roleTips.contains(normalRole)) { + if (roleTips.contains(adminRole) || roleTips.contains(normalRole)) { return query; } return query.inSql(column, "SELECT\n" + @@ -123,7 +121,7 @@ @Override public List list(Wrapper queryWrapper) { AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); - if(user!=null){ + if (user != null) { queryWrapper = query((QueryWrapper) queryWrapper, "id", user.getId(), user.getRoleTips()); } List busDeviceInfos = super.list(queryWrapper); @@ -178,7 +176,7 @@ BigDecimal result = new BigDecimal(dataDTO.getOnlineNum()).divide(new BigDecimal(dataDTO.getDevTotal()), 2, RoundingMode.HALF_UP); DecimalFormat df = new DecimalFormat("#.00"); - dataDTO.setOnlineRate( Convert.toDouble(df.format(result.doubleValue() * 100))); + dataDTO.setOnlineRate(Convert.toDouble(df.format(result.doubleValue() * 100))); } }); return dataDTO; @@ -216,16 +214,22 @@ //查询可见组织 DataScope scope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + LambdaQueryWrapper deptQuery = new LambdaQueryWrapper<>(); if (!ScopeEnums.ALL_TYPE.getCode().equals(scope.getScopeEnums())) { deptQuery.in(Dept::getId, scope.getDeptIds()); } + deptQuery.inSql(Dept::getId," select dept_id from bus_device_info "); deptQuery.orderByAsc(Dept::getNum); + List deptList = abstractPermissionContext.getDeptService().list(deptQuery); + List deptDTOS = new ArrayList<>(); List rootIds = new ArrayList<>(); Set normalIds = new HashSet<>(); + for (Dept dept : deptList) { + DeptDTO deptDTO = new DeptDTO(); deptDTO.setId(dept.getId()); deptDTO.setPid(dept.getPid()); @@ -246,13 +250,19 @@ deviceQuery.orderByAsc("create_time"); List deviceInfos = this.list(deviceQuery); - deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); + List deptDTOList = new ArrayList<>(); + for (BusDeviceInfo deviceInfo : deviceInfos) { + deptDTOList.add(this.createDeptDTO(deviceInfo)); + } + deptDTO.setChildrenNodes(deptDTOList); } + for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { rootIds.add(deptDTO.getPid()); } } + //过滤根节点 DeptDefaultTreeBuildFactory abstractTreeBuildFactory = new DeptDefaultTreeBuildFactory(); List newTree = new ArrayList<>(); @@ -270,10 +280,12 @@ List secretLevels = dictService.findInDictByCode(DataConstants.DICT_SECRET_LEVEL_TYPE); Map secretTypes = secretLevels.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); Map dictTypes = dictList.stream().collect(Collectors.toMap(Dict::getName, (dict -> dict))); + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); List areaList = areaService.list(); Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + Integer index = 1; List importDTOS = new ArrayList<>(); List errors = new ArrayList<>(); @@ -300,24 +312,24 @@ if (StrUtil.isEmpty(result.getArea()) || !areaMap.containsKey(Convert.toLong(result.getArea()))) { errors.add("第" + index + "行所属区域编码不存在!"); } - if(StrUtil.isNotEmpty(result.getLocation())&&result.getLocation().length()>120){ + if (StrUtil.isNotEmpty(result.getLocation()) && result.getLocation().length() > 120) { errors.add("第" + index + "行详细位置过长!"); } //商米校验 - if(SysEnum.sm.getCode().equals(sysType)){ - if(StrUtil.isEmpty(result.getNvrManufactureType())){ + if (SysEnum.sm.getCode().equals(sysType)) { + if (StrUtil.isEmpty(result.getNvrManufactureType())) { errors.add("第" + index + "行nvr类型不存在!"); - }else{ - if("大华".equals(result.getNvrManufactureType().trim())){ + } else { + if ("大华".equals(result.getNvrManufactureType().trim())) { result.setNvrManufacture("Dahua"); - }else{ + } else { result.setNvrManufacture("HIKVISION"); } } - validateSmDevice(errors,result,index); + validateSmDevice(errors, result, index); } - if(SysEnum.gm.getCode().equals(sysType)){ - validateGmDevice(errors,result,index); + if (SysEnum.gm.getCode().equals(sysType)) { + validateGmDevice(errors, result, index); } if (StrUtil.isEmpty(result.getCameraIndexCode())) { @@ -328,7 +340,7 @@ } } - if(index==1){ + if (index == 1) { errors.add("导入数据不能为空!"); } if (errors.isEmpty()) { @@ -350,12 +362,12 @@ } - /** * 商米设备校验 + * * @return */ - private void validateSmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateSmDevice(List errors, BusDeviceImportDTO result, Integer index) { if (StrUtil.isEmpty(result.getNvrUser())) { errors.add("第" + index + "行NVR用户名不能为空!"); } @@ -366,11 +378,13 @@ errors.add("第" + index + "行该设备通道号不能为空!"); } } + /** * 国米设备校验 + * * @return */ - private void validateGmDevice(List errors,BusDeviceImportDTO result,Integer index){ + private void validateGmDevice(List errors, BusDeviceImportDTO result, Integer index) { } @@ -390,13 +404,14 @@ return this.baseMapper.searchStatusByArea(query); } + /** * 创建节点 * * @param deviceInfo 设备信息 * @return */ - private DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { + public DeptDTO createDeptDTO(BusDeviceInfo deviceInfo) { DeptDTO deptDTO = new DeptDTO(); deptDTO.setType(DataConstants.NODE_TYPE_DEVICE); deptDTO.setId(deviceInfo.getId()); @@ -404,9 +419,34 @@ deptDTO.setDevice(deviceInfo); deptDTO.setName(deviceInfo.getMonitorName()); deptDTO.setFullName(deviceInfo.getMonitorName()); + try { + //检索识别流 + List recognitionUrls = this.selectRecognitionUrl(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(recognitionUrls)) { + deviceInfo.setRecognitionUrl(recognitionUrls.get(0)); + } + + //检索危险点设定框 + List deviceBoundaryDTOS = this.selectDeviceBoundaryList(deviceInfo.getId()); + if (CollectionUtil.isNotEmpty(deviceBoundaryDTOS)) { + deviceInfo.setDeviceBoundaryDTOS(deviceBoundaryDTOS); + } + } catch (Exception e) { + e.printStackTrace(); + } return deptDTO; } + @Override + public List selectRecognitionUrl(Long deviceId) { + return this.baseMapper.selectRecognitionUrl(deviceId); + } + + @Override + public List selectDeviceBoundaryList(Long id) { + return this.baseMapper.selectDeviceBoundaryList(id); + } + private List> getAreaData(QueryWrapper query) { DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 @@ -422,19 +462,20 @@ List> maps = this.baseMapper.selectMaps(query); - if(CollectionUtil.isEmpty(maps)){ + if (CollectionUtil.isEmpty(maps)) { maps = new ArrayList<>(); LambdaQueryWrapper areaQuery = new LambdaQueryWrapper<>(); - areaQuery.ne(Area::getPid,0); + areaQuery.ne(Area::getPid, 0); List areaList = areaService.list(areaQuery); for (Area area : areaList) { Map map = new HashMap<>(); map.put("areaName", area.getAreaName()); map.put("AREA", area.getId()); - map.put("TOTALNUM",0); - map.put("ONLINENUM",0); + map.put("TOTALNUM", 0); + map.put("ONLINENUM", 0); maps.add(map); - }; + } + ; } return maps; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java index 269bbd0..8445763 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/UploadLogServiceImpl.java @@ -142,6 +142,15 @@ response.addHeader("Content-Disposition", "attachment;filename=" + (StrUtil.isEmpty(fileName) ? uploadLog.getId() : reName)); this.downloadFile(url, response.getOutputStream()); } + @SneakyThrows + @Override + public void downloadAlarm(HttpServletResponse response, String url) { + String fileName = url; + response.setContentType("application/octet-stream"); + String reName = URLEncoder.encode(fileName, "UTF-8"); + response.addHeader("Content-Disposition", "attachment;filename=" + reName); + this.downloadFile(url, response.getOutputStream()); + } public void downloadFile(String fileId, OutputStream outputStream) throws Exception { diff --git a/casic-warning-analysis/pom.xml b/casic-warning-analysis/pom.xml index ab443d0..22ed505 100644 --- a/casic-warning-analysis/pom.xml +++ b/casic-warning-analysis/pom.xml @@ -53,7 +53,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} org.springframework.boot @@ -83,7 +83,12 @@ 2.0.0.alpha compile - + + com.casic + casic-server + ${pro.version} + compile + diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java index 5c8de19..7190068 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlarmRecordController.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import com.casic.missiles.modular.device.service.IAlarmRecordService; import com.casic.missiles.modular.device.vo.AlarmRecordVO; @@ -22,7 +24,7 @@ * @author lwh * @date 2024-11-20 */ -@Api(tags = "设备告警记录") +@Api(tags = "告警记录") @RestController @RequestMapping("/record") public class AlarmRecordController extends BaseController { @@ -33,54 +35,70 @@ this.alarmRecordService = alarmRecordService; } - @ApiOperation(value = "列表查询") + @BussinessLog(value = "告警记录列表查询") + @ApiOperation(value = "告警记录列表查询", hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(AlarmRecordVO alarmRecordVO) { QueryWrapper query = alarmRecordVO.genQuery(); return ResponseDataDTO.success(alarmRecordService.list(query)); } - @ApiOperation(value = "分页查询") + @BussinessLog(value = "告警记录分页查询") + @ApiOperation(value = "告警记录分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlarmRecordVO alarmRecordVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = alarmRecordVO.genQuery(); - page = alarmRecordService.page(page, query); + List list = alarmRecordService.selectAlarmRecordPage(page, query); + page.setRecords(list); return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value = "新增接口") + @BussinessLog(value = "告警记录新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") public ResponseDataDTO add(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.save(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "修改接口") + @BussinessLog(value = "告警记录上报接口") + @ApiOperation(value = "告警记录上报接口") + @PostMapping(value = "/upload") + public ResponseDataDTO upload(@RequestBody AlarmRecordDTO alarmRecord) { + alarmRecordService.upload(alarmRecord); + return ResponseDataDTO.success(); + } + + @BussinessLog(value = "告警记录修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody AlarmRecord alarmRecord) { alarmRecordService.updateById(alarmRecord); return ResponseDataDTO.success(); } - @ApiOperation(value = "删除接口") + @BussinessLog(value = "告警记录删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { alarmRecordService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "告警记录批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { alarmRecordService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value = "详情查询") + @BussinessLog(value = "告警记录详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(alarmRecordService.getById(id)); } -} + +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java index cb550ca..febb8f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/AlgoModelController.java @@ -1,15 +1,20 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.model.AlgoModel; +import com.casic.missiles.modular.device.model.ModelRecognitionType; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import com.casic.missiles.modular.device.vo.AlgoModelVO; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -27,18 +32,21 @@ @RequestMapping("/device/model") public class AlgoModelController extends BaseController { private final IAlgoModelService algoModelService; + private final IModelRecognitionTypeService modelRecognitionTypeService; - public AlgoModelController(IAlgoModelService algoModelService) { + public AlgoModelController(IAlgoModelService algoModelService, IModelRecognitionTypeService modelRecognitionTypeService) { this.algoModelService = algoModelService; + this.modelRecognitionTypeService = modelRecognitionTypeService; } - - @ApiOperation(value = "列表查询") + @BussinessLog("算法模型列表查询") + @ApiOperation(value = "算法模型列表查询") @GetMapping(value = "/list") public ResponseDataDTO> list(AlgoModelVO algoModelVO) { QueryWrapper query = algoModelVO.genQuery(); return ResponseDataDTO.success(algoModelService.list(query)); } + @ApiOperation(value = "分页查询") @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(AlgoModelVO algoModelVO) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java deleted file mode 100644 index 90b3961..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceModelRelationController.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import com.casic.missiles.modular.device.model.DeviceModelRelation; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import com.casic.missiles.modular.device.vo.DeviceModelRelationVO; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 设备模型关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备模型关联") -@RestController -@RequestMapping("/device/deviceRelation") -public class DeviceModelRelationController extends BaseController { - - private final IDeviceModelRelationService deviceModelRelationService; - - public DeviceModelRelationController(IDeviceModelRelationService deviceModelRelationService) { - this.deviceModelRelationService = deviceModelRelationService; - } - - @ApiOperation(value = "列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceModelRelationVO deviceModelRelationVO) { - QueryWrapper query = deviceModelRelationVO.genQuery(); - return ResponseDataDTO.success(deviceModelRelationService.list(query)); - } - - @ApiOperation(value = "分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceModelRelationVO deviceModelRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceModelRelationVO.genQuery(); - page = deviceModelRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value = "新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.save(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceModelRelation deviceModelRelation) { - deviceModelRelationService.updateById(deviceModelRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceModelRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceModelRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value = "详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceModelRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java deleted file mode 100644 index de24c24..0000000 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/DeviceSceneRelationController.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.casic.missiles.modular.device.controller; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.model.form.IdForms; - -import java.util.List; - -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; -import com.casic.missiles.modular.device.vo.DeviceSceneRelationVO; - -/** - * 设备场景关联Controller - * - * @author lwh - * @date 2024-11-20 - */ -@Api(tags = "设备场景关联") -@RestController -@RequestMapping("/device/sceneRelation") -public class DeviceSceneRelationController extends BaseController { - - private final IDeviceSceneRelationService deviceSceneRelationService; - - public DeviceSceneRelationController(IDeviceSceneRelationService deviceSceneRelationService) { - this.deviceSceneRelationService = deviceSceneRelationService; - } - - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") - public ResponseDataDTO> list(DeviceSceneRelationVO deviceSceneRelationVO) { - QueryWrapper query = deviceSceneRelationVO.genQuery(); - return ResponseDataDTO.success(deviceSceneRelationService.list(query)); - } - - @ApiOperation(value ="分页查询") - @GetMapping(value = "/listPage") - public ResponseDataDTO> listPage(DeviceSceneRelationVO deviceSceneRelationVO) { - Page page = PageFactory.defaultPage(); - QueryWrapper query = deviceSceneRelationVO.genQuery(); - page = deviceSceneRelationService.page(page, query); - return ResponseDataDTO.success(super.packForBT(page)); - } - - - @ApiOperation(value ="新增接口") - @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.save(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="修改接口") - @PostMapping(value = "/update") - public ResponseDataDTO update(@RequestBody DeviceSceneRelation deviceSceneRelation) { - deviceSceneRelationService.updateById(deviceSceneRelation); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="删除接口") - @GetMapping(value = "/delete") - public ResponseDataDTO delete(String id) { - deviceSceneRelationService.removeById(id); - return ResponseDataDTO.success(); - } - - @ApiOperation("批量删除") - @PostMapping("/batchDelete") - public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { - deviceSceneRelationService.removeByIds(ids.getIds()); - return ResponseDataDTO.success(); - } - - @ApiOperation(value ="详情查询") - @GetMapping(value = "/detail") - public ResponseDataDTO detail(String id) { - return ResponseDataDTO.success(deviceSceneRelationService.getById(id)); - } -} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java index 15148bb..3f7e33d 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/HazardClassificationInfoController.java @@ -3,20 +3,20 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; +import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import com.casic.missiles.modular.device.vo.HazardClassificationInfoVO; - /** * 隐患分类管理Controller * @@ -25,7 +25,7 @@ */ @Api(tags = "隐患分类管理") @RestController -@RequestMapping("/device/classificationInfo") +@RequestMapping("/classificationInfo") public class HazardClassificationInfoController extends BaseController { private final IHazardClassificationInfoService hazardClassificationInfoService; @@ -34,14 +34,16 @@ this.hazardClassificationInfoService = hazardClassificationInfoService; } - @ApiOperation(value ="列表查询") + @BussinessLog(value = "隐患分类查询") + @ApiOperation(value = "列表查询",hidden = true) @GetMapping(value = "/list") public ResponseDataDTO> list(HazardClassificationInfoVO hazardClassificationInfoVO) { QueryWrapper query = hazardClassificationInfoVO.genQuery(); return ResponseDataDTO.success(hazardClassificationInfoService.list(query)); } - @ApiOperation(value ="分页查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(HazardClassificationInfoVO hazardClassificationInfoVO) { Page page = PageFactory.defaultPage(); @@ -50,38 +52,42 @@ return ResponseDataDTO.success(super.packForBT(page)); } - - @ApiOperation(value ="新增接口") + @BussinessLog(value = "隐患分类新增") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.save(hazardClassificationInfo); + public ResponseDataDTO add(@RequestBody HazardClassificationInfo hazardClassificationInfo) { + hazardClassificationInfoService.save(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @BussinessLog(value = "隐患分类修改") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody HazardClassificationInfo hazardClassificationInfo) { - hazardClassificationInfoService.updateById(hazardClassificationInfo); + hazardClassificationInfoService.updateById(hazardClassificationInfo); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @BussinessLog(value = "隐患分类删除") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - hazardClassificationInfoService.removeById(id); + hazardClassificationInfoService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @BussinessLog(value = "隐患分类批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { hazardClassificationInfoService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @BussinessLog(value = "隐患分类分页查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(hazardClassificationInfoService.getById(id)); } -} +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java index 42fe497..cbb5490 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/ModelRecognitionTypeController.java @@ -1,22 +1,23 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.model.response.dto.ResponseDataDTO; -import org.springframework.web.bind.annotation.*; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.model.ModelRecognitionType; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; +import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; import java.util.List; -import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; -import com.casic.missiles.modular.device.model.ModelRecognitionType; -import com.casic.missiles.modular.device.vo.ModelRecognitionTypeVO; - /** * 模型识别类型管理Controller * @@ -34,14 +35,18 @@ this.modelRecognitionTypeService = modelRecognitionTypeService; } - @ApiOperation(value ="列表查询") - @GetMapping(value = "/list") + @BussinessLog("根据模型查询识别类型") + @ApiOperation(value = "算法报警对象列表查询") + @GetMapping(value = "/recognitionList") public ResponseDataDTO> list(ModelRecognitionTypeVO modelRecognitionTypeVO) { + if (StrUtil.isEmpty(modelRecognitionTypeVO.getModelId())) { + return ResponseDataDTO.error("算法标识不能为空"); + } QueryWrapper query = modelRecognitionTypeVO.genQuery(); return ResponseDataDTO.success(modelRecognitionTypeService.list(query)); } - @ApiOperation(value ="分页查询") + @ApiOperation(value = "分页查询", hidden = true) @GetMapping(value = "/listPage") public ResponseDataDTO> listPage(ModelRecognitionTypeVO modelRecognitionTypeVO) { Page page = PageFactory.defaultPage(); @@ -51,35 +56,35 @@ } - @ApiOperation(value ="新增接口") + @ApiOperation(value = "新增接口", hidden = true) @PostMapping(value = "/add") - public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.save(modelRecognitionType); + public ResponseDataDTO add(@RequestBody ModelRecognitionType modelRecognitionType) { + modelRecognitionTypeService.save(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="修改接口") + @ApiOperation(value = "修改接口", hidden = true) @PostMapping(value = "/update") public ResponseDataDTO update(@RequestBody ModelRecognitionType modelRecognitionType) { - modelRecognitionTypeService.updateById(modelRecognitionType); + modelRecognitionTypeService.updateById(modelRecognitionType); return ResponseDataDTO.success(); } - @ApiOperation(value ="删除接口") + @ApiOperation(value = "删除接口", hidden = true) @GetMapping(value = "/delete") public ResponseDataDTO delete(String id) { - modelRecognitionTypeService.removeById(id); + modelRecognitionTypeService.removeById(id); return ResponseDataDTO.success(); } - @ApiOperation("批量删除") + @ApiOperation(value = "批量删除", hidden = true) @PostMapping("/batchDelete") public ResponseDataDTO batchDelete(@RequestBody IdForms ids) { modelRecognitionTypeService.removeByIds(ids.getIds()); return ResponseDataDTO.success(); } - @ApiOperation(value ="详情查询") + @ApiOperation(value = "详情查询", hidden = true) @GetMapping(value = "/detail") public ResponseDataDTO detail(String id) { return ResponseDataDTO.success(modelRecognitionTypeService.getById(id)); diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java index cf9be0b..67b4cbb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/controller/RiskPointInfoController.java @@ -1,19 +1,31 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.common.annotion.BussinessLog; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.DangerousOperationDTO; +import com.casic.missiles.modular.device.dto.HazardousChemicalsSiteDTO; +import com.casic.missiles.modular.device.dto.WorkProcedureDTO; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.vo.RiskPointInfoVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -26,7 +38,7 @@ @Api(tags = "风险点管理信息") @RestController @RequestMapping("/risk") -public class RiskPointInfoController extends BaseController { +public class RiskPointInfoController extends ExportController { private final IRiskPointInfoService riskPointInfoService; @@ -51,6 +63,41 @@ return ResponseDataDTO.success(super.packForBT(page)); } + @BussinessLog(value = "风险点导入") + @ApiOperation(value = "风险点导入") + @PostMapping(value = "/import") + public ResponseDataDTO importDevice(@RequestParam("file") MultipartFile file, @ApiParam("类型") Integer riskType) throws IOException { + List results = this.convertToRiskPointInfoList(file, riskType); + List list = riskPointInfoService.addDeviceBatch(results, riskType); + if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 + ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); + responseDataDTO.setMessage(StrUtil.join("\n,", list)); + return responseDataDTO; + } + return ResponseDataDTO.success(); + } + + private List convertToRiskPointInfoList(MultipartFile file, Integer riskType) throws IOException { + List riskPointInfos = new ArrayList<>(); + switch (riskType) { + case 5: //危险作业工序 + List procedureDTOS = this.importExcel(WorkProcedureDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(procedureDTOS, RiskPointInfo.class); + break; + case 4: //危险作业 + List dangerousOperationDTOS = this.importExcel(DangerousOperationDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(dangerousOperationDTOS, RiskPointInfo.class); + break; + case 3: //危险化学品场所 + List siteDTOS = this.importExcel(HazardousChemicalsSiteDTO.class, file, null, null); + riskPointInfos = BeanUtil.copyToList(siteDTOS, RiskPointInfo.class); + break; + } + + return riskPointInfos; + } @ApiOperation(value = "新增接口") @PostMapping(value = "/add") diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java index a5f59b6..945b5d7 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceModelRelationMapper.java @@ -1,23 +1,27 @@ package com.casic.missiles.modular.device.dao; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.modular.device.model.DeviceModelRelation; import org.apache.ibatis.annotations.Param; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + import java.util.List; + /** *

- * 设备模型关联 Mapper 接口 + * 设备模型关联 Mapper 接口 *

* * @author lwh * @date 2024-11-20 */ public interface DeviceModelRelationMapper extends BaseMapper { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceModelRelationList(@Param("ew") QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java index 286ee9f..bf3943a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/DeviceSceneRelationMapper.java @@ -20,4 +20,6 @@ * 设备场景关联 分页检索 */ List selectDeviceSceneRelationPage( @Param("page") Page page,@Param("ew" ) QueryWrapper query); + + List selectDeviceSceneRelationList(@Param("ew" ) QueryWrapper query); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml index 96a31af..e3e378f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/AlarmRecordMapper.xml @@ -21,7 +21,8 @@ algo_model_id as algoModelId , recognition_type_id as recognitionTypeId , file_path as filePath , - alarm_time as alarmTime + alarm_time as alarmTime, + scene_id as sceneId a.id , @@ -38,17 +39,28 @@ a.file_path as filePath , a.alarm_time - as alarmTime + as alarmTime, + a.scene_id as sceneId diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml index a806f87..a3479f6 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceModelRelationMapper.xml @@ -53,7 +53,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml index 9161694..236bcfa 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceSceneRelationMapper.xml @@ -12,10 +12,10 @@ id , - create_time as createTime , - update_time as updateTime , - device_id as deviceId , - scene_id as sceneId + create_time as createTime , + update_time as updateTime , + device_id as deviceId , + scene_id as sceneId a.id , @@ -38,7 +38,18 @@ - + + and device_id = #{request.deviceId} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml index efa8648..062c1ff 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/dao/mapping/ModelRecognitionTypeMapper.xml @@ -16,7 +16,8 @@ create_time as createTime , update_time as updateTime , type_name as typeName , - type_code as typeCode + type_code as typeCode, + model_id as modelId a @@ -30,7 +31,8 @@ a.type_name as typeName , a.type_code - as typeCode + as typeCode, + a.model_id as modelId select diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java index be746f2..147c136 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/AlarmRecord.java @@ -1,10 +1,12 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.fastjson.annotation.JSONField; import com.baomidou.mybatisplus.annotation.IdType; 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 com.casic.missiles.core.base.json.DateDeserializer; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,25 +39,59 @@ @ApiModelProperty(value = "设备ID", dataType = "Long") @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "设备名称", dataType = "String") + @TableField(exist = false) + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + @TableField(exist = false) + private String areaName; + + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; @ApiModelProperty(value = "模型ID", dataType = "Long") @TableField("algo_model_id") private Long algoModelId; + @ApiModelProperty(value = "模型名称", dataType = "String") + @TableField(exist = false) + private String algoModelName; + @ApiModelProperty(value = "识别类型ID", dataType = "Long") @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String") + @TableField(exist = false) + private String recognitionTypeName; + + @ApiModelProperty(value = "场景ID", dataType = "Long") + @TableField("scene_id") + private Long sceneId; + @ApiModelProperty(value = "场景名称", dataType = "String") + @TableField(exist = false) + private String sceneName; + @ApiModelProperty(value = "文件路径", dataType = "String") @TableField("file_path") private String filePath; - @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "告警内容", dataType = "String") + @TableField("alarm_context") + private String alarmContext; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "告警时间", dataType = "Date") + @JSONField(serializeUsing = DateDeserializer.class) @TableField("alarm_time") private Date alarmTime; + @ApiModelProperty(value = "告警图片(base64 格式)", dataType = "String") + @TableField(exist = false) + private String picBase64; + @Override public String toString() { return "AlarmRecord{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java index 56bf229..a872d51 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceModelRelation.java @@ -7,35 +7,34 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; import java.math.BigDecimal; +import java.util.Date; /** * 设备模型关联对象 device_model_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_model_relation") -public class DeviceModelRelation extends Model -{ +public class DeviceModelRelation extends Model { private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) @TableField("device_id") private Long deviceId; @@ -59,18 +58,30 @@ @TableField("recognition_type_id") private Long recognitionTypeId; + @ApiModelProperty(value = "识别类型名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY, readOnly = true) + @TableField(exist = false) + private String recognitionTypeName; -@Override -public String toString() { -return "DeviceModelRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"algoModelId="+algoModelId -+"isUse="+isUse -+"threshold="+threshold -+"confidenceLevel="+confidenceLevel -+"recognitionTypeId="+recognitionTypeId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; + + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceModelRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "algoModelId=" + algoModelId + + "isUse=" + isUse + + "threshold=" + threshold + + "confidenceLevel=" + confidenceLevel + + "recognitionTypeId=" + recognitionTypeId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java index e4d6105..592c4f2 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/DeviceSceneRelation.java @@ -7,49 +7,60 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 设备场景关联对象 device_scene_relation - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("device_scene_relation") -public class DeviceSceneRelation extends Model -{ +public class DeviceSceneRelation extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; - @ApiModelProperty(value = "创建时间", dataType = "Date") + @ApiModelProperty(value = "创建时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("create_time") private Date createTime; - @ApiModelProperty(value = "修改时间", dataType = "Date") + @ApiModelProperty(value = "修改时间", dataType = "Date", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("update_time") private Date updateTime; - @ApiModelProperty(value = "设备ID", dataType = "Long") + @ApiModelProperty(value = "设备ID", dataType = "Long", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) @TableField("device_id") private Long deviceId; + @ApiModelProperty(value = "场景名称", dataType = "String", accessMode = ApiModelProperty.AccessMode.READ_ONLY,readOnly = true) + @TableField(exist = false) + private String sceneName; @ApiModelProperty(value = "场景ID", dataType = "Long") @TableField("scene_id") private Long sceneId; + @ApiModelProperty(value = "识别边界", dataType = "String") + @TableField("boundary") + private String boundary; -@Override -public String toString() { -return "DeviceSceneRelation{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"deviceId="+deviceId -+"sceneId="+sceneId -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "危险因素描述", dataType = "String") + @TableField("remark") + private String remark; + + @Override + public String toString() { + return "DeviceSceneRelation{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "deviceId=" + deviceId + + "sceneId=" + sceneId + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java index 172db6c..2eea30b 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/ModelRecognitionType.java @@ -7,23 +7,23 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; + import java.util.Date; /** * 模型识别类型管理对象 model_recognition_type - * + * * @author lwh * @date 2024-11-20 */ @Data @TableName("model_recognition_type") -public class ModelRecognitionType extends Model -{ +public class ModelRecognitionType extends Model { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键", dataType = "Long") - @TableId(value = "id",type = IdType.ASSIGN_ID) + @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "创建时间", dataType = "Date") @@ -42,14 +42,17 @@ @TableField("type_code") private String typeCode; - -@Override -public String toString() { -return "ModelRecognitionType{" -+"id="+id -+"createTime="+createTime -+"updateTime="+updateTime -+"typeName="+typeName -+"typeCode="+typeCode -+"}"; -}} \ No newline at end of file + @ApiModelProperty(value = "模型ID", dataType = "Long") + @TableField("model_id") + private Long modelId; + @Override + public String toString() { + return "ModelRecognitionType{" + + "id=" + id + + "createTime=" + createTime + + "updateTime=" + updateTime + + "typeName=" + typeName + + "typeCode=" + typeCode + + "}"; + } +} \ No newline at end of file diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java index 6a57d72..a35d655 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/model/RiskPointInfo.java @@ -1,5 +1,6 @@ package com.casic.missiles.modular.device.model; +import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -35,33 +36,89 @@ @TableField("update_time") private Date updateTime; + @ExcelProperty("风险点名称") @ApiModelProperty(value = "风险点名称", dataType = "String") @TableField("risk_name") private String riskName; - @ApiModelProperty(value = "经度", dataType = "BigDecimal") - @TableField("longitude") - private BigDecimal longitude; + @ExcelProperty("所属组织") + @ApiModelProperty(value = "组织名称", dataType = "String") + @TableField(exist = false) + private String deptName; - @ApiModelProperty(value = "纬度", dataType = "BigDecimal") - @TableField("latitude") - private BigDecimal latitude; + @ExcelProperty("区域编码") + @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") + @TableField("area") + private String area; - @ApiModelProperty(value = "所属组织", dataType = "Long") - @TableField("dept_id") - private Long deptId; + @ExcelProperty("详细地址") + @ApiModelProperty(value = "详细地址", dataType = "String") + @TableField("address") + private String address; - @ApiModelProperty(value = "备注", dataType = "String") - @TableField("description") - private String description; - + @ExcelProperty("业务内容") @ApiModelProperty(value = "业务内容", dataType = "String") @TableField("content") private String content; - @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") - @TableField("area") - private String area; + @ExcelProperty("经度") + @ApiModelProperty(value = "经度", dataType = "BigDecimal") + @TableField("longitude") + private BigDecimal longitude; + + @ExcelProperty("纬度") + @ApiModelProperty(value = "纬度", dataType = "BigDecimal") + @TableField("latitude") + private BigDecimal latitude; + + @ExcelProperty("备注") + @ApiModelProperty(value = "备注", dataType = "String") + @TableField("description") + private String description; + + + @ExcelProperty("危险性质") + @ApiModelProperty(value = "危险性质", dataType = "String") + @TableField("nature") + private String nature; + + @ExcelProperty("等级") + @ApiModelProperty(value = "等级", dataType = "String") + @TableField("grade") + private String grade; + + @ExcelProperty("定岗") + @ApiModelProperty(value = "定岗", dataType = "String") + @TableField("assign_post") + private String assignPost; + + @ExcelProperty("定员") + @ApiModelProperty(value = "定员", dataType = "String") + @TableField("staff_quota") + private String staffQuota; + + @ExcelProperty("危险物质及定量") + @ApiModelProperty(value = "危险物质及定量", dataType = "String") + @TableField("substances_quantities") + private String substancesQuantities; + + @ApiModelProperty(value = "'类型(1 危险点 2重大危险源 3 危险化学品场所 4 危险作业 5危险作业工序)", dataType = "String") + @TableField("risk_type") + private Integer riskType; + + @ExcelProperty("隐患分类一") + @ApiModelProperty(value = "隐患分类1名称", dataType = "String") + @TableField(exist = false) + private String classificationTypeName; + + @ExcelProperty("隐患分类二") + @ApiModelProperty(value = "隐患分类2名称", dataType = "String") + @TableField(exist = false) + private String classificationType2Name; + + @ApiModelProperty(value = "所属组织", dataType = "Long") + @TableField("dept_id") + private Long deptId; @ApiModelProperty(value = "隐患分类1", dataType = "Long") @TableField("classification_type") @@ -71,23 +128,98 @@ @TableField("classification_type2") private Long classificationType2; - @ApiModelProperty(value = "组织名称", dataType = "String") - @TableField(exist = false) - private String deptName; + @ApiModelProperty(value = "区域名称", dataType = "String") @TableField(exist = false) private String areaName; - @ApiModelProperty(value = "隐患分类1名称", dataType = "String") - @TableField(exist = false) - private String classificationTypeName; - @ApiModelProperty(value = "隐患分类2名称", dataType = "String") - @TableField(exist = false) - private String classificationType2Name; - @ApiModelProperty(value = "关联设备信息") @TableField(exist = false) private List deviceList; + + @ExcelProperty("关联设备") + @TableField(exist = false) + private String deviceCodes; + + + @ApiModelProperty(value = "场所级别(重大危险源)") + @TableField("venue_level") + private String venueLevel; + + @ApiModelProperty(value = "危化品名称(重大危险源)") + @TableField("hazardous_chemicals") + private String hazardousChemicals; + + @ApiModelProperty(value = "存量(重大危险源)") + @TableField("stock") + private String stock; + + @ApiModelProperty(value = "临界量(重大危险源)") + @TableField("critical_quantity") + private String criticalQuantity; + + @ApiModelProperty(value = "分级指数(重大危险源)") + @TableField("grading_index") + private String gradingIndex; + + @ApiModelProperty(value = "危险源等级(重大危险源)") + @TableField("hazard_level") + private String hazardLevel; + + @ApiModelProperty(value = "危险化学品场所(危险化学品场所)") + @TableField("hazardous_chemical_site") + private String hazardousChemicalSite; + + @ApiModelProperty(value = "场所分类(危险化学品场所)") + @TableField("venue_classification") + private String venueClassification; + + @ApiModelProperty(value = "定量(重大危险源)") + @TableField("quantitative") + private String quantitative; + + @ApiModelProperty(value = "定寿命(危险化学品场所)") + @TableField("fixed_lifespan") + private String fixedLifespan; + + @ApiModelProperty(value = "定检(危险化学品场所)") + @TableField("regular_inspection") + private String regularInspection; + + @ApiModelProperty(value = "危险作业(危险作业)") + @TableField("hazardous_work") + private String hazardousWork; + + @ApiModelProperty(value = "作业等级(危险作业)") + @TableField("work_level") + private String workLevel; + + @ApiModelProperty(value = "危险描述(危险作业)") + @TableField("hazardous_remark") + private String hazardousRemark; + + @ApiModelProperty(value = "相关部门(危险作业)") + @TableField("relevant_departments") + private String relevantDepartments; + + @ApiModelProperty(value = "作业频次(危险作业)") + @TableField("operation_frequency") + private String operationFrequency; + + @ApiModelProperty(value = "作业工序(危险作业工序)") + @TableField("work_procedure") + private String workProcedure; + + // 作业人员数量(危险作业工序) + @ApiModelProperty(value = "作业人员数量(危险作业工序)") + @TableField("worker_num") + private String workerNum; + + // 事故类型 + @ApiModelProperty(value = "事故类型(危险作业工序)") + @TableField("accident_type") + private String accidentType; + @Override public String toString() { return "RiskPointInfo{" diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java index 7e79360..e80eb98 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IAlarmRecordService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.model.response.dto.ResponseDataDTO; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; import com.casic.missiles.modular.device.model.AlarmRecord; import java.util.List; @@ -21,4 +24,12 @@ * 设备告警记录 分页检索 */ List selectAlarmRecordPage(Page page, QueryWrapper query); + + /** + * 告警上报接口 + * @param alarmRecord 告警实体信息 + */ + void upload(AlarmRecordDTO alarmRecord); + + List tree(); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java index 4526677..f74f984 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceModelRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceModelRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceModelRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceModelRelationService extends IService { -/** -* 设备模型关联 分页检索 -*/ -List selectDeviceModelRelationPage(Page page,QueryWrapper query);} + /** + * 设备模型关联 分页检索 + */ + List selectDeviceModelRelationPage(Page page, QueryWrapper query); + List selectDeviceModelRelationList(QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java index 58476e3..f38d839 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IDeviceSceneRelationService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.DeviceSceneRelation; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.DeviceSceneRelation; + import java.util.List; @@ -16,7 +17,9 @@ * @date 2024-11-20 */ public interface IDeviceSceneRelationService extends IService { -/** -* 设备场景关联 分页检索 -*/ -List selectDeviceSceneRelationPage(Page page,QueryWrapper query);} + /** + * 设备场景关联 分页检索 + */ + List selectDeviceSceneRelationPage(Page page, QueryWrapper query); + List selectDeviceSceneRelationList( QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java index 6482fe3..11f3b15 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IHazardClassificationInfoService.java @@ -1,9 +1,10 @@ package com.casic.missiles.modular.device.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; + import java.util.List; @@ -16,7 +17,8 @@ * @date 2024-11-20 */ public interface IHazardClassificationInfoService extends IService { -/** -* 隐患分类管理 分页检索 -*/ -List selectHazardClassificationInfoPage(Page page,QueryWrapper query);} + /** + * 隐患分类管理 分页检索 + */ + List selectHazardClassificationInfoPage(Page page, QueryWrapper query); +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java index 344285b..1cbf648 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/IRiskPointInfoService.java @@ -22,4 +22,11 @@ * 风险点管理信息 分页检索 */ List selectRiskPointInfoPage(Page page, QueryWrapper query); + + /** + * 隐患点导入 + * @param results + * @return + */ + List addDeviceBatch(List results,Integer riskType); } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java index 4c81a9a..107149f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlarmRecordServiceImpl.java @@ -1,13 +1,25 @@ package com.casic.missiles.modular.device.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.model.exception.ServiceException; +import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.device.dao.AlarmRecordMapper; -import com.casic.missiles.modular.device.model.AlarmRecord; -import com.casic.missiles.modular.device.service.IAlarmRecordService; +import com.casic.missiles.modular.device.dto.AlarmRecordDTO; +import com.casic.missiles.modular.device.dto.DeptDTO; +import com.casic.missiles.modular.device.model.*; +import com.casic.missiles.modular.device.service.*; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @@ -19,10 +31,102 @@ * @author lwh * @date 2024-11-20 */ +@Slf4j @Service public class AlarmRecordServiceImpl extends ServiceImpl implements IAlarmRecordService { + @Resource + private IUploadLogService uploadLogService; + @Resource + private IBusDeviceInfoService busDeviceInfoService; + + @Resource + private IAlgoModelService modelService; + + @Resource + private ISceneService sceneService; + + @Resource + private IModelRecognitionTypeService modelRecognitionTypeService; + @Override public List selectAlarmRecordPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlarmRecordPage(page, query); } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upload(AlarmRecordDTO alarmRecord) { + AlarmRecord entity = new AlarmRecord(); + //获取设备信息 + QueryWrapper query = new QueryWrapper<>(); + query.eq("camera_index_code", alarmRecord.getDeviceNo()); + List busDeviceInfos = busDeviceInfoService.list(query); + if (busDeviceInfos.size() > 0) { + BusDeviceInfo busDeviceInfo = busDeviceInfos.get(0); + entity.setDeviceId(busDeviceInfo.getId()); + } else { + throw new ServiceException(500, "设备信息不存在"); + } + + List algoModels = new ArrayList<>(); + List modelRecognitionTypes = new ArrayList<>(); + + if (StrUtil.isNotEmpty(alarmRecord.getAlgoModelCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getAlgoModelCode()); + algoModels = modelService.list(modelQuery); + + LambdaQueryWrapper modelRecognitionQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(AlgoModel::getCode, alarmRecord.getRecognitionTypeCode()); + modelRecognitionTypes = modelRecognitionTypeService.list(modelRecognitionQuery); + } + + List scenes = new ArrayList<>(); + if (StrUtil.isNotEmpty(alarmRecord.getSceneCode())) { + LambdaQueryWrapper modelQuery = new LambdaQueryWrapper<>(); + modelQuery.eq(Scene::getSceneCode, alarmRecord.getSceneCode()); + scenes = sceneService.list(modelQuery); + } + + if (CollectionUtil.isEmpty(algoModels) && CollectionUtil.isEmpty(scenes)) { + throw new ServiceException(500, "模型或场景必选一"); + } + + if (CollectionUtil.isNotEmpty(algoModels)) { + if (CollectionUtil.isEmpty(modelRecognitionTypes)) { + throw new ServiceException(500, "识别类型编码不能为空"); + } + entity.setAlgoModelId(algoModels.get(0).getId()); + entity.setRecognitionTypeId(modelRecognitionTypes.get(0).getId()); + } + if (CollectionUtil.isNotEmpty(scenes)) { + entity.setSceneId(scenes.get(0).getId()); + } + entity.setAlarmTime(alarmRecord.getAlarmTime()); + entity.setPicBase64(alarmRecord.getPicBase64()); + entity.setAlarmContext(alarmRecord.getAlarmContext()); + this.save(entity); + + } + + @Override + public List tree() { + + return busDeviceInfoService.tree(); + } + + @Override + public boolean save(AlarmRecord entity) { + entity.setCreateTime(new Date()); + entity.setUpdateTime(new Date()); + if (StrUtil.isNotEmpty(entity.getPicBase64())) { + String path = uploadLogService.saveFile(entity.getPicBase64()); + if (path.startsWith("data")) { + log.error("alarm img error:{}", entity.getDeviceId()); + } else { + entity.setFilePath(path); + } + } + return super.save(entity); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java index 7294c07..40742bb 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/AlgoModelServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.modular.device.dao.AlgoModelMapper; import com.casic.missiles.modular.device.model.AlgoModel; import com.casic.missiles.modular.device.service.IAlgoModelService; +import com.casic.missiles.modular.device.service.IModelRecognitionTypeService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @@ -21,8 +23,15 @@ */ @Service public class AlgoModelServiceImpl extends ServiceImpl implements IAlgoModelService { + + @Override public List selectAlgoModelPage(Page page, QueryWrapper query) { return this.baseMapper.selectAlgoModelPage(page, query); } + + @Override + public List list() { + return super.list(); + } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java index db0fe42..dc1895c 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceModelRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceModelRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceModelRelationMapper; import com.casic.missiles.modular.device.model.DeviceModelRelation; +import com.casic.missiles.modular.device.service.IDeviceModelRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceModelRelationServiceImpl extends ServiceImpl implements IDeviceModelRelationService { -@Override -public List selectDeviceModelRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceModelRelationPage(page,query); -}} + @Override + public List selectDeviceModelRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceModelRelationPage(page, query); + } + @Override + public List selectDeviceModelRelationList(QueryWrapper query){ + return this.baseMapper.selectDeviceModelRelationList(query); + }; +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java index 29d2155..087227a 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceSceneRelationServiceImpl.java @@ -1,15 +1,14 @@ package com.casic.missiles.modular.device.service.impl; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; -import java.util.List; - import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.modular.device.dao.DeviceSceneRelationMapper; import com.casic.missiles.modular.device.model.DeviceSceneRelation; +import com.casic.missiles.modular.device.service.IDeviceSceneRelationService; +import org.springframework.stereotype.Service; + +import java.util.List; /** @@ -22,7 +21,12 @@ */ @Service public class DeviceSceneRelationServiceImpl extends ServiceImpl implements IDeviceSceneRelationService { -@Override -public List selectDeviceSceneRelationPage(Page page,QueryWrapper query) { -return this.baseMapper.selectDeviceSceneRelationPage(page,query); -}} + @Override + public List selectDeviceSceneRelationPage(Page page, QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationPage(page, query); + } + @Override + public List selectDeviceSceneRelationList(QueryWrapper query) { + return this.baseMapper.selectDeviceSceneRelationList(query); + } +} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java index 1cd2973..c6e0d7f 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/service/impl/RiskPointInfoServiceImpl.java @@ -1,21 +1,34 @@ package com.casic.missiles.modular.device.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.modular.device.dao.RiskPointInfoMapper; +import com.casic.missiles.modular.device.model.BusDeviceInfo; +import com.casic.missiles.modular.device.model.HazardClassificationInfo; import com.casic.missiles.modular.device.model.RiskPointInfo; import com.casic.missiles.modular.device.model.RiskRelDevice; +import com.casic.missiles.modular.device.service.IBusDeviceInfoService; +import com.casic.missiles.modular.device.service.IHazardClassificationInfoService; import com.casic.missiles.modular.device.service.IRiskPointInfoService; import com.casic.missiles.modular.device.service.IRiskRelDeviceService; +import com.casic.missiles.modular.system.model.Area; +import com.casic.missiles.modular.system.model.Dept; +import com.casic.missiles.modular.system.service.IAreaService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** @@ -30,10 +43,18 @@ public class RiskPointInfoServiceImpl extends ServiceImpl implements IRiskPointInfoService { private final AbstractPermissionContext abstractPermissionContext; private final IRiskRelDeviceService riskRelDeviceService; + private final AbstractDictService dictService; + private final IAreaService areaService; + private final IBusDeviceInfoService deviceInfoService; + private final IHazardClassificationInfoService classificationInfoService; - public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService) { + public RiskPointInfoServiceImpl(AbstractPermissionContext abstractPermissionContext, IRiskRelDeviceService riskRelDeviceService, AbstractDictService dictService, IAreaService areaService, IBusDeviceInfoService deviceInfoService, IHazardClassificationInfoService classificationInfoService) { this.abstractPermissionContext = abstractPermissionContext; this.riskRelDeviceService = riskRelDeviceService; + this.dictService = dictService; + this.areaService = areaService; + this.deviceInfoService = deviceInfoService; + this.classificationInfoService = classificationInfoService; } @Transactional(rollbackFor = Exception.class) @@ -44,6 +65,66 @@ return riskPointInfos; } + @Override + public List addDeviceBatch(List results, Integer riskType) { + List deptList = abstractPermissionContext.getDeptService().list(new QueryWrapper<>()); + Map deptMap = deptList.stream().collect(Collectors.toMap(Dept::getSimpleName, (dept -> dept))); + List areaList = areaService.list(); + Map areaMap = areaList.stream().collect(Collectors.toMap(Area::getId, area -> area)); + + List hazardClassificationInfos = classificationInfoService.list(); + // Map classificationMap = hazardClassificationInfos.stream().collect(Collectors.toMap(HazardClassificationInfo::getHazardName, classification -> classification)); + + List deviceInfos = deviceInfoService.list(); + Map deviceMap = deviceInfos.stream().filter(device -> StrUtil.isNotEmpty(device.getCameraIndexCode())).collect(Collectors.toMap(BusDeviceInfo::getCameraIndexCode, classification -> classification)); + Integer index = 1; + List importDTOS = new ArrayList<>(); + List errors = new ArrayList<>(); + for (RiskPointInfo result : results) { + result.setRiskType(riskType); + if (StrUtil.isNotEmpty(result.getArea()) && !areaMap.containsKey(Convert.toLong(result.getArea()))) { + errors.add("第" + index + "行所属区域编码不存在!"); + } + + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { + errors.add("第" + index + "行所属组织不存在!"); + } else { + result.setDeptId(deptMap.get(result.getDeptName()).getId()); + } + + if (StrUtil.isNotEmpty(result.getDeviceCodes())) { + List codes = StrUtil.split(result.getDeviceCodes(), ","); + List deviceList = new ArrayList<>(); + for (String code : codes) { + if (deviceMap.containsKey(code)) { + BusDeviceInfo busDeviceInfo = deviceMap.get(code); + RiskRelDevice riskRelDevice = new RiskRelDevice(); + riskRelDevice.setDeviceId(busDeviceInfo.getId()); + deviceList.add(riskRelDevice); + } else { + errors.add("第" + index + "行关联设备国标号不存在!" + code); + } + } + result.setDeviceList(deviceList); + } + importDTOS.add(result); + index++; + + } + if (index == 1) { + errors.add("导入数据不能为空!"); + } + if (errors.isEmpty()) { + //转换保存 + for (RiskPointInfo deviceInfo : importDTOS) { + deviceInfo.setCreateTime(new Date()); + deviceInfo.setUpdateTime(new Date()); + this.save(deviceInfo); + } + } + return errors; + } + @Transactional(rollbackFor = Exception.class) @Override public boolean save(RiskPointInfo entity) { diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java index 5f835b8..077d8a4 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/AlarmRecordVO.java @@ -17,15 +17,12 @@ public class AlarmRecordVO { private static final long serialVersionUID = 1L; - - @ApiModelProperty(value = "设备ID", dataType = "Long") - private Long deviceId; - - @ApiModelProperty(value = "模型ID", dataType = "Long") - private Long algoModelId; - - @ApiModelProperty(value = "识别类型ID", dataType = "Long") - private Long recognitionTypeId; + @ApiModelProperty(value = "设备名称", dataType = "String") + private String deviceName; + @ApiModelProperty(value = "区域名称", dataType = "String") + private String areaName; + @ApiModelProperty(value = "组织名称", dataType = "String") + private String deptName; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "告警时间起始", dataType = "Date") @@ -35,21 +32,25 @@ public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); - if (deviceId != null) { - query.eq("device_id", deviceId); + if (StrUtil.isNotEmpty(deviceName)) { + query.like("e.monitor_name", deviceName); } - if (algoModelId != null) { - query.eq("algo_model_id", algoModelId); + if (StrUtil.isNotEmpty(areaName)) { + query.like("f.area_name", areaName); } - if (recognitionTypeId != null) { - query.eq("recognition_type_id", recognitionTypeId); + + if (StrUtil.isNotEmpty(deptName)) { + query.like("g.SIMPLE_NAME", deptName); } + if (StrUtil.isNotEmpty(alarmTimeStart)) { - query.ge("alarm_time", alarmTimeStart); + query.ge("a.alarm_time", alarmTimeStart); } + if (StrUtil.isNotEmpty(alarmTimeEnd)) { - query.le("alarm_time", alarmTimeEnd); + query.le("a.alarm_time", alarmTimeEnd); } + return query; } } diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java index ac69f27..babda58 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/HazardClassificationInfoVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.HazardClassificationInfo; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -17,20 +17,26 @@ public class HazardClassificationInfoVO { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "分类名称", dataType = "String") + private String hazardName; - @ApiModelProperty(value = "分类名称" , dataType = "String") - private String hazardName; + @ApiModelProperty(value = "编码", dataType = "String") + private String hazardCode; - @ApiModelProperty(value = "编码" , dataType = "String") - private String hazardCode; + @ApiModelProperty(value = "父级编码(根传0),", dataType = "String") + private String pid; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(hazardName)) { - query.like("hazard_name",hazardName); + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(hazardName)) { + query.like("hazard_name", hazardName); + } + if (StrUtil.isNotEmpty(hazardCode)) { + query.eq("hazard_code", hazardCode); + } + if (StrUtil.isNotEmpty(pid)) { + query.eq("pid", pid); + } + return query; + } } -if (StrUtil.isNotEmpty(hazardCode)) { - query.eq("hazard_code",hazardCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java index 4ba906a..0e20020 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/ModelRecognitionTypeVO.java @@ -1,10 +1,10 @@ package com.casic.missiles.modular.device.vo; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.modular.device.model.ModelRecognitionType; -import cn.hutool.core.util.StrUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; /** @@ -18,19 +18,26 @@ private static final long serialVersionUID = 1L; - @ApiModelProperty(value = "类型名称" , dataType = "String") - private String typeName; + @ApiModelProperty(value = "类型名称", dataType = "String") + private String typeName; - @ApiModelProperty(value = "类型编码" , dataType = "String") - private String typeCode; + @ApiModelProperty(value = "类型编码", dataType = "String") + private String typeCode; -public QueryWrapper genQuery() { -QueryWrapper query = new QueryWrapper<>(); -if (StrUtil.isNotEmpty(typeName)) { - query.like("type_name",typeName); + @ApiModelProperty(value = "模型ID", dataType = "String") + private String modelId; + + public QueryWrapper genQuery() { + QueryWrapper query = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(typeName)) { + query.like("type_name", typeName); + } + if (StrUtil.isNotEmpty(typeCode)) { + query.eq("type_code", typeCode); + } + if (StrUtil.isNotEmpty(modelId)) { + query.eq("model_id", modelId); + } + return query; + } } -if (StrUtil.isNotEmpty(typeCode)) { - query.eq("type_code",typeCode); -} -return query; -}} diff --git a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java index a9a5baa..8d6fa75 100644 --- a/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java +++ b/casic-warning-analysis/src/main/java/com/casic/missiles/modular/device/vo/RiskPointInfoVO.java @@ -26,6 +26,9 @@ @ApiModelProperty(value = "所属区域(区域编码)", dataType = "String") private String area; + @ApiModelProperty(value = "类型", dataType = "String") + private String riskType; + public QueryWrapper genQuery() { QueryWrapper query = new QueryWrapper<>(); if (StrUtil.isNotEmpty(riskName)) { @@ -37,6 +40,10 @@ if (StrUtil.isNotEmpty(area)) { query.eq("area", area); } + if (StrUtil.isNotEmpty(riskType)) { + query.eq("risk_Type", riskType); + } + return query; } } diff --git a/casic-web/pom.xml b/casic-web/pom.xml index a70e931..204e65a 100644 --- a/casic-web/pom.xml +++ b/casic-web/pom.xml @@ -44,11 +44,20 @@ ${pro.version} + + + com.casic + casic-sm-auth + ${pro.version} + + + com.casic casic-warning-analysis ${pro.version} + com.hikvision.ga artemis-http-client @@ -147,7 +156,7 @@ com.casic casic-export-support - ${extension.version} + ${export.version} com.casic diff --git a/casic-web/src/main/resources/config/application-centos.yml b/casic-web/src/main/resources/config/application-centos.yml index 0eab6e3..f2e308f 100644 --- a/casic-web/src/main/resources/config/application-centos.yml +++ b/casic-web/src/main/resources/config/application-centos.yml @@ -1,11 +1,10 @@ server: port: 6909 -################### spring配置 ################### +################### spring閰嶇疆 ################### spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://192.168.83.42:3306/casic-production-safety?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=UTC&&allowMultiQueries=true -# url: mysql username: root password: casic203 druid: @@ -25,8 +24,8 @@ # serializer: org.springframework.data.redis.serializer.StringRedisSerializer # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: - #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/gate/login + #kaptcha-open: false #鏄惁寮€鍚櫥褰曟椂楠岃瘉鐮?(true/false) + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/record/upload db: init: enable: false @@ -36,7 +35,7 @@ uploadPath: /opt/stay/data/tmp/ stay: picPath: /opt/stay/data/stay/ - log: #百万日志存储量 + log: #鐧句竾鏃ュ織瀛樺偍閲? total: 1000000 logging: level.root: info diff --git a/casic-web/src/main/resources/config/application-shentong.yml b/casic-web/src/main/resources/config/application-shentong.yml index 5742b09..86d8412 100644 --- a/casic-web/src/main/resources/config/application-shentong.yml +++ b/casic-web/src/main/resources/config/application-shentong.yml @@ -1,5 +1,5 @@ server: - port: 5909 + port: 6909 ################### spring配置 ################### spring: datasource: @@ -43,5 +43,6 @@ level.com.casic.missiles.netty: error level.com.casic.missiles.modular.neutron: error level.org.springframework.web: info + level.org.apache.http: debug file: path: /casic/hiklib/logs \ No newline at end of file diff --git a/casic-web/src/main/resources/config/application-shentong200.yml b/casic-web/src/main/resources/config/application-shentong200.yml index b7f7f61..bca45e3 100644 --- a/casic-web/src/main/resources/config/application-shentong200.yml +++ b/casic-web/src/main/resources/config/application-shentong200.yml @@ -40,6 +40,12 @@ video: admin: role: administrator + av: + open: true + url: http://localhost:6909 + token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 + deviceCorn: 0 */1 * * * * + deviceStatusCorn: 0 */5 * * * * dc: corn: refreshToken: 0 */5 * * * * diff --git a/casic-web/src/main/resources/config/application-test.yml b/casic-web/src/main/resources/config/application-test.yml index b8280ce..31022c0 100644 --- a/casic-web/src/main/resources/config/application-test.yml +++ b/casic-web/src/main/resources/config/application-test.yml @@ -25,7 +25,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/jitGWAuthP7,/jitGWRandom,/login,/record/upload db: init: enable: false @@ -37,6 +37,10 @@ picPath: D:\casic\stay\ log: #百万日志存储量 total: 1000000 + sm: + open: true + path: D:\workspace\server\keti\casic-production-safety\casic-web\src\main\resources\ + clientIp: 10.10.5.80 logging: level.root: info level.com.casic: debug diff --git a/casic-web/src/main/resources/config/application-test42.yml b/casic-web/src/main/resources/config/application-test42.yml index e688bdf..9c3c9a3 100644 --- a/casic-web/src/main/resources/config/application-test42.yml +++ b/casic-web/src/main/resources/config/application-test42.yml @@ -26,7 +26,7 @@ # redisValueSerializer: org.springframework.data.redis.serializer.JdkSerializationRedisSerializer casic: #kaptcha-open: false #是否开启登录时验证码 (true/false) - no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login + no-login-urls: ${casic.sysUrl}/user/login,${casic.sysUrl}/user/appLogin,${casic.sysUrl}/kaptcha/base64,${casic.sysUrl}/config/baseConfig,/route/mockToken,/websocket/*,/webjars/**,/v2/api-docs,/v2/api-docs-ext,/doc.html,/v2/api-docs/swagger-ui.html,/swagger-resources,/ws/*,/gate/login,/sync/org,/sync/user db: init: enable: false diff --git a/casic-web/src/main/resources/config/application.yml b/casic-web/src/main/resources/config/application.yml index 75ea0fd..04629c5 100644 --- a/casic-web/src/main/resources/config/application.yml +++ b/casic-web/src/main/resources/config/application.yml @@ -42,9 +42,20 @@ day: 180 #超期日志删除,日志保留天数 file: uploadPath: C:\casic\tmp\ + sm: + user: + open: true + cron: 0 */2 * * * * + url: http://10.11.13.5:8088 + clientId: client_id + clientSecret: client_secret + grantType: grant_type + scope: read + defaultId: + createStateDate: 1900-01-01 mdm: - wsdl: http://localhost:6909/safe-server/ws/mdmService?wsdl - mqId: 123456 #h后缀需添加 -UUM + wsdl: http://10.11.13.5:8088/hussarApi/services/MdmService?wsdl + mqId: 123456-UUM #h后缀需添加 -UUM open: false corn: 0 */60 * * * * video: @@ -54,26 +65,26 @@ corn: refreshToken: 0 */5 * * * * device: 0 */20 * * * * - open: true + open: false url: https://192.168.83.42:18080 user: jtcsyh pwd: dh: - open: true + open: false type: Dahua hik: - open: true + open: false areaCorn: 0 */60 * * * * deviceCorn: 0 */10 * * * * av: open: true - url: http://10.20.90.196:10025 + url: http://localhost:6909 token: 6bcffcdb-42fe-df6c-e704-e6034dd8a5a0 deviceCorn: 0 */1 * * * * deviceStatusCorn: 0 */5 * * * * wvp: #wvp视频平台配置信息 open: true - url: http://192.168.83.42:18080 + url: http://192.168.83.42:80 userName: admin pwd: 21232f297a57a5a743894a0e4a801fc3 server: diff --git a/pom.xml b/pom.xml index da71148..7d40703 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,7 @@ casic-server-sync casic-device-sync casic-video-sdk + casic-sm-auth com.casic @@ -35,6 +36,7 @@ 2.6.11 1.0.3 2.0.0.alpha + 2.0.0.alpha 3.4.5 5.4.0 1.0