소스 검색

根据不同业务的时间进行保存

Levi.u 4 년 전
부모
커밋
48edc5a432

+ 36 - 4
src/main/java/com/ebei/screen/common/util/ParkUtils.java

@@ -83,7 +83,10 @@ public class ParkUtils {
      * @return
      */
     public static List<Map> setDataField(Object obj, String pkId, String collectionName, boolean flag, String orderKey, Levi<String, String> other) {
-        LocalDateTime now = LocalDateTime.now();
+        return setDataField(obj, pkId, collectionName, flag, orderKey, other, LocalDateTime.now());
+    }
+
+    public static List<Map> setDataField(Object obj, String pkId, String collectionName, boolean flag, String orderKey, Levi<String, String> other, LocalDateTime now) {
         int hour = now.getHour();
         String format = LocalDateTimeUtil.format(now, DatePattern.PURE_DATE_PATTERN);
         Map dayMap = mongoTemplate.findById(pkId + "_" + format, Map.class, collectionName);
@@ -119,6 +122,7 @@ public class ParkUtils {
         return hourList;
     }
 
+
     /**
      * 获取封装后的结果集
      *
@@ -152,6 +156,20 @@ public class ParkUtils {
         return getInsertMap(params, null);
     }
 
+    /**
+     * 获取某批推送的时间点
+     *
+     * @param list    推送数据
+     * @param timeKey 时间字段
+     * @return
+     */
+    public static LocalDateTime getResultLocalDateTime(List<Map> list, String timeKey) {
+        if (CollUtil.isNotEmpty(list)) {
+            return LocalDateTimeUtil.parse(list.get(0).get(timeKey).toString(), DatePattern.NORM_DATETIME_PATTERN);
+        }
+        return LocalDateTime.now();
+    }
+
     /**
      * 初始化入场或出场数据
      *
@@ -164,7 +182,7 @@ public class ParkUtils {
         if (MapUtil.isNotEmpty(insertMap)) {
             insertMap.keySet().forEach(key -> {
                 // 按小时存入数据用于统计
-                ParkUtils.setDataField(insertMap.get(key), key, type.getCode(), false, type.getSort(), Levi.by("pno", pno).set("ts", params.get("ts")));
+                ParkUtils.setDataField(insertMap.get(key), key, type.getCode(), false, type.getSort(), Levi.by("pno", pno).set("ts", params.get("ts")), getResultLocalDateTime(insertMap.get(key), type.getSort()));
                 // 按车场存入数据 实时统计当前车场内所有车辆信息
                 Query query = new Query();
                 query.addCriteria(Criteria.where("_id").is(key));
@@ -288,6 +306,22 @@ public class ParkUtils {
             List<Map> maps = obj.getJSONArray("data").toJavaList(Map.class);
             maps.forEach(x -> result.set(x.get("parkCode").toString(), x.get("parkName").toString()));
         }
+        // 清理冗余的历史关联关系
+        JSONObject relevanceObj = mongoTemplate.findById("relevanceParkProject", JSONObject.class, "relevanceParkProject");
+        JSONObject relevanceData = relevanceObj != null ? relevanceObj.getJSONObject("data") : new JSONObject();
+        // 清除所有已经不存在的车场
+        Iterator<String> iterator = relevanceData.keySet().iterator();
+        while (iterator.hasNext()) {
+            String next = relevanceData.getString(iterator.next());
+            if (!result.containsKey(next)) {
+                iterator.remove();
+            }
+        }
+        Query q = new Query();
+        q.addCriteria(Criteria.where("_id").is("relevanceParkProject"));
+        Update u = new Update();
+        u.set("data", relevanceData);
+        mongoTemplate.upsert(q, u, "relevanceParkProject");
         Query query = new Query();
         query.addCriteria(Criteria.where("_id").is("parkCodeList"));
         Update update = new Update();
@@ -378,7 +412,6 @@ public class ParkUtils {
             List<Map> list = params.stream().filter(x -> x.get("carNumber").toString().startsWith("无")).collect(Collectors.toList());
             List<Map> maps = data.getJSONArray(ParkExceptionType.A.getCode()) == null ? new ArrayList<>() : data.getJSONArray(ParkExceptionType.A.getCode()).toJavaList(Map.class);
             maps.addAll(list);
-            log.info("异常处理之前:" + JSON.toJSONString(maps));
             List<Map> feesTime = ParkUtils.sortDateList(maps, ParkType.IN.getSort(), true);
             if (CollUtil.isNotEmpty(feesTime)) {
                 feesTime.forEach(x -> {
@@ -386,7 +419,6 @@ public class ParkUtils {
                     x.put("operator", x.get("inOperator"));
                 });
             }
-            log.info("异常处理之后:" + JSON.toJSONString(feesTime));
             data.put(ParkExceptionType.A.getCode(), feesTime);
             update.set("data", data);
             update.set(ParkExceptionType.A.getCode() + "Count", feesTime.size());

+ 3 - 3
src/main/java/com/ebei/screen/service/impl/ParkSystemServiceImpl.java

@@ -135,7 +135,7 @@ public class ParkSystemServiceImpl implements ParkSystemService {
         if (MapUtil.isNotEmpty(insertMap)) {
             insertMap.keySet().forEach(key -> {
                 // 按小时存入数据用于统计
-                ParkUtils.setDataField(insertMap.get(key), key, "parkOrder", false, "orderCreateTime", Levi.by("pno", pno).set("ts", params.get("ts")));
+                ParkUtils.setDataField(insertMap.get(key), key, "parkOrder", false, "orderCreateTime", Levi.by("pno", pno).set("ts", params.get("ts")), ParkUtils.getResultLocalDateTime(insertMap.get(key), "orderCreateTime"));
                 // 按车场存入数据 实时统计当前车场内所有车辆信息
                 List<Map> subList = insertMap.get(key);
                 Query query2 = new Query();
@@ -161,9 +161,9 @@ public class ParkSystemServiceImpl implements ParkSystemService {
     public void parkCharge(Map params) {
         Map<String, List<Map>> insertMap = ParkUtils.getInsertMap(params);
         String pno = params.get("pno").toString();
-        String format = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
         if (MapUtil.isNotEmpty(insertMap)) {
             insertMap.keySet().forEach(key -> {
+                String format = LocalDateTimeUtil.format(ParkUtils.getResultLocalDateTime(insertMap.get(key), "feesTime"), DatePattern.PURE_DATE_PATTERN);
                 Query query = new Query();
                 query.addCriteria(Criteria.where("_id").is(key + "_" + format));
                 Update update = new Update();
@@ -189,9 +189,9 @@ public class ParkSystemServiceImpl implements ParkSystemService {
     public void parkServiceInfo(Map params) {
         Map<String, List<Map>> insertMap = ParkUtils.getInsertMap(params);
         String pno = params.get("pno").toString();
-        String format = LocalDateTimeUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
         if (MapUtil.isNotEmpty(insertMap)) {
             insertMap.keySet().forEach(key -> {
+                String format = LocalDateTimeUtil.format(ParkUtils.getResultLocalDateTime(insertMap.get(key), "operateTime"), DatePattern.PURE_DATE_PATTERN);
                 Query query = new Query();
                 query.addCriteria(Criteria.where("_id").is(key + "_" + format));
                 Update update = new Update();

+ 6 - 6
src/main/resources/log4j2-spring.xml

@@ -15,9 +15,9 @@
             <PatternLayout pattern="${LOG_PATTERN}"/>
             <Policies>
                 <TimeBasedTriggeringPolicy interval="1"/>
-                <SizeBasedTriggeringPolicy size="10MB"/>
+                <SizeBasedTriggeringPolicy size="30MB"/>
             </Policies>
-            <DefaultRolloverStrategy max="15"/>
+            <DefaultRolloverStrategy max="100"/>
         </RollingFile>
         <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log"
                      filePattern="${FILE_PATH}/%d{yyyy-MM-dd}/WARN-%d{yyyy-MM-dd}_%i.log.gz">
@@ -25,9 +25,9 @@
             <PatternLayout pattern="${LOG_PATTERN}"/>
             <Policies>
                 <TimeBasedTriggeringPolicy interval="1"/>
-                <SizeBasedTriggeringPolicy size="10MB"/>
+                <SizeBasedTriggeringPolicy size="30MB"/>
             </Policies>
-            <DefaultRolloverStrategy max="15"/>
+            <DefaultRolloverStrategy max="100"/>
         </RollingFile>
         <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log"
                      filePattern="${FILE_PATH}/%d{yyyy-MM-dd}/ERROR-%d{yyyy-MM-dd}_%i.log.gz">
@@ -35,9 +35,9 @@
             <PatternLayout pattern="${LOG_PATTERN}"/>
             <Policies>
                 <TimeBasedTriggeringPolicy interval="1"/>
-                <SizeBasedTriggeringPolicy size="10MB"/>
+                <SizeBasedTriggeringPolicy size="30MB"/>
             </Policies>
-            <DefaultRolloverStrategy max="15"/>
+            <DefaultRolloverStrategy max="100"/>
         </RollingFile>
     </appenders>
     <loggers>