| | |
| | | package com.ycl.calculate; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.ycl.platform.domain.entity.CheckIndexCar; |
| | | import com.ycl.platform.domain.entity.CheckIndexFace; |
| | | import com.ycl.platform.domain.entity.TMonitor; |
| | | import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; |
| | | import com.ycl.platform.mapper.CheckIndexCarMapper; |
| | | import com.ycl.platform.mapper.CheckIndexFaceMapper; |
| | | import com.ycl.platform.service.ICheckIndexCarService; |
| | | import com.ycl.platform.service.ICheckIndexFaceService; |
| | | import com.ycl.platform.service.ITMonitorService; |
| | | import com.ycl.platform.service.impl.CheckIndexFaceServiceImpl; |
| | | import com.ycl.system.mapper.SysConfigMapper; |
| | | import com.ycl.system.mapper.SysDeptMapper; |
| | | import constant.ApiConstants; |
| | | import constant.CheckConstants; |
| | | import constant.CheckSnapCountConstants; |
| | |
| | | * 更新或新增 |
| | | */ |
| | | @Component |
| | | public class FaceSiteOnlineCalculation implements CalculationStrategy<SnapshotDataMonitorResult> { |
| | | public class FaceSiteOnlineCalculation extends IndexCalculationServe implements CalculationStrategy<SnapshotDataMonitorResult> { |
| | | @Autowired |
| | | private CheckIndexFaceMapper checkIndexFaceMapper; |
| | | @Autowired |
| | |
| | | if (CollectionUtils.isEmpty(list)) { |
| | | return; |
| | | } |
| | | |
| | | Map<String, AreaStats> areaStatsMap = new HashMap<>(); |
| | | //返回以国标码为key的设备map |
| | | Map<String, TMonitor> monitorMap = monitorService.list(new QueryWrapper<TMonitor>() |
| | | .in("serial_number", list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList()))) |
| | | .stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); |
| | | //获取省厅国标码集合 |
| | | List<String> provinceIds = getProvince(); |
| | | |
| | | // TODO: 分省厅市局 需要补充集合数据 |
| | | List<String> provinceIds = new ArrayList<>(); // 这里需要根据点位补充 |
| | | Map<String, AreaStats> areaStatsMap = new HashMap<>(); |
| | | |
| | | for (SnapshotDataMonitorResult result : list) { |
| | | TMonitor monitor = monitorMap.get(result.getExternalIndexCode()); |
| | |
| | | checkIndexFace.setCreateTime(new Date()); |
| | | } |
| | | |
| | | // 点位在线率 |
| | | BigDecimal totalSitesBd = new BigDecimal(stats.totalSites); |
| | | BigDecimal offlineSitesBd = new BigDecimal(stats.offlineSites); |
| | | BigDecimal onlineSitesBd = totalSitesBd.subtract(offlineSitesBd); |
| | | checkIndexFace.setSiteOnline(onlineSitesBd.divide(totalSitesBd, 4, RoundingMode.HALF_UP)); |
| | | //调用点位在线计算方法 |
| | | Map<String, Object> siteOnlineParam = new HashMap<>(); |
| | | siteOnlineParam.put("totalSites", stats.totalSites); |
| | | siteOnlineParam.put("offlineSites", stats.offlineSites); |
| | | BigDecimal siteOnline = siteOnline(siteOnlineParam); |
| | | checkIndexFace.setSiteOnline(siteOnline); |
| | | //视图库对接稳定性 |
| | | BigDecimal avgCount = key.startsWith("Province_") ? cityCountAvg : countyCountAvg; |
| | | checkIndexFace.setViewConnectStability(new BigDecimal(stats.totalDataSum).divide(avgCount, 4, RoundingMode.HALF_UP)); |
| | | |
| | | Map<String, Object> viewConnectParam = new HashMap<>(); |
| | | viewConnectParam.put("totalDataSum", stats.totalDataSum); |
| | | viewConnectParam.put("avgCount", avgCount); |
| | | BigDecimal viewConnectStability = viewConnectStability(viewConnectParam); |
| | | checkIndexFace.setViewConnectStability(viewConnectStability); |
| | | return checkIndexFace; |
| | | } |
| | | } |