diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/controller/MonitoringCoverageController.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/controller/MonitoringCoverageController.java new file mode 100644 index 0000000..5690903 --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/controller/MonitoringCoverageController.java @@ -0,0 +1,80 @@ +package com.sercurityControl.proteam.supplement.controller; + +import com.securityControl.common.core.web.domain.AjaxResult; +import com.securityControl.common.log.annotation.SysLog; +import com.securityControl.common.log.enums.OperaType; +import com.sercurityControl.proteam.supplement.domain.dto.ParamsDto; +import com.sercurityControl.proteam.supplement.service.MonitoringCoverageService; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @className:MonitoringCoverageController + * @author:cwchen + * @date:2024-12-11-9:17 + * @version:1.0 + * @description:监控覆盖-controller + */ +@RestController +@RequestMapping("/pot/monitoringCoverage/") +@Slf4j +public class MonitoringCoverageController { + + @Resource(name = "MonitoringCoverageService") + private MonitoringCoverageService service; + + @ApiOperation(value = "监控活跃度分析") + @SysLog(title = "监控覆盖", model = "安全风险->监控覆盖", operaType = OperaType.QUERY, details = "监控覆盖",logType = 1) + @GetMapping("getHyd") + public AjaxResult getHyd(ParamsDto dto){ + AjaxResult res = service.getHyd(dto); + return res; + } + + @ApiOperation(value = "监控覆盖度分析") + @GetMapping("getFgd") + public AjaxResult getFgd(ParamsDto dto){ + AjaxResult res = service.getFgd(dto); + return res; + } + + @ApiOperation(value = "地图球机") + @GetMapping("getMap") + public AjaxResult getMap(ParamsDto dto){ + AjaxResult res = service.getMap(dto); + return res; + } + + @ApiOperation(value = "球机异常数量") + @GetMapping("getErrorNum") + public AjaxResult getErrorNum(ParamsDto dto){ + AjaxResult res = service.getErrorNum(dto); + return res; + } + + @ApiOperation(value = "下行观看分析") + @GetMapping("getWatchNum") + public AjaxResult getWatchNum(ParamsDto dto){ + AjaxResult res = service.getWatchNum(dto); + return res; + } + + @ApiOperation(value = "风险球机覆盖度") + @GetMapping("getCoverRate") + public AjaxResult getCoverRate(ParamsDto dto){ + AjaxResult res = service.getCoverRate(dto); + return res; + } + + @ApiOperation(value = "球机速率正常/异常数量") + @GetMapping("getSpeedNum") + public AjaxResult getSpeedNum(ParamsDto dto){ + AjaxResult res = service.getSpeedNum(dto); + return res; + } +} diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/domain/vo/MonitoringCoverageVo.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/domain/vo/MonitoringCoverageVo.java new file mode 100644 index 0000000..31eb38d --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/domain/vo/MonitoringCoverageVo.java @@ -0,0 +1,60 @@ +package com.sercurityControl.proteam.supplement.domain.vo; + +import lombok.Data; + +/** + * @className:MonitoringCoverageVo + * @author:cwchen + * @date:2024-12-11-10:11 + * @version:1.0 + * @description:监控覆盖 + */ +@Data +public class MonitoringCoverageVo { + + private int num; + + private String id; + + private String name; + + private String runTime; + + private String time; + + private long timeValue; + + /**观看次数*/ + private int watchTime; + + /**风险等级*/ + private String riskLevel; + + /**站班会地址*/ + private String address; + + /**经度*/ + private String lon; + /**纬度*/ + private String lat; + + /**二级风险数量*/ + private int twoRiskNum; + /**三级风险数量*/ + private int threeRiskNum; + /**四级风险数量*/ + private int fourRiskNum; + /**五级风险数量*/ + private int fiveRiskNum; + private int totalRiskNum; + + private double twoRate; + private double threeRate; + private double fourRate; + private double fiveRate; + + /**视频设备视频速率正常数量*/ + private int errorNum; + /**视频设备视频速率异常数量*/ + private int normalNum; +} diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/mapper/MonitoringCoverageMapper.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/mapper/MonitoringCoverageMapper.java new file mode 100644 index 0000000..21330dd --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/mapper/MonitoringCoverageMapper.java @@ -0,0 +1,80 @@ +package com.sercurityControl.proteam.supplement.mapper; + +import com.sercurityControl.proteam.supplement.domain.dto.ParamsDto; +import com.sercurityControl.proteam.supplement.domain.vo.MonitoringCoverageVo; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:MonitoringCoverageMapper + * @author:cwchen + * @date:2024-12-11-9:18 + * @version:1.0 + * @description:监控覆盖-mapper + */ +@Repository("MonitoringCoverageMapper") +public interface MonitoringCoverageMapper { + /** + * 监控覆盖-活跃度分析 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 10:23 + */ + List getHyd(ParamsDto dto); + + /** + * 监控覆盖-覆盖度分析 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 13:10 + */ + List getFgd(ParamsDto dto); + + /** + * 地图球机 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 13:26 + */ + List getMap(ParamsDto dto); + + /** + * 球机异常数量 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 14:11 + */ + List getErrorNum(ParamsDto dto); + + /** + * 下行观看分析 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 14:23 + */ + List getWatchNum(ParamsDto dto); + + /** + * 风险球机覆盖度 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 14:33 + */ + List getCoverRate(ParamsDto dto); + + /** + * 球机速率正常/异常数量 + * @param dto + * @return List + * @author cwchen + * @date 2024/12/11 14:53 + */ + List getSpeedNum(ParamsDto dto); +} diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/MonitoringCoverageService.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/MonitoringCoverageService.java new file mode 100644 index 0000000..5cc6f6a --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/MonitoringCoverageService.java @@ -0,0 +1,76 @@ +package com.sercurityControl.proteam.supplement.service; + +import com.securityControl.common.core.web.domain.AjaxResult; +import com.sercurityControl.proteam.supplement.domain.dto.ParamsDto; + +/** + * @className:MonitoringCoverageService + * @author:cwchen + * @date:2024-12-11-9:17 + * @version:1.0 + * @description:监控覆盖-service + */ +public interface MonitoringCoverageService { + /** + * 监控覆盖-活跃度分析 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 10:21 + */ + AjaxResult getHyd(ParamsDto dto); + + /** + * 监控覆盖-覆盖度分析 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 13:08 + */ + AjaxResult getFgd(ParamsDto dto); + + /** + * 地图球机 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 13:26 + */ + AjaxResult getMap(ParamsDto dto); + + /** + * 球机异常数量 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 14:10 + */ + AjaxResult getErrorNum(ParamsDto dto); + + /** + * 下行观看分析 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 14:22 + */ + AjaxResult getWatchNum(ParamsDto dto); + + /** + * 风险球机覆盖度 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 14:32 + */ + AjaxResult getCoverRate(ParamsDto dto); + + /** + * 球机速率正常/异常数量 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/12/11 14:53 + */ + AjaxResult getSpeedNum(ParamsDto dto); +} diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/impl/MonitoringCoverageServiceImpl.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/impl/MonitoringCoverageServiceImpl.java new file mode 100644 index 0000000..7af6b44 --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/supplement/service/impl/MonitoringCoverageServiceImpl.java @@ -0,0 +1,136 @@ +package com.sercurityControl.proteam.supplement.service.impl; + +import com.securityControl.common.core.web.domain.AjaxResult; +import com.sercurityControl.proteam.supplement.domain.dto.ParamsDto; +import com.sercurityControl.proteam.supplement.domain.vo.MonitoringCoverageVo; +import com.sercurityControl.proteam.supplement.mapper.MonitoringCoverageMapper; +import com.sercurityControl.proteam.supplement.service.MonitoringCoverageService; +import com.sercurityControl.proteam.util.DateTimeHelper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @className:MonitoringCoverageServiceImpl + * @author:cwchen + * @date:2024-12-11-9:18 + * @version:1.0 + * @description:监控覆盖-impl + */ +@Service("MonitoringCoverageService") +@Slf4j +public class MonitoringCoverageServiceImpl implements MonitoringCoverageService { + + @Resource(name = "MonitoringCoverageMapper") + private MonitoringCoverageMapper mapper; + + @Override + public AjaxResult getHyd(ParamsDto dto) { + List list = null; + try { + list = mapper.getHyd(dto); + int num = 0; + Date endDate = new Date(); + for (MonitoringCoverageVo vo : list) { + num ++; + vo.setNum(num); + Date runTime = DateTimeHelper.parse(vo.getRunTime(), "yyyy-MM-dd HH:mm:ss"); + String gapTime = DateTimeHelper.getGapTime(endDate, runTime); + long timeValue = DateTimeHelper.getGapTime2(endDate, runTime); + vo.setTime(gapTime); + vo.setTimeValue(timeValue); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult getFgd(ParamsDto dto) { + List list = null; + try { + list = mapper.getFgd(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult getMap(ParamsDto dto) { + List list = null; + try { + list = mapper.getMap(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult getErrorNum(ParamsDto dto) { + List list = null; + try { + list = mapper.getErrorNum(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult getWatchNum(ParamsDto dto) { + List list = null; + try { + list = mapper.getWatchNum(dto); + int num = 0; + for (MonitoringCoverageVo vo : list) { + num ++; + vo.setNum(num); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + @Override + public AjaxResult getCoverRate(ParamsDto dto) { + List list = null; + try { + list = mapper.getCoverRate(dto); + for (MonitoringCoverageVo vo : list) { + vo.setTwoRate(handleRate(vo.getTwoRiskNum(), vo.getTotalRiskNum())); + vo.setThreeRate(handleRate(vo.getThreeRiskNum(), vo.getTotalRiskNum())); + vo.setFourRate(handleRate(vo.getFourRiskNum(), vo.getTotalRiskNum())); + vo.setFiveRate(handleRate(vo.getFiveRiskNum(), vo.getTotalRiskNum())); + } + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } + + public static double handleRate(int a, int b) { + if (a == 0 || b == 0) { + return 0.0; + } + double ratio = (double) (a * 100) / b; + return Double.valueOf(String.format("%.2f", ratio)); + } + + @Override + public AjaxResult getSpeedNum(ParamsDto dto) { + List list = null; + try { + list = mapper.getSpeedNum(dto); + } catch (Exception e) { + log.error(e.toString(),e); + } + return AjaxResult.success(list); + } +} diff --git a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/util/DateTimeHelper.java b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/util/DateTimeHelper.java index 6f7179c..f2904e3 100644 --- a/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/util/DateTimeHelper.java +++ b/securityControl-modules/securityControl-proteam/src/main/java/com/sercurityControl/proteam/util/DateTimeHelper.java @@ -242,7 +242,6 @@ public class DateTimeHelper { } - /** * @return */ @@ -646,4 +645,42 @@ public class DateTimeHelper { String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); return time; } + + public static String getGapTime(Date date1, Date date2) { + // 相差的毫秒值 + Long milliseconds = date1.getTime() - date2.getTime(); + + long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 + long nh = 1000 * 60 * 60;// 一小时的毫秒数 + long nm = 1000 * 60;// 一分钟的毫秒数 + long ns = 1000;// 一秒钟的毫秒数 + + long day = milliseconds / nd; // 计算相差多少天 + long hour = milliseconds % nd / nh; // 计算相差剩余多少小时 + long min = milliseconds % nd % nh / nm; // 计算相差剩余多少分钟 + long sec = milliseconds % nd % nh % nm / ns; // 计算相差剩余多少秒 +// System.out.println("时间相差:" + day + "天" + hour + "小时" + min + "分钟" + sec + "秒"); + + + long hourAll = milliseconds / nh; // 计算相差多少小时 +// System.out.println("时间相差:" + hourAll + "小时" + min + "分钟" + sec + "秒"); + + + long min2 = milliseconds / nm; // 计算相差多少分钟 +// System.out.println("时间相差:" + min2 + "分钟" + sec + "秒"); + + String overTime = hourAll + "小时" + min + "分" + sec + "秒"; + return overTime; + } + + public static long getGapTime2(Date date1, Date date2) { + // 相差的毫秒值 + Long milliseconds = date1.getTime() - date2.getTime(); + long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 + long nh = 1000 * 60 * 60;// 一小时的毫秒数 + long nm = 1000 * 60;// 一分钟的毫秒数 + long ns = 1000;// 一秒钟的毫秒数 + long sec = milliseconds / ns; // 计算相差剩余多少秒 + return sec; + } } diff --git a/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/MonitoringCoverageMapper.xml b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/MonitoringCoverageMapper.xml new file mode 100644 index 0000000..fd52ab5 --- /dev/null +++ b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/MonitoringCoverageMapper.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskCostMapper.xml b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskCostMapper.xml index 83c6ade..4e377b5 100644 --- a/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskCostMapper.xml +++ b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskCostMapper.xml @@ -27,7 +27,7 @@ AND jjcm.current_constr_date BETWEEN #{startDay} AND #{endDay} - AND jjcm.delete_flag = '0' + AND jjcm.delete_flag = 0 ORDER BY jjcm.create_time DESC diff --git a/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskTimeMapper.xml b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskTimeMapper.xml index 9f8f75b..4faecf1 100644 --- a/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskTimeMapper.xml +++ b/securityControl-modules/securityControl-proteam/src/main/resources/mapper/supplement/RiskTimeMapper.xml @@ -27,7 +27,7 @@ AND jjcm.current_constr_date BETWEEN #{startDay} AND #{endDay} - AND jjcm.delete_flag = '0' + AND jjcm.delete_flag = 0 ORDER BY jjcm.create_time DESC