Преглед изворни кода

Merge tag '1.1.2' into develop

处理错误订单时间,卡余额解析错误
Zhenghanjv пре 11 месеци
родитељ
комит
3a520fc573

+ 3 - 0
sgs-middleware-v3/src/main/java/com/tokheim/sgs/v3/socket/convert/FuelMsgCardNoHandler.java

@@ -330,6 +330,9 @@ public class FuelMsgCardNoHandler {
 
                 Long balanceNo = ByteUtils.hexToDecimalLong(balanceBuffer.toString());
                 String balanceNo_ = String.valueOf(balanceNo);
+                while (balanceNo_.length() < 3) {
+                    balanceNo_ = "0"+balanceNo_;
+                }
                 StringBuffer bal = new StringBuffer(balanceNo_);
                 StringBuffer balanceNoInsert = null;
                 if (!bal.toString().equals("0")){

+ 8 - 2
sgs-middleware-v3/src/main/java/com/tokheim/sgs/v3/socket/handler/CloudInfoHandler.java

@@ -190,10 +190,16 @@ public class CloudInfoHandler {
                         return;
                     }
 
-                    //记录订单时间是否大于上一笔订单的时间,不是则为旧单或同一单,不上传
+                    //油机数据会发送0元订单,00000000 00:00:00挂枪时间的单,这种过滤掉
                     String orderTime = fuelMsg.get(DataConfig.OrderConfig.date) + " " + fuelMsg.get(DataConfig.OrderConfig.time);
-                    String perOrderTime = FuelMsgCardNoHandler.getPerOrderTime(stationIp, gunNo_);
                     Date orderTimeDate = DateTimeUtils.parse(orderTime);
+                    if ("0.00".equals(fuelMsg.get(DataConfig.OrderConfig.amount)) || (orderTimeDate != null && orderTimeDate.getTime() < 0)) {
+                        log.info("订单数据错误,金额:" + fuelMsg.get(DataConfig.OrderConfig.amount) + " 时间:" + orderTime);
+                        return;
+                    }
+
+                    //记录订单时间是否大于上一笔订单的时间,不是则为旧单或同一单,不上传
+                    String perOrderTime = FuelMsgCardNoHandler.getPerOrderTime(stationIp, gunNo_);
                     Date perOrderTimeDate = DateTimeUtils.parse(perOrderTime);
                     if (orderTimeDate != null && perOrderTimeDate != null) {
                         int intervalSeconds = DateTimeUtils.getIntervalSeconds(perOrderTimeDate,orderTimeDate);

+ 1 - 1
sgs-middleware-v3/src/main/resources/application.yml

@@ -30,7 +30,7 @@ logging:
 
 login.check: 0
 
-version: 1.1.1
+version: 1.1.2
 
 
 

+ 42 - 3
sgs-middleware-v3/src/test/java/com/tokheim/sgs/v3/HexUtilTest.java

@@ -1,11 +1,50 @@
 package com.tokheim.sgs.v3;
 
 import cn.hutool.core.util.HexUtil;
+import com.tokheim.sgs.v3.common.utils.ByteUtils;
+import com.tokheim.sgs.v3.common.utils.DateTimeUtils;
+
+import java.util.Date;
 
 public class HexUtilTest {
     public static void main(String[] args) {
-        String ipMsg = "31 30 2E 31 39 36 2E 31 39 32 2E 35 35 3A 34 39 35 31";
-        String ip = HexUtil.decodeHexStr(ipMsg);
-        System.out.println(ip);
+//        String ipMsg = "31 30 2E 31 39 36 2E 31 39 32 2E 35 35 3A 34 39 35 31";
+//        String ip = HexUtil.decodeHexStr(ipMsg);
+//        System.out.println(ip);
+//
+//        Date date1 = DateTimeUtils.parse("19710000 00:00:00");
+//        Date date2 = DateTimeUtils.parse("20240602 22:22:22");
+//        System.out.println("错误时间:"+date1.getTime());
+//        System.out.println("正常时间:"+date2.getTime());
+//        System.out.println(DateTimeUtils.getIntervalSeconds(date1,date2));
+
+
+        String[] balanceArr = new String[]{"00","00","00","64"};
+        StringBuffer balanceBuffer = new StringBuffer();
+        for (int i = 0; i < balanceArr.length; i++) {
+            // balanceBuffer.append(ByteUtils.hexToDecimal(balanceArr[i].toUpperCase()));
+            //balanceBuffer.append(new BigInteger(balanceArr[i], 16));
+            balanceBuffer.append(balanceArr[i]);
+
+        }
+
+        Long balanceNo = ByteUtils.hexToDecimalLong(balanceBuffer.toString());
+        System.out.println(balanceNo);
+        String balanceNo_ = String.valueOf(balanceNo);
+        //--
+        while (balanceNo_.length() < 3) {
+            balanceNo_ = "0"+balanceNo_;
+        }
+        System.out.println(balanceNo_);
+        //--
+        StringBuffer bal = new StringBuffer(balanceNo_);
+        StringBuffer balanceNoInsert = null;
+        if (!bal.toString().equals("0")){
+            balanceNoInsert = bal.insert(balanceNo_.length() - 2, ".");
+        }else {
+            balanceNoInsert = bal;
+        }
+        System.out.println(balanceNoInsert.toString());
+
     }
 }