From 5cb926178a929e34ff4fa3a4c0f4c351f976d1e7 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期一, 29 七月 2024 11:48:20 +0800
Subject: [PATCH] 车辆点位在线接口

---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java |   68 +++++++++++++++++++++++++++-------
 1 files changed, 54 insertions(+), 14 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java
index 5741332..8fa5174 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java
@@ -1,24 +1,29 @@
 package com.ycl.platform.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.domain.entity.CalculateReport;
 import com.ycl.platform.domain.entity.CheckIndexCar;
 import com.ycl.platform.domain.entity.TMonitor;
 import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
+import com.ycl.platform.mapper.CalculateReportMapper;
 import com.ycl.platform.mapper.CheckIndexCarMapper;
 import com.ycl.platform.service.ICheckIndexCarService;
 import com.ycl.platform.service.ITMonitorService;
 import com.ycl.system.entity.SysDept;
 import com.ycl.system.mapper.SysDeptMapper;
 import constant.ApiConstants;
+import constant.CheckConstants;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import utils.DateUtils;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -29,7 +34,8 @@
  * @date 2024-04-29
  */
 @Service
-public class CheckIndexCarServiceImpl implements ICheckIndexCarService {
+@Slf4j
+public class CheckIndexCarServiceImpl extends ServiceImpl<CheckIndexCarMapper, CheckIndexCar> implements ICheckIndexCarService {
     @Autowired
     private CheckIndexCarMapper checkIndexCarMapper;
     @Autowired
@@ -103,12 +109,14 @@
     public int deleteCheckIndexCarById(Long id) {
         return checkIndexCarMapper.deleteCheckIndexCarById(id);
     }
-
     /**
      * 璁$畻杞﹁締鐐逛綅鍦ㄧ嚎鐜囥�佽鍥惧簱瀵规帴绋冲畾鎬�
-     *
+     *  鑾峰彇鍒嗙渷鍘呫�佸尯鍩熺殑map<k,v> k涓篸eptId鎴栬�匬rovince_deptId
+     *  寰幆map璁$畻鐐逛綅鍦ㄧ嚎鐜�
+     *  鏇存柊鎴栨柊澧�
      * @param list
      */
+    //TODO:瑙嗗浘搴撳鎺ョǔ瀹氭��
     @Override
     public void siteOnline(List<SnapshotDataMonitorResult> list) {
         //璁惧id
@@ -130,7 +138,7 @@
             deptIds.forEach(deptId -> areaStatsMap.put(deptId + "", new AreaStats()));
 
             //杞崲涓簃ap
-            //TODO锛氬垎鐪佸巺甯傚眬
+            //TODO锛氬垎鐪佸巺甯傚眬  闇�瑕佽ˉ鍏呴泦鍚堟暟鎹�
             List<String> provinceIds = new ArrayList<>();
             Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
             for (SnapshotDataMonitorResult result : list) {
@@ -158,23 +166,55 @@
                             provinceStats.offlineSites++;
                         } else {
                             //鍖哄煙鎬绘姄鎷嶉噺
-                            provinceStats.totalSites += result.getDataCount();
+                            provinceStats.totalDataSum += result.getDataCount();
                         }
                         //鍖哄煙鐐逛綅鎬绘暟
-                        provinceStats.totalDataSum++;
+                        provinceStats.totalSites++;
                         areaStatsMap.put("Province_" + monitor.getDeptId(), areaStats);
                     }
                 }
                 areaStatsMap.put(monitor.getDeptId() + "", areaStats);
             }
-
+            List<CheckIndexCar> checkIndexCarList = checkIndexCarMapper.selectToday(DateUtils.getDate());
+            List<CheckIndexCar> checkIndexCars = new ArrayList<>();
             areaStatsMap.forEach((k, v) -> {
-                if (k.startsWith("Province_")) {
-
+                if (v.totalSites == 0) {
+                    log.info("閮ㄩ棬id涓簕}鎬荤偣浣嶆暟涓�0", k);
+                } else {
+                    CheckIndexCar checkIndexCar = new CheckIndexCar();
+                    //鎵炬槸鍚﹀凡缁忓瓨鍦ㄦ暟鎹�
+                    Optional<CheckIndexCar> first;
+                    if (k.startsWith("Province_")) {
+                        //鐪佸巺
+                        String[] idArray = k.split("_");
+                        first = checkIndexCarList.stream().filter(item -> idArray[1].equals(item.getDeptId() + "") && CheckConstants.Examine_Tag_City.equals(item.getExamineTag()))
+                                .findFirst();
+                        checkIndexCar.setExamineTag(CheckConstants.Examine_Tag_City);
+                        checkIndexCar.setDeptId(Long.parseLong(idArray[1]));
+                    } else {
+                        //鍖哄幙
+                        first = checkIndexCarList.stream().filter(item -> k.equals(item.getDeptId() + "") && CheckConstants.Examine_Tag_County.equals(item.getExamineTag()))
+                                .findFirst();
+                        checkIndexCar.setExamineTag(CheckConstants.Examine_Tag_County);
+                        checkIndexCar.setDeptId(Long.parseLong(k));
+                    }
+                    checkIndexCar.setCreateTime(new Date());
+                    if (first.isPresent()) {
+                        checkIndexCar = first.get();
+                    }
+                    // 灏嗘暣鏁拌浆鎹负BigDecimal
+                    BigDecimal totalSitesBd = new BigDecimal(v.totalSites);
+                    BigDecimal offlineSitesBd = new BigDecimal(v.offlineSites);
+                    // 鎵ц璁$畻锛屼繚鐣欏洓浣嶅皬鏁板苟鍥涜垗浜斿叆
+                    BigDecimal onlineSitesBd = totalSitesBd.subtract(offlineSitesBd);
+                    BigDecimal siteOnline = onlineSitesBd.divide(totalSitesBd, 4, RoundingMode.HALF_UP);
+                    checkIndexCar.setSiteOnline(siteOnline);
+                    checkIndexCars.add(checkIndexCar);
                 }
             });
-            CheckIndexCar checkIndexCar = new CheckIndexCar();
 
+            saveOrUpdateBatch(checkIndexCars);
         }
     }
+
 }

--
Gitblit v1.8.0