Browse Source

Merge branch 'dev' of xusonglin/iov-sjjh-servicenode-supplier-vehicle into master

xusonglin 3 years ago
parent
commit
acce970655

+ 4 - 0
pom.xml

@@ -108,6 +108,10 @@
             <artifactId>httpcore</artifactId>
             <version>4.4.14</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-quartz</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 1 - 1
src/main/java/info/aspirecn/iov/sjjh/entity/VehicleHistoryPositionResponse.java

@@ -20,7 +20,7 @@ public class VehicleHistoryPositionResponse {
         private String positionTime;
         private String longitudeDegree;
         private String latitudeDegree;
-        private String speed;
+//        private String speed;
 //        private String directionOfVehicle;
         private String positionDescribe;
     }

+ 32 - 15
src/main/java/info/aspirecn/iov/sjjh/service/impl/VehicleServiceImpl.java

@@ -11,6 +11,7 @@ import info.aspirecn.iov.sjjh.constant.Constants;
 import info.aspirecn.iov.sjjh.entity.*;
 import info.aspirecn.iov.sjjh.enums.VehicleHistoryPositionQueryType;
 import info.aspirecn.iov.sjjh.service.VehicleService;
+import info.aspirecn.iov.sjjh.util.CopyOnWriteArraySetUtil;
 import info.aspirecn.iov.sjjh.util.DateUtil;
 import info.aspirecn.iov.sjjh.util.PostUtil;
 import info.aspirecn.iov.sjjh.util.ValidateParamUtil;
@@ -38,6 +39,10 @@ public class VehicleServiceImpl implements VehicleService {
 
     private OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
 
+    private boolean isPermit(String loginkUserId) {
+        return CopyOnWriteArraySetUtil.getInstance().add(loginkUserId + System.currentTimeMillis() / 1000);
+    }
+
     @Override
     public ChannelTypeHandleResponseObject vehicleHistoryPositionQuery(HttpServletRequest request, String customBody,
                                                                        int outTime, Integer type) {
@@ -46,6 +51,17 @@ public class VehicleServiceImpl implements VehicleService {
         ret.setCode(Constant.SUCCESS);
         String upstreamCode = "" + Constant.LOG_UPSTREAM_DEFAULT_RESPONSE_CODE;
         request.setAttribute(Constant.LOG_UPSTREAM_RESPONSE_CODE, upstreamCode);
+        String loginkUserId = request.getHeader("userid");
+        log.info("用户id:{}", loginkUserId);
+
+        if (!isPermit(loginkUserId)) {
+            ret.setResultCode(Constant.UN_MATCH_CODE);
+            ret.setResultBody("超出并发限制,无法核验");
+            ret.setResultDesc(Constant.QUERY_SUCCESS);
+            log.info("用户id:{}, 超出并发限制,无法核验", loginkUserId);
+            return ret;
+        }
+
         if (outTime <= Constants.PARA_ZERO) {
             outTime = Constant.HTTPCLIENT_CONNECTTIMEOUT;
         }
@@ -177,6 +193,7 @@ public class VehicleServiceImpl implements VehicleService {
             return Constant.FAIL;
         }
         if (response.getStatusCode() == Constants.STATUS_CODE_200) {
+            log.info("responseContext:{}", response.getBody());
             VehicleHistoryPositionResponse positionResponse = JSON.toJavaObject(JSON.parseObject(response.getBody()),
                     VehicleHistoryPositionResponse.class);
             upstreamCode = positionResponse.getResultCode();
@@ -299,7 +316,7 @@ public class VehicleServiceImpl implements VehicleService {
             ret.setResultDesc(Constant.QUERY_SUCCESS);
             return upstreamCode;
         }
-        if (errorList.size() == 1 && emptyList.size() ==1) {
+        if (errorList.size() == 1 && emptyList.size() == 1) {
             errorMsg = "数据源" + org.apache.commons.lang3.StringUtils.join(emptyList, ",") + "为空,";
             errorMsg += org.apache.commons.lang3.StringUtils.join(errorList, ",") + "为不一致";
             ret.setResultCode(Constant.UN_MATCH_CODE);
@@ -697,16 +714,16 @@ public class VehicleServiceImpl implements VehicleService {
             } else {
                 // 不一致,返回具体不一致项
                 String errorInfo = responseObject.getData().getVerifyResultSet().get(0).getErrorInfo();
-                if (errorInfo.equals(Constants.UN_MATCH_VEHICLE_NUMBER)) {
+                if (errorInfo.contains(Constants.UN_MATCH_VEHICLE_NUMBER)) {
                     errorList.add("vehicleNumber");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_ROAD_TRANSPORT_CERTIFICATE_NUMBER)) {
+                if (errorInfo.contains(Constants.UN_MATCH_ROAD_TRANSPORT_CERTIFICATE_NUMBER)) {
                     errorList.add("roadTransportCertificateNumber");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_CERTIFICATE_VALID_PERIOD_FROM)) {
+                if (errorInfo.contains(Constants.UN_MATCH_CERTIFICATE_VALID_PERIOD_FROM)) {
                     errorList.add("roadTransportCertificateValidPeriodFrom");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_CERTIFICATE_VALID_PERIOD_TO)) {
+                if (errorInfo.contains(Constants.UN_MATCH_CERTIFICATE_VALID_PERIOD_TO)) {
                     errorList.add("roadTransportCertificateValidPeriodTo");
                 }
                 ret.setResultCode(Constant.UN_MATCH_CODE);
@@ -819,22 +836,22 @@ public class VehicleServiceImpl implements VehicleService {
             } else {
                 // 不一致,返回具体不一致项
                 String errorInfo = responseObject.getData().getVerifyResultSet().get(0).getErrorInfo();
-                if (errorInfo.equals(Constants.UN_MATCH_DRIVER_NAME)) {
+                if (errorInfo.contains(Constants.UN_MATCH_DRIVER_NAME)) {
                     errorList.add("driverName");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_DRIVING_LICENSE)) {
+                if (errorInfo.contains(Constants.UN_MATCH_DRIVING_LICENSE)) {
                     errorList.add("drivingLicense");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_PROVINCE_CODE)) {
+                if (errorInfo.contains(Constants.UN_MATCH_PROVINCE_CODE)) {
                     errorList.add("provinceCode");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE)) {
+                if (errorInfo.contains(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE)) {
                     errorList.add("qualificationCertificate");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE_FROM)) {
+                if (errorInfo.contains(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE_FROM)) {
                     errorList.add("qualificationCertificateValidPeriodFrom");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE_TO)) {
+                if (errorInfo.contains(Constants.UN_MATCH_QUALIFICATION_CERTIFICATE_TO)) {
                     errorList.add("qualificationCertificateValidPeriodTo");
                 }
                 ret.setResultCode(Constant.UN_MATCH_CODE);
@@ -947,16 +964,16 @@ public class VehicleServiceImpl implements VehicleService {
             } else {
                 // 不一致,返回具体不一致项
                 String errorInfo = responseObject.getData().getVerifyResultSet().get(0).getErrorInfo();
-                if (errorInfo.equals(Constants.UN_MATCH_CARRIER)) {
+                if (errorInfo.contains(Constants.UN_MATCH_CARRIER)) {
                     errorList.add("carrier");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_PERMIT_NUMBER)) {
+                if (errorInfo.contains(Constants.UN_MATCH_PERMIT_NUMBER)) {
                     errorList.add("permitNumber");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_PERMIT_VALID_PERIOD_FROM)) {
+                if (errorInfo.contains(Constants.UN_MATCH_PERMIT_VALID_PERIOD_FROM)) {
                     errorList.add("permitValidPeriodFrom");
                 }
-                if (errorInfo.equals(Constants.UN_MATCH_PERMIT_VALID_PERIOD_TO)) {
+                if (errorInfo.contains(Constants.UN_MATCH_PERMIT_VALID_PERIOD_TO)) {
                     errorList.add("permitValidPeriodTo");
                 }
                 ret.setResultCode(Constant.UN_MATCH_CODE);

+ 18 - 0
src/main/java/info/aspirecn/iov/sjjh/task/CleanSetTask.java

@@ -0,0 +1,18 @@
+package info.aspirecn.iov.sjjh.task;
+
+import info.aspirecn.iov.sjjh.util.CopyOnWriteArraySetUtil;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author xusonglin
+ * @version V1.0
+ **/
+@Component
+public class CleanSetTask {
+
+    @Scheduled(cron = "* * * * * ?", zone = "Asia/Shanghai")
+    public void remove() {
+        CopyOnWriteArraySetUtil.clean();
+    }
+}

+ 24 - 0
src/main/java/info/aspirecn/iov/sjjh/util/CopyOnWriteArraySetUtil.java

@@ -0,0 +1,24 @@
+package info.aspirecn.iov.sjjh.util;
+
+import java.util.concurrent.CopyOnWriteArraySet;
+
+/**
+ * @author xusonglin
+ * @version V1.0
+ **/
+public enum CopyOnWriteArraySetUtil {
+    INSTANCE;
+    public static CopyOnWriteArraySet<String> copyOnWriteArraySet = new CopyOnWriteArraySet<>();
+    public boolean add(String key) {
+        return copyOnWriteArraySet.add(key);
+    }
+
+    public static CopyOnWriteArraySet<String> getInstance() {
+        return copyOnWriteArraySet;
+    }
+
+    public static CopyOnWriteArraySet<String> clean() {
+        copyOnWriteArraySet.clear();
+        return copyOnWriteArraySet;
+    }
+}

+ 0 - 1
src/main/java/info/aspirecn/iov/sjjh/util/HttpUtil.java

@@ -378,7 +378,6 @@ public class HttpUtil {
         headers.put(SystemHeader.X_CA_KEY, appKey);
         headers.put(SystemHeader.X_CA_SIGNATURE,
                 SignUtil.sign(appSecret, method, path, headers, querys, bodys, signHeaderPrefixList));
-        System.out.println("Header: " + JSON.toJSONString(headers));
         return headers;
     }