ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java
@@ -5,6 +5,9 @@ import org.springframework.data.mongodb.core.index.TextIndexed; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; import java.math.RoundingMode; /** * 人脸设备抽检指标监测结果:人脸(人脸卡口信息采集准确率、人脸卡口设备抓拍数据大图可用性) * @@ -90,6 +93,18 @@ * OSD标注异常数据量 */ private Integer osdExpCount; public static BigDecimal calUrl(BigUsefulness bigUseful) { BigDecimal url = BigDecimal.ZERO; if (bigUseful.getSampleCount() != 0) { //图片访问正常量 = 抽检量-异常量 BigDecimal picNormalCount = new BigDecimal(bigUseful.getSampleCount() - bigUseful.getBigPicExpCount()); //图片抽检量 BigDecimal sampleCount = new BigDecimal(bigUseful.getSampleCount()); url = picNormalCount.divide(sampleCount, 4, RoundingMode.HALF_UP); } return url; } } @Data ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/VehicleDeviceSamplingResult.java
@@ -5,6 +5,9 @@ import org.springframework.data.mongodb.core.index.TextIndexed; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; import java.math.RoundingMode; /** * 车辆设备抽检指标监测结果:车辆(车辆卡口设备抓拍数据大图可用性) * @@ -79,6 +82,18 @@ * OSD标注异常数据量 */ private Integer osdExpCount; public static BigDecimal calUrl(BigUsefulness bigUseful) { BigDecimal url = BigDecimal.ZERO; if (bigUseful.getSampleCount() != 0) { //图片访问正常量 = 抽检量-异常量 BigDecimal picNormalCount = new BigDecimal(bigUseful.getSampleCount() - bigUseful.getBigPicExpCount()); //图片抽检量 BigDecimal sampleCount = new BigDecimal(bigUseful.getSampleCount()); url = picNormalCount.divide(sampleCount, 4, RoundingMode.HALF_UP); } return url; } } @Data @@ -128,4 +143,6 @@ */ private Float importantConPercent; } } ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/MonitorQualifyResult.java
@@ -82,4 +82,26 @@ @TextIndexed private String value; } //全对返ture public static boolean correct(MonitorQualifyResult result) { return checkError(result.getName()) && checkError(result.getCivilCode()) && checkError(result.getIp()) && checkError(result.getSerialNumber()) && checkError(result.getMacdz()) && checkError(result.getLatitude()) && checkError(result.getLongitude()) && checkError(result.getSbzt()) && checkError(result.getSxjcjqy()) && checkError(result.getSxjgnlx()) && checkError(result.getJkdwlx()) && checkError(result.getIntegrated_device()) ; } //检查指标,正常返回true public static boolean checkError(MonitorQualifyResult.QualifyResult result) { return result.getError() != null && !result.getError(); } } ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdCheckResult.java
@@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.platform.domain.result.BaseResult; import constant.ApiConstants; import lombok.Data; import org.springframework.data.mongodb.core.index.TextIndexed; import org.springframework.data.mongodb.core.mapping.Document; @@ -107,5 +108,15 @@ private Integer osdLbCorrect; public static Boolean checkOsd(OsdCheckResult result) { return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdNameCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdProvinceCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdCityCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdPartCorrect()); } public static Boolean checkTime(OsdCheckResult result) { return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()); } } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/TMonitorVO.java
@@ -5,6 +5,7 @@ import com.ycl.system.entity.BaseEntity; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Date; import java.util.List; @@ -226,46 +227,105 @@ private String area; private String error; private String unitName; private LocalDate mongoCreateTime; @JsonFormat(pattern = "yyyy-MM-dd") private Date mongoCreateTime; @JsonFormat(pattern = "yyyy-MM-dd") private Date startTime; @JsonFormat(pattern = "yyyy-MM-dd") private Date endTime; //异常恢复监控字段 /** 异常恢复监控时间天数 */ private String time; /** * 当日接收到的当日抓拍量 * 工单号 */ private Integer dataCount; private String workOrderNo; /** * 联系人 */ private String unitContact; /** * 联系电话 */ private String unitContactPhone; /** * 运维人员名称 */ private String ywPeopleName; /** * 故障类型 */ private String errorType; //视频车辆人脸监控字段 /** * 一机一档合格状态 */ private Boolean monitorQualify; /** * 是否为未注册设备 */ private Boolean newMonitor; //视频mongo信息 /** * 录像完整状态 1:完整,0:间歇,-1:异常 */ private Integer videoComplete; /** * 录像缺失时长 */ private Double videoLoseTime; /** * OSD */ private Boolean OSD; /** * OSD时间 */ private Boolean OSDTime; //车辆、人脸mongo信息 /** * 抓拍数据量监测 1:正常 2:无数据 4:数据量少 */ private Integer snapResult; /** * 当日抓拍量 */ private Integer snapCount; /** * 时钟准确率 */ private Float clockPercent; /** * 上传及时率 */ private Float uploadPercent; /** * 大图可用率 */ private Float bigUsefulPercent; /** * 主要属性一致率 * url可用率 */ private Float majorConPercent; private BigDecimal urlPercent; //车辆 /** * 重要属性一致率 * 主要属性一致率 */ private Float importantConPercent; /** * 重要属性一致率 */ private Float majorConPercent; //人脸 /** * 人脸合格率 */ private Float faceEligPercent; private Float facePercent; /** * 关键帧时延 * 建模失败 */ private Integer ifmDelay; /** * 信令时延 */ private Integer sipDelay; /** * 视频流时延 */ private Integer videoDelay; private Float failPercent; /** * 动态列 */ @@ -275,5 +335,4 @@ * 设备厂商: 0海康 1大华 2宇视 */ private Integer deviceType; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -34,6 +34,8 @@ /** 运维单位 */ private Integer unitId; private String unitName; private String unitContact; private String unitContactPhone; /** 工单来源/设备名称 */ private String source; ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -90,15 +90,9 @@ if (bigUseful.getBigUsefulPercent() >= 0.9) { stats.picUsabilitySites++; } if (bigUseful.getSampleCount() != 0) { //图片访问正常量 = 抽检量-异常量 BigDecimal picNormalCount = new BigDecimal(bigUseful.getSampleCount() - bigUseful.getBigPicExpCount()); //图片抽检量 BigDecimal sampleCount = new BigDecimal(bigUseful.getSampleCount()); //图片访问率>=90% 视为合格 if (picNormalCount.divide(sampleCount, 4, RoundingMode.HALF_UP).compareTo(new BigDecimal("0.9")) >= 0) { stats.urlUsabilitySites++; } //图片访问率>=90% 视为合格 if (VehicleDeviceSamplingResult.BigUsefulness.calUrl(bigUseful).compareTo(new BigDecimal("0.9")) >= 0) { stats.urlUsabilitySites++; } } ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -31,7 +31,7 @@ import java.util.stream.Collectors; /** * 计算人脸点位在线率、视图库对接稳定性 * 计算视图库对接稳定性 * 抓拍数据量监测结果接口数据 * 获取分省厅、区域的map<k,v> k为deptId或者Province_deptId * 循环map计算点位在线率 ycl-server/src/main/java/com/ycl/calculate/MonitorQualifyCalculation.java
@@ -66,30 +66,9 @@ //返回对象的引用,如果不存在会放入新的key,value AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats()); stats.totalMonitors++; if (result != null && correct(result)){ if (result != null && MonitorQualifyResult.correct(result)){ stats.qualifyMonitor++; } } //全对返ture private boolean correct(MonitorQualifyResult result) { return checkError(result.getName()) && checkError(result.getCivilCode()) && checkError(result.getIp()) && checkError(result.getSerialNumber()) && checkError(result.getMacdz()) && checkError(result.getLatitude()) && checkError(result.getLongitude()) && checkError(result.getSbzt()) && checkError(result.getSxjcjqy()) && checkError(result.getSxjgnlx()) && checkError(result.getJkdwlx()) && checkError(result.getIntegrated_device()) ; } //检查指标,正常返回true private boolean checkError(MonitorQualifyResult.QualifyResult result) { return result.getError() != null && !result.getError(); } /** ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java
@@ -70,25 +70,13 @@ //重点点位 if (result.getImportantTag()) { stats.importantTotalSites++; if (checkOsd(result)) { if (OsdCheckResult.checkOsd(result)) { stats.importantOsdAccuracySites++; } if (checkTime(result)) { if (OsdCheckResult.checkTime(result)) { stats.importantTimeAccuracySites++; } } } private Boolean checkOsd(OsdCheckResult result) { return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdNameCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdProvinceCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdCityCorrect()) && ApiConstants.OSD_Correct.equals(result.getOsdPartCorrect()); } private Boolean checkTime(OsdCheckResult result) { return ApiConstants.OSD_Correct.equals(result.getOsdTimeCorrect()); } /** ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
@@ -34,7 +34,7 @@ @Autowired private ICheckIndexVideoService checkIndexVideoService; //区域视频在线率的内部类 //区域录像可用率的内部类 protected static class AreaStats { int totalSites = 0; int usabilitySites = 0; @@ -91,7 +91,7 @@ } /** * 视频点位在线率 * 视频录像可用率 */ private CheckIndexVideo createOrUpdateCheckIndexVideo(String key, AreaStats stats, List<CheckIndexVideo> checkIndexVideoList) { CheckIndexVideo checkIndexVideo = getCheckIndex(key, checkIndexVideoList, CheckIndexVideo.class); ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -101,4 +101,11 @@ * @return */ WorkOrderDetailVO detailByNo(@Param("workOrderNo") String workOrderNo); /** * 补充异常恢复监控信息 * @param orders * @return */ List<WorkOrderVO> getRecoveryInfo(List<String> orders); } ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorServiceImpl.java
@@ -11,15 +11,20 @@ import com.ycl.platform.domain.result.HK.FaceDeviceSamplingResult; import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult; import com.ycl.platform.domain.result.HK.VehicleDeviceSamplingResult; import com.ycl.platform.domain.result.UY.VideoOnlineResult; import com.ycl.platform.domain.result.UY.MonitorQualifyResult; import com.ycl.platform.domain.result.UY.OsdCheckResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.domain.vo.TMonitorVO; import com.ycl.platform.domain.vo.WorkOrderVO; import com.ycl.platform.domain.vo.screen.MonitorRateVO; import com.ycl.platform.domain.vo.screen.MonitorTotalVO; import com.ycl.platform.mapper.TMonitorMapper; import com.ycl.platform.mapper.WorkOrderMapper; import com.ycl.platform.service.ITMonitorService; import com.ycl.system.Result; import com.ycl.system.page.PageUtil; import com.ycl.system.service.ISysConfigService; import com.ycl.utils.DateUtils; import com.ycl.utils.StringUtils; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -27,9 +32,11 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; /** * 设备资产Service业务层处理 @@ -38,15 +45,15 @@ * @date 2024-03-04 */ @Service public class TMonitorServiceImpl extends ServiceImpl<TMonitorMapper, TMonitor> implements ITMonitorService { public class TMonitorServiceImpl extends ServiceImpl<TMonitorMapper, TMonitor> implements ITMonitorService { @Autowired private TMonitorMapper tMonitorMapper; @Autowired private ISysConfigService configService; @Autowired private MongoTemplate mongoTemplate; @Autowired private WorkOrderMapper workOrderMapper; /** * 查询设备资产 * @@ -54,19 +61,19 @@ * @return 设备资产 */ @Override public TMonitor selectTMonitorById(Long id) { public TMonitor selectTMonitorById(Long id) { return tMonitorMapper.selectTMonitorById(id); } /** * 查询设备资产列表 * 异常恢复监控、车辆、人脸、视频通用接口 * * @param tMonitor 设备资产 * @return 设备资产 */ @Override @DataScope(deptAlias = "d",userAlias = "u") @DataScope(deptAlias = "d", userAlias = "u") public List<TMonitorVO> selectTMonitorList(TMonitorVO tMonitor) { // 异常恢复监控 if (Objects.equals(tMonitor.getRecovery(), 1L)) { @@ -77,66 +84,167 @@ tMonitor.setTime(time); } List<TMonitorVO> monitors = tMonitorMapper.selectTMonitorList(tMonitor); // 异常恢复监控 if(Objects.equals(tMonitor.getRecovery(), 1L)){ //工单号 List<String> orders = monitors.stream().map(TMonitorVO::getWorkOrderNo).collect(Collectors.toList()); if(CollectionUtils.isEmpty(orders)){ return monitors; } List<WorkOrderVO> voList = workOrderMapper.getRecoveryInfo(orders); for (TMonitorVO monitor : monitors) { if(!CollectionUtils.isEmpty(voList)){ for (WorkOrderVO workOrderVO : voList) { if(monitor.getWorkOrderNo().equals(workOrderVO.getWorkOrderNo())){ monitor.setUnitContact(workOrderVO.getUnitContact()); monitor.setUnitContactPhone(workOrderVO.getUnitContactPhone()); monitor.setYwPeopleName(workOrderVO.getYwPeopleName()); monitor.setErrorType(workOrderVO.getErrorType()); } } } } return monitors; } //设备编号 List<String> numbers = monitors.stream().map(TMonitorVO::getSerialNumber).collect(Collectors.toList()); Query query = new Query(); //TODO:本地测试 // Date now = new Date() Date now = DateUtils.getDay(2024, 7, 13); query.addCriteria(Criteria.where("no").in(numbers) .and("mongoCreateTime").gte(DateUtils.getDayStart(now)).lt(DateUtils.getDayEnd(now)) ); //一机一档信息 List<MonitorQualifyResult> monitorQualifyResults = mongoTemplate.find(query, MonitorQualifyResult.class); // 视频监控设备 if (Objects.equals(tMonitor.getCameraFunType(), "1")) { monitors.forEach(monitor -> { Query query = new Query(); query.addCriteria(Criteria.where("deviceId").is(monitor.getSerialNumber()) .and("mongoCreateTime").is(LocalDate.now()) ); VideoOnlineResult one = mongoTemplate.findOne(query, VideoOnlineResult.class); if (one != null) { monitor.setIfmDelay(one.getIfmDelay()); monitor.setSipDelay(one.getSipDelay()); monitor.setVideoDelay(one.getVideoDelay()); monitor.setMongoCreateTime(one.getMongoCreateTime()); //OSD信息 List<OsdCheckResult> osdCheckResults = mongoTemplate.find(query, OsdCheckResult.class); //录像可用信息 List<RecordMetaDSumResult> videoResults = mongoTemplate.find(query, RecordMetaDSumResult.class); for (TMonitorVO monitor : monitors) { monitor.setMongoCreateTime(now); //一机一档 setOneFile(monitorQualifyResults, monitor); //录像 if (!CollectionUtils.isEmpty(videoResults)) { for (RecordMetaDSumResult videoResult : videoResults) { if (monitor.getSerialNumber().equals(videoResult.getNo())) { monitor.setVideoComplete(videoResult.getRecordStatus()); monitor.setVideoLoseTime(videoResult.getMissDuration()); } } } }); //OSD if (!CollectionUtils.isEmpty(osdCheckResults)) { for (OsdCheckResult osdCheckResult : osdCheckResults) { if (monitor.getSerialNumber().equals(osdCheckResult.getNo())) { monitor.setOSD(OsdCheckResult.checkOsd(osdCheckResult)); monitor.setOSDTime(OsdCheckResult.checkTime(osdCheckResult)); } } } } } // 车辆监控设备 if (Objects.equals(tMonitor.getCameraFunType(), "2")) { monitors.forEach(monitor -> { Query query = new Query(); query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber()) .and("mongoCreateTime").is(LocalDate.now()) ); VehicleDeviceInspectionResult one = mongoTemplate.findOne(query, VehicleDeviceInspectionResult.class); VehicleDeviceSamplingResult two = mongoTemplate.findOne(query, VehicleDeviceSamplingResult.class); if (one != null) { monitor.setDataCount(one.getDataCount()); monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null); monitor.setMongoCreateTime(one.getMongoCreateTime()); //属性一致率、大图、url List<VehicleDeviceSamplingResult> sampleResults = mongoTemplate.find(query, VehicleDeviceSamplingResult.class); //抓拍量、时钟、上传 List<VehicleDeviceInspectionResult> inspectResults = mongoTemplate.find(query, VehicleDeviceInspectionResult.class); for (TMonitorVO monitor : monitors) { monitor.setMongoCreateTime(now); //一机一档 setOneFile(monitorQualifyResults, monitor); //属性一致率、大图、url if (!CollectionUtils.isEmpty(sampleResults)) { for (VehicleDeviceSamplingResult sampleResult : sampleResults) { if (monitor.getSerialNumber().equals(sampleResult.getNo())) { if (sampleResult.getBigUseful() != null) { monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent()); monitor.setUrlPercent(VehicleDeviceSamplingResult.BigUsefulness.calUrl(sampleResult.getBigUseful())); } if (sampleResult.getVehDiff() != null) { monitor.setImportantConPercent(sampleResult.getVehDiff().getImportantConPercent()); monitor.setMajorConPercent(sampleResult.getVehDiff().getMajorConPercent()); } } } } if (two != null) { monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful()) ? two.getBigUseful().getBigUsefulPercent() : null); monitor.setMajorConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getMajorConPercent() : null); monitor.setImportantConPercent(Objects.nonNull(two.getVehDiff()) ? two.getVehDiff().getImportantConPercent() : null); monitor.setMongoCreateTime(two.getMongoCreateTime()); //抓拍量、时钟、上传 if (!CollectionUtils.isEmpty(inspectResults)) { for (VehicleDeviceInspectionResult inspectResult : inspectResults) { if (monitor.getSerialNumber().equals(inspectResult.getNo())) { monitor.setSnapResult(inspectResult.getSnapResult()); monitor.setSnapCount(inspectResult.getDataCount()); if (inspectResult.getSnapClock() != null) monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent()); if (inspectResult.getSnapTimely() != null) monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent()); } } } }); } } // 人脸监控设备 if (Objects.equals(tMonitor.getCameraFunType(), "3")) { monitors.forEach(monitor -> { Query query = new Query(); query.addCriteria(Criteria.where("externalIndexCode").is(monitor.getSerialNumber()) .and("mongoCreateTime").is(LocalDate.now()) ); FaceDeviceInspectionResult one = mongoTemplate.findOne(query, FaceDeviceInspectionResult.class); FaceDeviceSamplingResult two = mongoTemplate.findOne(query, FaceDeviceSamplingResult.class); if (one != null) { monitor.setDataCount(one.getDataCount()); monitor.setClockPercent(Objects.nonNull(one.getSnapClock()) ? one.getSnapClock().getClockPercent() : null); monitor.setMongoCreateTime(one.getMongoCreateTime()); //人脸合格、大图、url访问异常 List<FaceDeviceSamplingResult> sampleResults = mongoTemplate.find(query, FaceDeviceSamplingResult.class); //抓拍量、时钟、上传 List<FaceDeviceInspectionResult> inspectResults = mongoTemplate.find(query, FaceDeviceInspectionResult.class); for (TMonitorVO monitor : monitors) { monitor.setMongoCreateTime(now); //一机一档 setOneFile(monitorQualifyResults, monitor); //人脸合格、大图、url访问异常 if (!CollectionUtils.isEmpty(sampleResults)) { for (FaceDeviceSamplingResult sampleResult : sampleResults) { if (monitor.getSerialNumber().equals(sampleResult.getNo())) { if (sampleResult.getBigUseful() != null) { monitor.setBigUsefulPercent(sampleResult.getBigUseful().getBigUsefulPercent()); monitor.setUrlPercent(FaceDeviceSamplingResult.BigUsefulness.calUrl(sampleResult.getBigUseful())); } if (sampleResult.getFaceEligibility() != null) monitor.setFacePercent(sampleResult.getFaceEligibility().getFaceEligPercent()); } } } if (two != null) { monitor.setBigUsefulPercent(Objects.nonNull(two.getBigUseful())? two.getBigUseful().getBigUsefulPercent() : null); monitor.setFaceEligPercent(Objects.nonNull(two.getFaceEligibility()) ? two.getFaceEligibility().getFaceEligPercent() : null); monitor.setMongoCreateTime(two.getMongoCreateTime()); //抓拍量、时钟、上传、建模失败率 if (!CollectionUtils.isEmpty(inspectResults)) { for (FaceDeviceInspectionResult inspectResult : inspectResults) { if (monitor.getSerialNumber().equals(inspectResult.getNo())) { monitor.setSnapResult(inspectResult.getSnapResult()); monitor.setSnapCount(inspectResult.getDataCount()); if (inspectResult.getSnapClock() != null) monitor.setClockPercent(inspectResult.getSnapClock().getClockPercent()); if (inspectResult.getSnapTimely() != null) monitor.setUploadPercent(inspectResult.getSnapTimely().getTimelyPercent()); if (inspectResult.getSnapValidity() != null) monitor.setFailPercent(inspectResult.getSnapValidity().getFailPercent()); } } } }); } } return monitors; } /** * 补充一机一档信息 * * @param monitorQualifyResults * @param monitor */ private void setOneFile(List<MonitorQualifyResult> monitorQualifyResults, TMonitorVO monitor) { if (!CollectionUtils.isEmpty(monitorQualifyResults)) { for (MonitorQualifyResult oneFile : monitorQualifyResults) { if (monitor.getSerialNumber().equals(oneFile.getNo())) { monitor.setMonitorQualify(MonitorQualifyResult.correct(oneFile)); monitor.setNewMonitor(oneFile.getNewDevice()); } } } } /** @@ -146,8 +254,7 @@ * @return 结果 */ @Override public int insertTMonitor(TMonitor tMonitor) { public int insertTMonitor(TMonitor tMonitor) { return tMonitorMapper.insertTMonitor(tMonitor); } @@ -158,8 +265,7 @@ * @return 结果 */ @Override public int updateTMonitor(TMonitor tMonitor) { public int updateTMonitor(TMonitor tMonitor) { return tMonitorMapper.updateTMonitor(tMonitor); } @@ -170,8 +276,7 @@ * @return 结果 */ @Override public int deleteTMonitorByIds(Long[] ids) { public int deleteTMonitorByIds(Long[] ids) { return tMonitorMapper.deleteTMonitorByIds(ids); } @@ -182,19 +287,18 @@ * @return 结果 */ @Override public int deleteTMonitorById(Long id) { public int deleteTMonitorById(Long id) { return tMonitorMapper.deleteTMonitorById(id); } @Override @DataScope(deptAlias = "d",userAlias = "u") @DataScope(deptAlias = "d", userAlias = "u") public Map<String, String> getVideoCount(TMonitorVO tMonitor) { return tMonitorMapper.getVideoCount(tMonitor); } @Override @DataScope(deptAlias = "d",userAlias = "u") @DataScope(deptAlias = "d", userAlias = "u") public Map<String, String> recoveryException(TMonitorVO monitor) { // String time = configService.selectConfigByKey("abnormal.equipment.continuous.attention.time"); // monitor.setTime(time); ycl-server/src/main/resources/application-dev.yml
@@ -126,7 +126,8 @@ spring: data: mongodb: uri: mongodb://root1:yunwei%402024@192.168.3.88:27017/zgyw?authSource=admin # uri: mongodb://root1:yunwei%402024@192.168.3.88:27017/zgyw?authSource=admin uri: mongodb://localhost:27017/zgyw # 拉取数据请求配置 request: ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -99,7 +99,7 @@ <select id="selectTMonitorList" resultType="com.ycl.platform.domain.vo.TMonitorVO"> select m.id, m.serial_number, name, site_type, mac_addr, ip, camera_fun_type, longitude, latitude, camera_capture_area, p.online as onState, civil_code, d.dept_id, d.dept_name, d.area, p.province_tag, IF(COUNT(w.id) OVER() > 0, '是', '否') AS error, u.unit_name, p.recovery_time,p.reason from t_monitor m IF(COUNT(w.id) OVER() > 0, '是', '否') AS error, u.unit_name,p.recovery_time,p.reason,p.start_time,p.end_time,w.work_order_no from t_monitor m left join t_yw_point p on m.serial_number = p.serial_number and p.deleted = 0 left join sys_dept d on p.dept_id = d.dept_id and d.del_flag = 0 left join ( ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -316,4 +316,27 @@ INNER JOIN t_monitor m ON m.serial_number = wo.serial_number LEFT JOIN t_yw_unit yw ON yw.id = wo.unit_id AND yw.deleted = 0 </select> <select id="getRecoveryInfo" resultType="com.ycl.platform.domain.vo.WorkOrderVO"> SELECT wo.work_order_no, u.unit_name, u.unit_contact, u.unit_contact_phone, p.yw_person_name, GROUP_CONCAT(DISTINCT da.dict_label ORDER BY da.dict_label SEPARATOR ',') AS errorType FROM t_work_order wo INNER JOIN t_work_order_error_type et ON wo.work_order_no = et.work_order_no INNER JOIN t_yw_unit u ON wo.unit_id = u.id AND u.deleted = 0 INNER JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type' LEFT JOIN t_yw_people p ON wo.yw_people_id = p.id AND p.deleted = 0 WHERE wo.deleted = 0 GROUP BY wo.work_order_no, u.unit_name, u.unit_contact, u.unit_contact_phone, p.yw_person_name </select> </mapper>