package com.ycl.calculate; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ycl.platform.domain.entity.TMonitor; import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; import com.ycl.platform.service.ITMonitorService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * 计算公式 */ @Component public class IndexCalculationServe { @Autowired private ITMonitorService monitorService; //点位在线率 public BigDecimal siteOnline(Map param) { BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites")); BigDecimal offlineSites = new BigDecimal((Integer) param.get("offlineSites")); BigDecimal onlineSites = totalSites.subtract(offlineSites); return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP); } //视图库对接稳定性 public BigDecimal viewConnectStability(Map param) { BigDecimal totalDataSum = new BigDecimal((Integer) param.get("totalDataSum")); BigDecimal avgCount = new BigDecimal((Integer) param.get("avgCount")); return avgCount.divide(totalDataSum, 4, RoundingMode.HALF_UP); } //标注正确率 public BigDecimal infoAccuracy(Map param) { BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites")); BigDecimal qualifySiteCount = new BigDecimal((Integer) param.get("qualifySite")); return qualifySiteCount.divide(totalSitesCount, 4, RoundingMode.HALF_UP); } //数据上传及时性 public BigDecimal snapshopDelay(Map param) { BigDecimal totalCount = new BigDecimal((Integer) param.get("totalCount")); BigDecimal delayCount1 = new BigDecimal((Integer) param.get("delayCount1")); BigDecimal delayCount2 = new BigDecimal((Integer) param.get("delayCount2")); BigDecimal delayCount3 = new BigDecimal((Integer) param.get("delayCount3")); BigDecimal result = delayCount1.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(BigDecimal.ONE) .add(delayCount2.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.8"))) .add(delayCount3.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.6"))); return result.setScale(4, RoundingMode.HALF_UP); } //返回省厅国标码集合 public List getProvince() { // TODO: 分省厅市局 需要补充集合数据 List list = new ArrayList<>(); return list; } }