diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } 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 746e8cd..2a4a9fc 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 @@ -13,6 +13,7 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.data.constants.DataConstants; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.TotalDataDTO; @@ -68,6 +69,8 @@ this.hikService = hikService; } + + @Override public List selectBusDeviceInfoPage(Page page, QueryWrapper query) { return this.baseMapper.selectBusDeviceInfoPage(page, query); @@ -104,11 +107,14 @@ busDeviceInfo.setDeviceStatusName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_STATUS, busDeviceInfo.getDeviceStatus() + "")); busDeviceInfo.setDeviceTypeName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_TYPE, busDeviceInfo.getDeviceType() + "")); busDeviceInfo.setDeptName(abstractPermissionContext.getDeptService().getDeptName(busDeviceInfo.getDeptId())); + + busDeviceInfo.setSecretLevelName(dictService.getDictNameByCode(DataConstants.DICT_SECRET_LEVEL_TYPE, busDeviceInfo.getSecretLevel() + "")); } @Override public TotalDataDTO total(QueryWrapper query) { - + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { @@ -162,6 +168,7 @@ public List tree() { //查询可见组织 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()); @@ -184,9 +191,10 @@ //挂载设备信息 LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); deviceQuery.eq(BusDeviceInfo::getDeptId, deptDTO.getId()); + //判定只可查看以下密级 + deviceQuery.le(BusDeviceInfo::getSecretLevel,user.getSecretLevel()); List deviceInfos = this.list(deviceQuery); deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); - } for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { @@ -207,6 +215,8 @@ @Override public List addDeviceBatch(List results) { List dictList = dictService.findInDictByCode(DataConstants.DICT_DEVICE_TYPE); + 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))); @@ -224,6 +234,12 @@ result.setDeviceType(dictTypes.get(result.getDeviceType()).getCode()); } + if (!secretTypes.containsKey(result.getSecretLevelName())) { + errors.add("第" + index + "行密级类型不存在!"); + } else { + result.setSecretLevel(Convert.toInt(secretTypes.get(result.getSecretLevelName()).getCode())); + } + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { errors.add("第" + index + "行所属组织不存在!"); } else { @@ -333,6 +349,8 @@ if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { query.in("dept_id", dataScope.getDeptIds()); } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); query.select("area", "count(1) as totalNum", "sum(case device_status when 1 then 1 else 0 end) as onLineNum"); query.groupBy("area"); List> maps = this.baseMapper.selectMaps(query); @@ -364,7 +382,6 @@ @Override public DeviceDTO getByDeviceId(Long id) { BusDeviceInfo deviceInfo = super.getById(id); - return BusDeviceInfo.convertDTO(deviceInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } 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 746e8cd..2a4a9fc 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 @@ -13,6 +13,7 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.data.constants.DataConstants; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.TotalDataDTO; @@ -68,6 +69,8 @@ this.hikService = hikService; } + + @Override public List selectBusDeviceInfoPage(Page page, QueryWrapper query) { return this.baseMapper.selectBusDeviceInfoPage(page, query); @@ -104,11 +107,14 @@ busDeviceInfo.setDeviceStatusName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_STATUS, busDeviceInfo.getDeviceStatus() + "")); busDeviceInfo.setDeviceTypeName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_TYPE, busDeviceInfo.getDeviceType() + "")); busDeviceInfo.setDeptName(abstractPermissionContext.getDeptService().getDeptName(busDeviceInfo.getDeptId())); + + busDeviceInfo.setSecretLevelName(dictService.getDictNameByCode(DataConstants.DICT_SECRET_LEVEL_TYPE, busDeviceInfo.getSecretLevel() + "")); } @Override public TotalDataDTO total(QueryWrapper query) { - + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { @@ -162,6 +168,7 @@ public List tree() { //查询可见组织 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()); @@ -184,9 +191,10 @@ //挂载设备信息 LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); deviceQuery.eq(BusDeviceInfo::getDeptId, deptDTO.getId()); + //判定只可查看以下密级 + deviceQuery.le(BusDeviceInfo::getSecretLevel,user.getSecretLevel()); List deviceInfos = this.list(deviceQuery); deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); - } for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { @@ -207,6 +215,8 @@ @Override public List addDeviceBatch(List results) { List dictList = dictService.findInDictByCode(DataConstants.DICT_DEVICE_TYPE); + 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))); @@ -224,6 +234,12 @@ result.setDeviceType(dictTypes.get(result.getDeviceType()).getCode()); } + if (!secretTypes.containsKey(result.getSecretLevelName())) { + errors.add("第" + index + "行密级类型不存在!"); + } else { + result.setSecretLevel(Convert.toInt(secretTypes.get(result.getSecretLevelName()).getCode())); + } + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { errors.add("第" + index + "行所属组织不存在!"); } else { @@ -333,6 +349,8 @@ if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { query.in("dept_id", dataScope.getDeptIds()); } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); query.select("area", "count(1) as totalNum", "sum(case device_status when 1 then 1 else 0 end) as onLineNum"); query.groupBy("area"); List> maps = this.baseMapper.selectMaps(query); @@ -364,7 +382,6 @@ @Override public DeviceDTO getByDeviceId(Long id) { BusDeviceInfo deviceInfo = super.getById(id); - return BusDeviceInfo.convertDTO(deviceInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java index 5dc02b7..e12c638 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java @@ -25,4 +25,9 @@ public List selectDeviceOnlineLogPage(Page page, QueryWrapper query) { return this.baseMapper.selectDeviceOnlineLogPage(page, query); } -} + + @Override + public List selectDeviceLog(QueryWrapper query) { + return this.baseMapper.selectDeviceLog(query); + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } 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 746e8cd..2a4a9fc 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 @@ -13,6 +13,7 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.data.constants.DataConstants; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.TotalDataDTO; @@ -68,6 +69,8 @@ this.hikService = hikService; } + + @Override public List selectBusDeviceInfoPage(Page page, QueryWrapper query) { return this.baseMapper.selectBusDeviceInfoPage(page, query); @@ -104,11 +107,14 @@ busDeviceInfo.setDeviceStatusName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_STATUS, busDeviceInfo.getDeviceStatus() + "")); busDeviceInfo.setDeviceTypeName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_TYPE, busDeviceInfo.getDeviceType() + "")); busDeviceInfo.setDeptName(abstractPermissionContext.getDeptService().getDeptName(busDeviceInfo.getDeptId())); + + busDeviceInfo.setSecretLevelName(dictService.getDictNameByCode(DataConstants.DICT_SECRET_LEVEL_TYPE, busDeviceInfo.getSecretLevel() + "")); } @Override public TotalDataDTO total(QueryWrapper query) { - + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { @@ -162,6 +168,7 @@ public List tree() { //查询可见组织 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()); @@ -184,9 +191,10 @@ //挂载设备信息 LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); deviceQuery.eq(BusDeviceInfo::getDeptId, deptDTO.getId()); + //判定只可查看以下密级 + deviceQuery.le(BusDeviceInfo::getSecretLevel,user.getSecretLevel()); List deviceInfos = this.list(deviceQuery); deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); - } for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { @@ -207,6 +215,8 @@ @Override public List addDeviceBatch(List results) { List dictList = dictService.findInDictByCode(DataConstants.DICT_DEVICE_TYPE); + 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))); @@ -224,6 +234,12 @@ result.setDeviceType(dictTypes.get(result.getDeviceType()).getCode()); } + if (!secretTypes.containsKey(result.getSecretLevelName())) { + errors.add("第" + index + "行密级类型不存在!"); + } else { + result.setSecretLevel(Convert.toInt(secretTypes.get(result.getSecretLevelName()).getCode())); + } + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { errors.add("第" + index + "行所属组织不存在!"); } else { @@ -333,6 +349,8 @@ if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { query.in("dept_id", dataScope.getDeptIds()); } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); query.select("area", "count(1) as totalNum", "sum(case device_status when 1 then 1 else 0 end) as onLineNum"); query.groupBy("area"); List> maps = this.baseMapper.selectMaps(query); @@ -364,7 +382,6 @@ @Override public DeviceDTO getByDeviceId(Long id) { BusDeviceInfo deviceInfo = super.getById(id); - return BusDeviceInfo.convertDTO(deviceInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java index 5dc02b7..e12c638 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java @@ -25,4 +25,9 @@ public List selectDeviceOnlineLogPage(Page page, QueryWrapper query) { return this.baseMapper.selectDeviceOnlineLogPage(page, query); } -} + + @Override + public List selectDeviceLog(QueryWrapper query) { + return this.baseMapper.selectDeviceLog(query); + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java index ffb32c1..8333f16 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java @@ -132,13 +132,18 @@ @Override public void updateDeviceStatusLog() { - List deviceOnlineLogs = deviceInfoService.searchStatusByArea(); - for (DeviceOnlineLog deviceOnlineLog : deviceOnlineLogs) { + List deviceOnlineLogs = deviceInfoService.list(); + for (BusDeviceInfo device : deviceOnlineLogs) { + + DeviceOnlineLog deviceOnlineLog = new DeviceOnlineLog(); deviceOnlineLog.setUpdateTime(new Date()); deviceOnlineLog.setLogTime(DateUtil.formatDate(new Date())); + deviceOnlineLog.setDeviceId(device.getId()); + deviceOnlineLog.setDeviceStatus(device.getDeviceStatus()); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(DeviceOnlineLog::getLogTime, deviceOnlineLog.getLogTime()); - query.eq(DeviceOnlineLog::getArea, deviceOnlineLog.getArea()); + query.eq(DeviceOnlineLog::getDeviceId, device.getId()); onlineLogService.saveOrUpdate(deviceOnlineLog, query); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } 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 746e8cd..2a4a9fc 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 @@ -13,6 +13,7 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.data.constants.DataConstants; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.TotalDataDTO; @@ -68,6 +69,8 @@ this.hikService = hikService; } + + @Override public List selectBusDeviceInfoPage(Page page, QueryWrapper query) { return this.baseMapper.selectBusDeviceInfoPage(page, query); @@ -104,11 +107,14 @@ busDeviceInfo.setDeviceStatusName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_STATUS, busDeviceInfo.getDeviceStatus() + "")); busDeviceInfo.setDeviceTypeName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_TYPE, busDeviceInfo.getDeviceType() + "")); busDeviceInfo.setDeptName(abstractPermissionContext.getDeptService().getDeptName(busDeviceInfo.getDeptId())); + + busDeviceInfo.setSecretLevelName(dictService.getDictNameByCode(DataConstants.DICT_SECRET_LEVEL_TYPE, busDeviceInfo.getSecretLevel() + "")); } @Override public TotalDataDTO total(QueryWrapper query) { - + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { @@ -162,6 +168,7 @@ public List tree() { //查询可见组织 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()); @@ -184,9 +191,10 @@ //挂载设备信息 LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); deviceQuery.eq(BusDeviceInfo::getDeptId, deptDTO.getId()); + //判定只可查看以下密级 + deviceQuery.le(BusDeviceInfo::getSecretLevel,user.getSecretLevel()); List deviceInfos = this.list(deviceQuery); deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); - } for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { @@ -207,6 +215,8 @@ @Override public List addDeviceBatch(List results) { List dictList = dictService.findInDictByCode(DataConstants.DICT_DEVICE_TYPE); + 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))); @@ -224,6 +234,12 @@ result.setDeviceType(dictTypes.get(result.getDeviceType()).getCode()); } + if (!secretTypes.containsKey(result.getSecretLevelName())) { + errors.add("第" + index + "行密级类型不存在!"); + } else { + result.setSecretLevel(Convert.toInt(secretTypes.get(result.getSecretLevelName()).getCode())); + } + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { errors.add("第" + index + "行所属组织不存在!"); } else { @@ -333,6 +349,8 @@ if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { query.in("dept_id", dataScope.getDeptIds()); } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); query.select("area", "count(1) as totalNum", "sum(case device_status when 1 then 1 else 0 end) as onLineNum"); query.groupBy("area"); List> maps = this.baseMapper.selectMaps(query); @@ -364,7 +382,6 @@ @Override public DeviceDTO getByDeviceId(Long id) { BusDeviceInfo deviceInfo = super.getById(id); - return BusDeviceInfo.convertDTO(deviceInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java index 5dc02b7..e12c638 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java @@ -25,4 +25,9 @@ public List selectDeviceOnlineLogPage(Page page, QueryWrapper query) { return this.baseMapper.selectDeviceOnlineLogPage(page, query); } -} + + @Override + public List selectDeviceLog(QueryWrapper query) { + return this.baseMapper.selectDeviceLog(query); + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java index ffb32c1..8333f16 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java @@ -132,13 +132,18 @@ @Override public void updateDeviceStatusLog() { - List deviceOnlineLogs = deviceInfoService.searchStatusByArea(); - for (DeviceOnlineLog deviceOnlineLog : deviceOnlineLogs) { + List deviceOnlineLogs = deviceInfoService.list(); + for (BusDeviceInfo device : deviceOnlineLogs) { + + DeviceOnlineLog deviceOnlineLog = new DeviceOnlineLog(); deviceOnlineLog.setUpdateTime(new Date()); deviceOnlineLog.setLogTime(DateUtil.formatDate(new Date())); + deviceOnlineLog.setDeviceId(device.getId()); + deviceOnlineLog.setDeviceStatus(device.getDeviceStatus()); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(DeviceOnlineLog::getLogTime, deviceOnlineLog.getLogTime()); - query.eq(DeviceOnlineLog::getArea, deviceOnlineLog.getArea()); + query.eq(DeviceOnlineLog::getDeviceId, device.getId()); onlineLogService.saveOrUpdate(deviceOnlineLog, query); } diff --git a/casic-web/src/main/java/com/casic/missiles/controller/MockController.java b/casic-web/src/main/java/com/casic/missiles/controller/MockController.java index eae6c54..41e5086 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/MockController.java @@ -72,7 +72,7 @@ super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); +// LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); ShiroKit.getSession().setAttribute("sessionFlag", true); resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java index a950c0e..371ec46 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/BusDeviceInfoController.java @@ -4,8 +4,12 @@ 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.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.model.form.IdForms; @@ -49,11 +53,12 @@ private final ISyncAreaService syncAreaService; private final IDeviceStatusService statusService; - public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService) { + public BusDeviceInfoController(IBusDeviceInfoService busDeviceInfoService, IHikService hikService, ISyncAreaService syncAreaService, IDeviceStatusService statusService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.hikService = hikService; this.syncAreaService = syncAreaService; this.statusService = statusService; + this.abstractPermissionContext = abstractPermissionContext; } @BussinessLog(value = "同步区域信息") @@ -111,19 +116,26 @@ results = this.importExcel(BusDeviceImportDTO.class, file, null, null); List list = busDeviceInfoService.addDeviceBatch(results); if (CollectionUtil.isNotEmpty(list)) { + Math.floor(1); + //获取第校验报错信息 ResponseDataDTO responseDataDTO = ResponseDataDTO.error(null); responseDataDTO.setMessage(StrUtil.join("\n,",list)); - //获取第校验报错信息 return responseDataDTO; } return ResponseDataDTO.success(); } - + private final AbstractPermissionContext abstractPermissionContext; @BussinessLog(value = "设备导出") @ApiOperation(value = "列表查询") @GetMapping(value = "/export") public void export(BusDeviceInfoVO busDeviceInfoVO) throws IOException { QueryWrapper query = busDeviceInfoVO.genQuery(); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } super.exportExcel(BusDeviceInfo.class, busDeviceInfoService.list(query), "设备列表导出"); } @@ -133,6 +145,12 @@ public ResponseDataDTO> listPage(BusDeviceInfoVO busDeviceInfoVO) { Page page = PageFactory.defaultPage(); QueryWrapper query = busDeviceInfoVO.genQuery(); + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("dept_id", dataScope.getDeptIds()); + } page = busDeviceInfoService.page(page, query); return ResponseDataDTO.success(super.packForBT(page)); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java index 5450d1d..65edf87 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/StatisticsController.java @@ -1,10 +1,16 @@ package com.casic.missiles.modular.device.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.core.application.context.AbstractPermissionContext; import com.casic.missiles.core.base.controller.BaseController; import com.casic.missiles.core.common.annotion.BussinessLog; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.model.response.dto.ResponseDataDTO; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.DayDevDTO; @@ -19,8 +25,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.stream.Collectors; +import java.time.LocalDate; +import java.util.*; /** * 设备Controller @@ -35,11 +41,14 @@ private final IBusDeviceInfoService busDeviceInfoService; private final IDeviceOnlineLogService onlineLogService; + private final AbstractPermissionContext abstractPermissionContext; - public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService) { + public StatisticsController(IBusDeviceInfoService busDeviceInfoService, IDeviceOnlineLogService onlineLogService, AbstractPermissionContext abstractPermissionContext) { this.busDeviceInfoService = busDeviceInfoService; this.onlineLogService = onlineLogService; + this.abstractPermissionContext = abstractPermissionContext; } + @BussinessLog(value = "数据统计概况统计") @ApiOperation(value = "概况统计") @GetMapping(value = "/total") @@ -48,6 +57,7 @@ TotalDataDTO totalDataDTO = busDeviceInfoService.total(query); return ResponseDataDTO.success(totalDataDTO); } + @BussinessLog(value = "地区设备数量统计") @ApiOperation(value = "地区设备数量") @GetMapping(value = "/areaDev") @@ -56,6 +66,7 @@ List dtos = busDeviceInfoService.areaDev(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "地区设备在线情况") @ApiOperation(value = "地区设备在线情况") @GetMapping(value = "/areaDevOnline") @@ -64,26 +75,70 @@ List dtos = busDeviceInfoService.areaDevOnline(query); return ResponseDataDTO.success(dtos); } + @BussinessLog(value = "设备在线趋势") @ApiOperation(value = "设备在线趋势") @GetMapping(value = "/dayDev") - public ResponseDataDTO> dayDev(String startTime, String endTime) { - LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + public ResponseDataDTO> dayDev(String startTime, String endTime) { + QueryWrapper query = new QueryWrapper<>(); + Date startTimeDate = null; + Date endTimeDate = null; if (StrUtil.isNotEmpty(startTime)) { - query.ge(DeviceOnlineLog::getLogTime, startTime); + query.ge("a.log_time", startTime); + startTimeDate = DateUtil.parseDate(startTime); + }else{ + startTimeDate = DateUtil.offsetDay(new Date(), -7); + query.ge("a.log_time", startTimeDate); } if (StrUtil.isNotEmpty(endTime)) { - query.le(DeviceOnlineLog::getLogTime, endTime); + query.le("a.log_time", endTime); + endTimeDate = DateUtil.parseDate(endTime); + }else{ + endTimeDate = new Date(); } - query.orderByAsc(DeviceOnlineLog::getLogTime); - List dtos = onlineLogService.list(query); - List dayDevDTOList = dtos.stream().map(dto -> { - DayDevDTO dayDevDTO = new DayDevDTO(); - dayDevDTO.setDate(dto.getLogTime()); - dayDevDTO.setOnline(dto.getOnlineNum()); - dayDevDTO.setOffline(dto.getOfflineNum()); - return dayDevDTO; - }).collect(Collectors.toList()); - return ResponseDataDTO.success(dayDevDTOList); + + //按日期求和 + DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); + if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { + query.in("b.dept_id", dataScope.getDeptIds()); + } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("b.secret_level",user.getSecretLevel()); + + List dtos = onlineLogService.selectDeviceLog(query); + Map map = new HashMap<>(); + if(CollectionUtil.isNotEmpty(dtos)){ + for (DeviceOnlineLog dto : dtos) { + map.put(dto.getLogTime(),dto); + } + } + List dates = getDates(startTimeDate,endTimeDate); + List newDtos = new ArrayList<>(); + for (String date : dates) { + DayDevDTO log = new DayDevDTO(); + if(map.containsKey(date)){ + DeviceOnlineLog deviceOnlineLog = map.get(date); + + log.setDate(date); + log.setOffline(deviceOnlineLog.getOfflineNum()); + log.setOnline(deviceOnlineLog.getOnlineNum()); + log.setTotal(deviceOnlineLog.getTotal()); + }else{ + log.setDate(date); + log.setOffline(0); + log.setOnline(0); + log.setTotal(0); + } + newDtos.add(log); + } + return ResponseDataDTO.success(newDtos); + } + private List getDates(Date startTimeDate ,Date endTimeDate){ + List list = new ArrayList<>(); + long time = DateUtil.between(startTimeDate,endTimeDate, DateUnit.DAY); + for (int i = 0; i <= time; i++) { + list.add( DateUtil.formatDate(DateUtil.offsetDay(startTimeDate, i))); + } + return list; } } \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java index a7e2617..2930080 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/DeviceOnlineLogMapper.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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import org.apache.ibatis.annotations.Param; @@ -22,4 +23,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(@Param("page") Page page, @Param("ew") QueryWrapper query); + + List selectDeviceLog(@Param("ew") QueryWrapper query); } 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 0b1e5e7..0eedcbd 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 @@ -109,14 +109,14 @@ + + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml index 2b5be7e..c91a96a 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/DeviceOnlineLogMapper.xml @@ -45,6 +45,21 @@ + diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java index 32c70e2..5bfc2c9 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dto/BusDeviceImportDTO.java @@ -34,6 +34,22 @@ @ExcelProperty("详细位置") private String location; - @ExcelProperty("设备编号") + @ExcelProperty("设备国标号") private String cameraIndexCode; + + @ExcelProperty("NVR用户名") + private String nvrUser; + @ExcelProperty("NVR密码") + private String nvrPassword; + @ExcelProperty("NVR国标号") + private String nvrIndexCode; + + @ExcelProperty("设备用户名") + private String deviceUser; + @ExcelProperty("设备密码") + private String devicePassword; + private Integer secretLevel; + @ExcelProperty("密级") + private String secretLevelName; + } 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 78829a3..99722b5 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 @@ -112,7 +112,8 @@ @ApiModelProperty(value = "密级(0,一般 1 重要 2 秘密)", dataType = "Integer") @TableField("secret_level") private Integer secretLevel; - + @TableField(exist = false) + private String secretLevelName; @ApiModelProperty(value = "所属组织", dataType = "Long") @TableField("dept_id") private Long deptId; diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java index d8db16e..fd013e4 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/model/DeviceOnlineLog.java @@ -48,7 +48,11 @@ @ApiModelProperty(value = "修改时间", dataType = "Date") @TableField("update_time") private Date updateTime; - + @ApiModelProperty(value = "设备ID", dataType = "Date") + @TableField("device_id") + private Long deviceId; + @TableField("device_status") + private Integer deviceStatus; @Override public String toString() { diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java index 9b4c299..7a34e13 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/IDeviceOnlineLogService.java @@ -3,6 +3,7 @@ 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.core.datascope.DataScope; import com.casic.missiles.modular.device.model.DeviceOnlineLog; import java.util.List; @@ -21,4 +22,6 @@ * 设备在线日志 分页检索 */ List selectDeviceOnlineLogPage(Page page, QueryWrapper query); + + List selectDeviceLog( QueryWrapper query); } 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 746e8cd..2a4a9fc 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 @@ -13,6 +13,7 @@ import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.datascope.DataScope; import com.casic.missiles.core.datascope.ScopeEnums; +import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.modular.data.constants.DataConstants; import com.casic.missiles.modular.data.dto.AreaDataDTO; import com.casic.missiles.modular.data.dto.TotalDataDTO; @@ -68,6 +69,8 @@ this.hikService = hikService; } + + @Override public List selectBusDeviceInfoPage(Page page, QueryWrapper query) { return this.baseMapper.selectBusDeviceInfoPage(page, query); @@ -104,11 +107,14 @@ busDeviceInfo.setDeviceStatusName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_STATUS, busDeviceInfo.getDeviceStatus() + "")); busDeviceInfo.setDeviceTypeName(dictService.getDictNameByCode(DataConstants.DICT_DEVICE_TYPE, busDeviceInfo.getDeviceType() + "")); busDeviceInfo.setDeptName(abstractPermissionContext.getDeptService().getDeptName(busDeviceInfo.getDeptId())); + + busDeviceInfo.setSecretLevelName(dictService.getDictNameByCode(DataConstants.DICT_SECRET_LEVEL_TYPE, busDeviceInfo.getSecretLevel() + "")); } @Override public TotalDataDTO total(QueryWrapper query) { - + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); DataScope dataScope = abstractPermissionContext.getAuthService().getLoginUserDataScope(); //根据数据权限读取组织下用户信息 if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { @@ -162,6 +168,7 @@ public List tree() { //查询可见组织 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()); @@ -184,9 +191,10 @@ //挂载设备信息 LambdaQueryWrapper deviceQuery = new LambdaQueryWrapper<>(); deviceQuery.eq(BusDeviceInfo::getDeptId, deptDTO.getId()); + //判定只可查看以下密级 + deviceQuery.le(BusDeviceInfo::getSecretLevel,user.getSecretLevel()); List deviceInfos = this.list(deviceQuery); deptDTO.setChildrenNodes(deviceInfos.stream().map(this::createDeptDTO).collect(Collectors.toList())); - } for (DeptDTO deptDTO : deptDTOS) { if (!normalIds.contains(deptDTO.getPid())) { @@ -207,6 +215,8 @@ @Override public List addDeviceBatch(List results) { List dictList = dictService.findInDictByCode(DataConstants.DICT_DEVICE_TYPE); + 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))); @@ -224,6 +234,12 @@ result.setDeviceType(dictTypes.get(result.getDeviceType()).getCode()); } + if (!secretTypes.containsKey(result.getSecretLevelName())) { + errors.add("第" + index + "行密级类型不存在!"); + } else { + result.setSecretLevel(Convert.toInt(secretTypes.get(result.getSecretLevelName()).getCode())); + } + if (StrUtil.isEmpty(result.getDeptName()) || !deptMap.containsKey(result.getDeptName())) { errors.add("第" + index + "行所属组织不存在!"); } else { @@ -333,6 +349,8 @@ if (!ScopeEnums.ALL_TYPE.getCode().equals(dataScope.getScopeEnums().getCode())) { query.in("dept_id", dataScope.getDeptIds()); } + AuthUser user = abstractPermissionContext.getAuthService().getLoginUser(); + query.le("secret_level",user.getSecretLevel()); query.select("area", "count(1) as totalNum", "sum(case device_status when 1 then 1 else 0 end) as onLineNum"); query.groupBy("area"); List> maps = this.baseMapper.selectMaps(query); @@ -364,7 +382,6 @@ @Override public DeviceDTO getByDeviceId(Long id) { BusDeviceInfo deviceInfo = super.getById(id); - return BusDeviceInfo.convertDTO(deviceInfo); } diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java index 5dc02b7..e12c638 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/device/service/impl/DeviceOnlineLogServiceImpl.java @@ -25,4 +25,9 @@ public List selectDeviceOnlineLogPage(Page page, QueryWrapper query) { return this.baseMapper.selectDeviceOnlineLogPage(page, query); } -} + + @Override + public List selectDeviceLog(QueryWrapper query) { + return this.baseMapper.selectDeviceLog(query); + } +} \ No newline at end of file diff --git a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java index ffb32c1..8333f16 100644 --- a/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java +++ b/casic-server/src/main/java/com/casic/missiles/modular/hik/service/impl/DeviceStatusServiceImpl.java @@ -132,13 +132,18 @@ @Override public void updateDeviceStatusLog() { - List deviceOnlineLogs = deviceInfoService.searchStatusByArea(); - for (DeviceOnlineLog deviceOnlineLog : deviceOnlineLogs) { + List deviceOnlineLogs = deviceInfoService.list(); + for (BusDeviceInfo device : deviceOnlineLogs) { + + DeviceOnlineLog deviceOnlineLog = new DeviceOnlineLog(); deviceOnlineLog.setUpdateTime(new Date()); deviceOnlineLog.setLogTime(DateUtil.formatDate(new Date())); + deviceOnlineLog.setDeviceId(device.getId()); + deviceOnlineLog.setDeviceStatus(device.getDeviceStatus()); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(DeviceOnlineLog::getLogTime, deviceOnlineLog.getLogTime()); - query.eq(DeviceOnlineLog::getArea, deviceOnlineLog.getArea()); + query.eq(DeviceOnlineLog::getDeviceId, device.getId()); onlineLogService.saveOrUpdate(deviceOnlineLog, query); } diff --git a/casic-web/src/main/java/com/casic/missiles/controller/MockController.java b/casic-web/src/main/java/com/casic/missiles/controller/MockController.java index eae6c54..41e5086 100644 --- a/casic-web/src/main/java/com/casic/missiles/controller/MockController.java +++ b/casic-web/src/main/java/com/casic/missiles/controller/MockController.java @@ -72,7 +72,7 @@ super.getSession().setAttribute("username", shiroUser.getAccount()); super.getSession().setAttribute(PermissionConstants.SESSION_KEY, shiroUser.getId()); - LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); +// LogManager.me().executeLog(LogTaskFactory.loginLog(shiroUser.getId(), getIp())); ShiroKit.getSession().setAttribute("sessionFlag", true); resultData.setData(new LoginSuccessDTO(ShiroKit.getSession().getId().toString(), null)); diff --git a/casic-web/src/main/resources/doc/device.xlsx b/casic-web/src/main/resources/doc/device.xlsx index b80e706..e58efe2 100644 --- a/casic-web/src/main/resources/doc/device.xlsx +++ b/casic-web/src/main/resources/doc/device.xlsx Binary files differ