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/ICheckIndexCarService.java         |    3 +
 ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexCarMapper.java            |   20 ++++++----
 ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml                    |   16 +++++---
 ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java |   68 +++++++++++++++++++++++++++-------
 4 files changed, 78 insertions(+), 29 deletions(-)

diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexCarMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexCarMapper.java
index 7e50c1c..fc7401b 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexCarMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CheckIndexCarMapper.java
@@ -1,20 +1,21 @@
 package com.ycl.platform.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.CheckIndexCar;
 
 import java.util.List;
 
 /**
  * 杞﹁締鎸囨爣姒傜巼鏁版嵁Mapper鎺ュ彛
- * 
+ *
  * @author ruoyi
  * @date 2024-04-29
  */
-public interface CheckIndexCarMapper 
+public interface CheckIndexCarMapper extends BaseMapper<CheckIndexCar>
 {
     /**
      * 鏌ヨ杞﹁締鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 杞﹁締鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 杞﹁締鎸囨爣姒傜巼鏁版嵁
      */
@@ -22,7 +23,7 @@
 
     /**
      * 鏌ヨ杞﹁締鎸囨爣姒傜巼鏁版嵁鍒楄〃
-     * 
+     *
      * @param checkIndexCar 杞﹁締鎸囨爣姒傜巼鏁版嵁
      * @return 杞﹁締鎸囨爣姒傜巼鏁版嵁闆嗗悎
      */
@@ -30,7 +31,7 @@
 
     /**
      * 鏂板杞﹁締鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexCar 杞﹁締鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -38,7 +39,7 @@
 
     /**
      * 淇敼杞﹁締鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param checkIndexCar 杞﹁締鎸囨爣姒傜巼鏁版嵁
      * @return 缁撴灉
      */
@@ -46,7 +47,7 @@
 
     /**
      * 鍒犻櫎杞﹁締鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param id 杞﹁締鎸囨爣姒傜巼鏁版嵁涓婚敭
      * @return 缁撴灉
      */
@@ -54,9 +55,12 @@
 
     /**
      * 鎵归噺鍒犻櫎杞﹁締鎸囨爣姒傜巼鏁版嵁
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
      * @return 缁撴灉
      */
     public int deleteCheckIndexCarByIds(Long[] ids);
+
+    public List<CheckIndexCar> selectToday(String today);
+
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java
index 2f53b66..f5cb235 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java
@@ -1,5 +1,6 @@
 package com.ycl.platform.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.ycl.platform.domain.entity.CheckIndexCar;
 import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
 
@@ -11,7 +12,7 @@
  * @author ruoyi
  * @date 2024-04-29
  */
-public interface ICheckIndexCarService
+public interface ICheckIndexCarService extends IService<CheckIndexCar>
 {
     /**
      * 鏌ヨ杞﹁締鎸囨爣姒傜巼鏁版嵁
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);
         }
     }
+
 }
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml
index 5281b89..3e251b2 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CheckIndexCarMapper.xml
@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ycl.platform.mapper.CheckIndexCarMapper">
-    
+
     <resultMap type="com.ycl.platform.domain.entity.CheckIndexCar" id="CheckIndexCarResult">
         <result property="id"    column="id"    />
         <result property="deptId"    column="dept_id"    />
@@ -28,7 +28,7 @@
     <select id="selectCheckIndexCarList"  resultMap="CheckIndexCarResult">
         select tcic.*,sd.dept_name
         from t_check_index_car tcic left join sys_dept sd on tcic.dept_id = sd.dept_id
-        <where>  
+        <where>
             <if test="deptId != null "> and tcic.dept_id = #{deptId}</if>
             <if test="examineTag != null "> and examine_tag = #{examineTag}</if>
             <if test="date != null "> and  date_format(tcic.create_time,'%Y-%m') = #{date}</if>
@@ -50,12 +50,12 @@
             </if>
         </where>
     </select>
-    
+
     <select id="selectCheckIndexCarById" resultMap="CheckIndexCarResult">
         <include refid="selectCheckIndexCarVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertCheckIndexCar"  useGeneratedKeys="true" keyProperty="id">
         insert into t_check_index_car
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -115,9 +115,13 @@
     </delete>
 
     <delete id="deleteCheckIndexCarByIds">
-        delete from t_check_index_car where id in 
+        delete from t_check_index_car where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
\ No newline at end of file
+
+    <select id="selectToday">
+        select * from t_check_index_car where DATE(create_time) = #{today}
+    </select>
+</mapper>

--
Gitblit v1.8.0