瀏覽代碼

增加云燕车辆历史轨迹核验接口(装卸货核验)

15810770710@163.com 4 年之前
父節點
當前提交
af406260f7

+ 53 - 3
pom.xml

@@ -112,6 +112,11 @@
 			<artifactId>jjwt</artifactId>
 			<version>0.9.1</version>
 		</dependency>
+		<dependency>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>1.2.66</version>
+		</dependency>
 	</dependencies>
 	<dependencyManagement>
 		<dependencies>
@@ -126,6 +131,7 @@
 	</dependencyManagement>
 	<build>
 		<plugins>
+
 			<!--设置应用 Main 参数启动依赖查找的地址指向外部 lib 文件夹-->
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
@@ -139,7 +145,7 @@
 					</archive>
 				</configuration>
 			</plugin>
-			<!--设置 SpringBoot 打包插件不包含任何 Jar 依赖包-->
+<!--			设置 SpringBoot 打包插件不包含任何 Jar 依赖包-->
 			<plugin>
 				<groupId>org.springframework.boot</groupId>
 				<artifactId>spring-boot-maven-plugin</artifactId>
@@ -156,7 +162,7 @@
 					</includes>
 				</configuration>
 			</plugin>
-			<!--设置将 lib 拷贝到应用 Jar 外面-->
+<!--			设置将 lib 拷贝到应用 Jar 外面-->
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-dependency-plugin</artifactId>
@@ -191,7 +197,51 @@
 					</execution>
 				</executions>
 			</plugin>
+
+<!--			<plugin>-->
+<!--				<groupId>org.springframework.boot</groupId>-->
+<!--				<artifactId>spring-boot-maven-plugin</artifactId>-->
+<!--			</plugin>-->
+
+<!--			<plugin>-->
+<!--				<groupId>org.apache.maven.plugins</groupId>-->
+<!--				<artifactId>maven-jar-plugin</artifactId>-->
+<!--			</plugin>-->
+<!--			<plugin>-->
+<!--				<groupId>org.apache.maven.plugins</groupId>-->
+<!--				<artifactId>maven-dependency-plugin</artifactId>-->
+<!--			</plugin>-->
+<!--			<plugin>-->
+<!--				<groupId>org.apache.maven.plugins</groupId>-->
+<!--				<artifactId>maven-resources-plugin</artifactId>-->
+<!--				<executions>-->
+<!--					<execution>-->
+<!--						<id>default-resources</id>-->
+<!--						<phase>validate</phase>-->
+<!--						<goals>-->
+<!--							<goal>copy-resources</goal>-->
+<!--						</goals>-->
+<!--						<configuration>-->
+<!--							<outputDirectory>target/classes</outputDirectory>-->
+<!--							<useDefaultDelimiters>false</useDefaultDelimiters>-->
+<!--							<delimiters>-->
+<!--								<delimiter>@</delimiter>-->
+<!--							</delimiters>-->
+<!--							<resources>-->
+<!--								<resource>-->
+<!--									<directory>src/main/resources</directory>-->
+<!--									<filtering>true</filtering>-->
+<!--									<includes>-->
+<!--										<include>**</include>-->
+<!--									</includes>-->
+<!--								</resource>-->
+
+<!--							</resources>-->
+<!--						</configuration>-->
+<!--					</execution>-->
+<!--				</executions>-->
+<!--			</plugin>-->
 		</plugins>
 	</build>
 
-</project>
+</project>

+ 6 - 2
src/main/java/info/aspirecn/iov/yysj/check/info/CheckInfo.java

@@ -50,7 +50,7 @@ public class CheckInfo {
 
 	/**
 	 * 动态更新路由策略 经测试,可以加策略,但是删除需要重启
-	 * 
+	 *
 	 * @return
 	 */
 	@RefreshScope
@@ -103,4 +103,8 @@ public class CheckInfo {
 		return new RoadTransportFilter();
 	}
 
-}
+	@Bean
+	public VehicleTrajectoryFilter addVehicleTrajectoryFilter() {
+		return new VehicleTrajectoryFilter();
+	}
+}

+ 18 - 0
src/main/java/info/aspirecn/iov/yysj/check/info/common/CommonUtil.java

@@ -3,6 +3,7 @@ package info.aspirecn.iov.yysj.check.info.common;
 import com.netflix.zuul.context.RequestContext;
 import info.aspirecn.cloud.yysj.commons.lang.Constants;
 import info.aspirecn.iov.yysj.check.info.entity.RequestBody;
+import info.aspirecn.iov.yysj.paramtransfer.inter.common.Constant;
 import lombok.extern.slf4j.Slf4j;
 
 import javax.servlet.http.HttpServletRequest;
@@ -80,6 +81,17 @@ public class CommonUtil {
        }
         return false;
     }
+
+    // 校验车辆轨迹url
+    public static boolean checkVehicleTrajectoryUrl(String url) {
+        Constants.VehicleTrajectoryUrl[] requestUrls = Constants.VehicleTrajectoryUrl.values();
+        for(Constants.VehicleTrajectoryUrl requestUrl : requestUrls){
+            if(requestUrl.getValue().equals(url)){
+                return true;
+            }
+        }
+        return false;
+    }
     //获取所有请求url
     public static boolean checkAllUrl(String url){
         Constants.RequestUrl[] requestUrls = Constants.RequestUrl.values();
@@ -95,6 +107,12 @@ public class CommonUtil {
                 return true;
             }
         }
+        Constants.VehicleTrajectoryUrl[] vehicleTrajectoryUrlUrls = Constants.VehicleTrajectoryUrl.values();
+        for(Constants.VehicleTrajectoryUrl requestUrl : vehicleTrajectoryUrlUrls){
+            if(requestUrl.getValue().equals(url)){
+                return true;
+            }
+        }
         return false;
     }
 

+ 131 - 13
src/main/java/info/aspirecn/iov/yysj/check/info/common/TransferParam.java

@@ -1,7 +1,9 @@
 package info.aspirecn.iov.yysj.check.info.common;
 
 import info.aspirecn.cloud.yysj.commons.lang.Constants;
+import info.aspirecn.iov.yysj.paramtransfer.inter.common.Constant;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -82,6 +84,9 @@ public class TransferParam {
 		if ("13".equals(productId)) {// 司机上下线
 
 			customBody = sjsxx(paramMap, emptyList, errorList);
+		}if ("15".equals(productId)) {//装卸货点车辆定位验证
+
+			customBody=zxhdwyz(paramMap, emptyList, errorList);
 		} else if (Constants.OtherRquestUrl.IDLENTITYVERIFICATION.getValue().equals(productId)) {// 身份核验
 			String req_id = paramMap.get(Constants.req_id);
 			if (StringUtils.isEmpty(req_id)) {
@@ -133,7 +138,7 @@ public class TransferParam {
 			}else if(vehicleNumberPattern.matcher(vehicleNumber).matches()){
 				errorList.add(Constants.carck_vehicleNumber);
 			}
-            
+
             String colorCode=paramMap.get(Constants.carck_colorCode);
             if(StringUtils.isEmpty(colorCode)) {
                 emptyList.add(Constants.carck_colorCode);
@@ -141,7 +146,7 @@ public class TransferParam {
 				errorList.add(Constants.carck_colorCode);
 			}
             String certificateNumber=paramMap.get(Constants.carck_certificateNumber);
-            
+
             String vin=paramMap.get(Constants.carck_vin);
             if(StringUtils.isEmpty(certificateNumber)&&StringUtils.isEmpty(vin)) {
             	  emptyList.add(Constants.carck_certificateNumber);
@@ -220,11 +225,11 @@ public class TransferParam {
 
 
             String provinceCode=paramMap.get(Constants.perck_provinceCode);
-            
-            
+
+
             if(StringUtils.isEmpty(provinceCode)) {
             	  emptyList.add(Constants.perck_provinceCode);
-       
+
             }else if(provinceCode.replace(" ","").length()<1||provinceCode.length()>6||!checkProvince(provinceCode)){
 				errorList.add(Constants.perck_provinceCode);
 			}
@@ -245,21 +250,21 @@ public class TransferParam {
 				}
 
 			}
-            
+
             String permitNumber=paramMap.get(Constants.comck_permitNumber);
-         
+
             if(StringUtils.isEmpty(permitNumber)) {
                 emptyList.add(Constants.comck_permitNumber);
- 
+
             }else if(permitNumber.replace(" ","").length()<1||permitNumber.length()>50||allSpecialPattern.matcher(permitNumber).matches()){
 				errorList.add(Constants.comck_permitNumber);
 			}
             String provinceCode=paramMap.get(Constants.comck_provinceCode);
-            
-            
+
+
             if(StringUtils.isEmpty(provinceCode)) {
             	  emptyList.add(Constants.comck_provinceCode);
-       
+
             }else if(provinceCode.replace(" ","").length()<1||provinceCode.length()>6||!checkProvince(provinceCode)){
 				errorList.add(Constants.comck_provinceCode);
 			}
@@ -810,6 +815,119 @@ public class TransferParam {
 
 	}
 
+	//校验项十五	装卸货点车辆定位验证
+	public Map<String,Object> zxhdwyz(Map<String,String> requestMap, Set<String> emptyList,Set<String> errorList) throws IOException, ResultCodeException {
+		// 车牌号
+		String vehicleNumber = requestMap.get(Constants.bill_vehicleNumber);
+		// 车牌颜色
+		String vehiclePlateColorCode = requestMap.get(Constants.bill_vehiclePlateColorCode);
+		// 收货地址的国家行政区划代码
+		String receiptCountrySubdivisionCode = requestMap.get(Constants.bill_receipt_country_subdivision_code);
+		// 收货日期时间
+		String goodsReceiptDateTime = requestMap.get(Constants.bill_goodsReceiptDateTime);
+		// 装货地址的国家行政区划代码
+		String loadingCountrySubdivisionCode = requestMap.get(Constants.bill_loading_country_subdivision_code);
+		// 发货日期时间
+		String despatchActualDateTime = requestMap.get(Constants.bill_despatchActualDateTime);
+		// 运单号
+		String shippingNoteNumber = requestMap.get(Constants.bill_shipping_note_number);
+		// 装货地址
+		String placeOfLoading = requestMap.get(Constants.bill_place_of_loading);
+		// 收货地址
+		String goodsReceiptPlace = requestMap.get(Constants.bill_goods_receipt_place);
+		// 核验时间半径
+		String verificationTimeRadius = requestMap.get(Constants.bill_verification_time_radius);
+
+		if (vehicleNumber == null || StringUtils.isEmpty(vehicleNumber)) {
+			emptyList.add(Constants.bill_vehicleNumber);
+		}
+		if (!checkPlateNumber(vehicleNumber)) {
+			errorList.add(Constants.bill_vehicleNumber);
+		}
+
+		if (vehiclePlateColorCode == null || StringUtils.isEmpty(vehiclePlateColorCode)) {
+			emptyList.add(Constants.bill_vehiclePlateColorCode);
+		}
+		if (!checkPlateColor(vehiclePlateColorCode)) {
+			errorList.add(Constants.bill_vehiclePlateColorCode);
+		}
+
+		if (receiptCountrySubdivisionCode == null || StringUtils.isEmpty(receiptCountrySubdivisionCode)) {
+			emptyList.add(Constants.bill_receipt_country_subdivision_code);
+		}
+		if (!checkNumber(receiptCountrySubdivisionCode)) {
+			errorList.add(Constants.bill_receipt_country_subdivision_code);
+		}
+
+		if (goodsReceiptDateTime == null || StringUtils.isEmpty(goodsReceiptDateTime)) {
+			emptyList.add(Constants.bill_goodsReceiptDateTime);
+		}
+		if(!checkDateTime(goodsReceiptDateTime,"yyyyMMddHHmmss")){
+			errorList.add(Constants.bill_goodsReceiptDateTime);
+		}
+
+		if (loadingCountrySubdivisionCode == null || StringUtils.isEmpty(loadingCountrySubdivisionCode)) {
+			emptyList.add(Constants.bill_loading_country_subdivision_code);
+		}
+		if (!checkNumber(loadingCountrySubdivisionCode)) {
+			errorList.add(Constants.bill_loading_country_subdivision_code);
+		}
+
+		if (despatchActualDateTime == null || StringUtils.isEmpty(despatchActualDateTime)) {
+			emptyList.add(Constants.bill_despatchActualDateTime);
+		}
+		if(!checkDateTime(despatchActualDateTime,"yyyyMMddHHmmss")){
+			errorList.add(Constants.bill_despatchActualDateTime);
+		}
+
+		if (shippingNoteNumber == null || StringUtils.isEmpty(shippingNoteNumber)) {
+			emptyList.add(Constants.bill_shipping_note_number);
+		}
+
+		if (placeOfLoading == null || StringUtils.isEmpty(placeOfLoading)) {
+			emptyList.add(Constants.bill_place_of_loading);
+		}
+
+		if (goodsReceiptPlace == null || StringUtils.isEmpty(goodsReceiptPlace)) {
+			emptyList.add(Constants.bill_goods_receipt_place);
+		}
+
+		if (verificationTimeRadius == null || StringUtils.isEmpty(verificationTimeRadius)) {
+			emptyList.add(Constants.bill_verification_time_radius);
+		}
+
+		Map<String, Object> resultMap = new HashMap<>();
+		if(emptyList.size() == 0 && errorList.size() == 0) {
+			resultMap.put(Constants.zxh_vehicleNumber,vehicleNumber);
+			resultMap.put(Constants.zxh_vehiclePlateColorCode,vehiclePlateColorCode);
+			resultMap.put(Constants.zxh_receiptCountrySubdivisionCode, receiptCountrySubdivisionCode);
+			resultMap.put(Constants.zxh_goodsReceiptDateTime, goodsReceiptDateTime);
+			resultMap.put(Constants.zxh_loadingCountrySubdivisionCode, loadingCountrySubdivisionCode);
+			resultMap.put(Constants.zxh_despatchActualDateTime, despatchActualDateTime);
+			return resultMap;
+		}
+		return null;
+
+	}
+
+	public static boolean checkPlateColor(String plateColor) {
+		String[] vehiclePlateColorCodeArr = {"1", "2", "3", "4", "5", "9", "91", "92", "93", "94"};
+		return ArrayUtils.contains(vehiclePlateColorCodeArr, plateColor);
+	}
+
+	public static boolean checkNumber(String number) {
+		String NUMBER_REGEX = "^(0|[1-9]\\d*)$";
+		Pattern numberPattern = Pattern.compile(NUMBER_REGEX);
+		return numberPattern.matcher(number).matches();
+	}
+
+	public static boolean checkPlateNumber(String plateNumber) {
+		String CAR_NUMER_REGEX = "^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}" +
+				"[警京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{0,1}[A-Z0-9]{4,6}[A-Z0-9挂学警港澳]{1}$";
+		Pattern pattern = Pattern.compile(CAR_NUMER_REGEX);
+		return pattern.matcher(plateNumber).matches();
+	}
+
 	public static boolean checkDateTime(String str, String pattern) {
 		DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
 		boolean flag = true;
@@ -892,10 +1010,10 @@ public class TransferParam {
 				/*
 				 * if (Constants.clyyyz_periodStartDate.equals(param)) {
 				 * result.add(Constants.bill_permitValidPeriodFrom);
-				 * 
+				 *
 				 * } if (Constants.clyyyz_periodEndDate.equals(param)) {
 				 * result.add(Constants.bill_permitValidPeriodTo);
-				 * 
+				 *
 				 * }
 				 */
 				if (Constants.qyyyxkz_name.equals(param)) {

+ 15 - 13
src/main/java/info/aspirecn/iov/yysj/check/info/common/ZuulHelper.java

@@ -50,7 +50,7 @@ public class ZuulHelper {
 	@Autowired
 	Property property;
 	public Boolean hasProcessFlag(RequestContext requestContext) {
-        
+
         Boolean ret = (Boolean)requestContext.get("process");
         if( ret != null )
         {
@@ -61,7 +61,7 @@ public class ZuulHelper {
             return Boolean.FALSE;
         }
     }
-	
+
 	public void responseHandle(Object responseObject, RequestContext requestContext, boolean isContinue) throws JsonProcessingException{
 
 			String json = JSON.toJSONString(responseObject);
@@ -138,30 +138,30 @@ public class ZuulHelper {
 			}
 		}
 	}
-	
-	
+
+
 	//处理信用和云雁返回参数不一致
-	
+
 	public  Object transResponse(String url,String body) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ClassNotFoundException, InstantiationException {
-		
-		
+
+
 
 		if(Constants.RoadTransportUrl.CarRoadTransport.getValue().equals(url)) {
 			CarRoadTransportObject carRoadTransportObject = getCarRoadTransportObject(body);
 			return carRoadTransportObject;
-	
+
 		}else if(Constants.RoadTransportUrl.PersonRoadTransport.getValue().equals(url)) {
 			PersonRoadTransportObject personRoadTransportObject = getPersonRoadTransportObject(body);
 			return personRoadTransportObject;
-			
+
 		}else if(Constants.RoadTransportUrl.CompanyRoadTransport.getValue().equals(url)) {
 			CompanyRoadTransportObject companyRoadTransportObject = getCompanyRoadTransportObject(body);
 			return companyRoadTransportObject;
-			
-			
+
+
 		}
-		 
-		
+
+
 	return null;
 	}
 
@@ -382,6 +382,8 @@ public class ZuulHelper {
 				return 11;
 			}else if(Constants.RoadTransportUrl.CompanyRoadTransport.getValue().equals(url)){
 				return 12;
+			}else if (Constants.VehicleTrajectoryUrl.HISTORY_POSITION.getValue().equals(url)) {
+				return 13;
 			}
 
 		return 0;

+ 25 - 0
src/main/java/info/aspirecn/iov/yysj/check/info/entity/VehicleTrajectoryObject.java

@@ -0,0 +1,25 @@
+package info.aspirecn.iov.yysj.check.info.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author xusonglin
+ * @version V1.0
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class VehicleTrajectoryObject {
+    private VerifyResultSet verifyResultSet;
+    @Data
+    public static class VerifyResultSet{
+        private Errorresult errorResult;
+        private Object correctResult;
+        @Data
+        public static class Errorresult{
+            private String errorInfo;
+        }
+    }
+}

+ 174 - 0
src/main/java/info/aspirecn/iov/yysj/check/info/pre/VehicleTrajectoryFilter.java

@@ -0,0 +1,174 @@
+package info.aspirecn.iov.yysj.check.info.pre;
+
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
+import info.aspirecn.cloud.yysj.commons.lang.BillItemResult;
+import info.aspirecn.cloud.yysj.commons.lang.Constants;
+import info.aspirecn.cloud.yysj.commons.lang.ProductCheckRequest;
+import info.aspirecn.iov.yysj.check.info.common.*;
+import info.aspirecn.iov.yysj.check.info.entity.BillResultObject;
+import info.aspirecn.iov.yysj.check.info.entity.CheckDetailLogObject;
+import info.aspirecn.iov.yysj.check.info.entity.VehicleTrajectoryObject;
+import info.aspirecn.iov.yysj.paramtransfer.inter.YysjUserActionInterface;
+import info.aspirecn.iov.yysj.paramtransfer.inter.vo.YysjProduct;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+/**
+ * @author xusonglin
+ * @version V1.0
+ **/
+@Slf4j
+public class VehicleTrajectoryFilter extends ZuulFilter {
+    @Autowired
+    private ZuulHelper helper;
+    @Autowired
+    private YysjUserActionInterface yysjUserActionInterface;
+    @Autowired
+    private ChannelRibbonHandle channelRibbonHandle;
+    @Autowired
+    private TransferParam transferParam;
+    @Autowired
+    private ObjectMapper mapper;
+
+    @Override
+    public boolean shouldFilter() {
+        RequestContext requestContext = RequestContext.getCurrentContext();
+        String url = requestContext.getRequest().getRequestURI();
+        return CommonUtil.checkVehicleTrajectoryUrl(url);
+    }
+
+    @Override
+    public Object run() {
+        RequestContext requestContext = RequestContext.getCurrentContext();
+        HttpServletRequest request = requestContext.getRequest();
+
+        //获取流水号
+        String traceId = (String) requestContext.get(Constants.HEADER_TRACEID_KEY);
+
+        requestContext.set(Constants.Url, request.getRequestURI());
+
+        //获取userId
+        String userId = request.getHeader(Constants.HEADER_USER_ID);
+        //获取url
+        String url = requestContext.getRequest().getRequestURI();
+        //根据url获取订购项类型
+        int type = helper.getType(url);
+        log.info("VehicleTrajectoryFilter-run()-userId:{},traceId:{},url:{},type:{}", userId, traceId, url, type);
+        //响应对象
+        try {
+
+            BillResultObject billResultObject = new BillResultObject();
+            VehicleTrajectoryObject.VerifyResultSet verifyResultSet = new VehicleTrajectoryObject.VerifyResultSet();
+            VehicleTrajectoryObject vehicleTrajectoryObject = new VehicleTrajectoryObject(verifyResultSet);
+            billResultObject.setTraceId((String) requestContext.get(Constants.HEADER_TRACEID_KEY));
+            try {
+                String consistent = Constants.consistent_code;
+                List<YysjProduct> yysjProducts = yysjUserActionInterface.getYysjProductIdByUserId(userId, type);
+                if (yysjProducts == null || yysjProducts.size() == 0) {
+                    throw new ResultCodeException(Constants.ResultDesc.NO_PERMISSION.getCode(), "未订购核验项", "根据类型和用户没有获取到校验资格项");
+
+                }
+                YysjProduct yysjProduct = yysjProducts.get(0);
+                //开始组装请求参数
+                Map<String, String> map = (Map<String, String>) requestContext.get("bodyMap");
+
+                String token = (String) requestContext.get(Constants.HEADER_TOKEN_KEY);
+                List<CheckDetailLogObject> checkDetails = new ArrayList<CheckDetailLogObject>();
+                Set<String> emptyList = new HashSet<>();
+                Set<String> erroList = new HashSet<>();
+
+                // todo 此处之前传的第二个参数是url
+                Map<String, Object> cutomeMap = transferParam.getCustomBody(map, yysjProduct.getYysjProductCode(), emptyList, erroList);
+                if (emptyList.size() != 0) {
+                    String emptyNode = StringUtils.joinWith(",", emptyList.toArray());
+                    throw new ResultCodeException(Constants.ResultDesc.PARAMNULL.getCode(), emptyNode + "必填项为空", "存在空值在必须校验的项上" + emptyNode);
+
+                }
+                if (erroList.size() != 0) {
+                    String emptyNode = StringUtils.joinWith(",", erroList.toArray());
+                    throw new ResultCodeException(Constants.ResultDesc.PARAMERROR.getCode(), emptyNode + "参数不符合规格", "存在错误的校验项上" + emptyNode);
+
+                }
+
+
+                ProductCheckRequest productCheckRequest = new ProductCheckRequest();
+                productCheckRequest.setYysjProductId(yysjProduct.getYysjProductId());
+                productCheckRequest.setProductCode(yysjProduct.getYysjProductCode());
+                List<String> list = yysjProduct.getSjjhProductId();
+                productCheckRequest.setSjjhProductId(list);
+                productCheckRequest.setCustomBody(cutomeMap);
+                String requestBody = mapper.writeValueAsString(productCheckRequest);
+
+                BillItemResult billItemResult = channelRibbonHandle.channelRibbonHandle(token, requestBody, userId, traceId, yysjProduct.getYysjProductId());
+                if ("1".equals(billItemResult.getResult())) {//上游返回一致
+                    String detail = billItemResult.getDetail();
+                    verifyResultSet.setCorrectResult(JSON.parseObject(detail));
+                } else if ("0".equals(billItemResult.getResult())) {
+                    String errorInfo = billItemResult.getDetail();
+                    VehicleTrajectoryObject.VerifyResultSet.Errorresult errorresult = new VehicleTrajectoryObject.VerifyResultSet.Errorresult();
+                    errorresult.setErrorInfo(errorInfo);
+                    verifyResultSet.setErrorResult(errorresult);
+                } else {
+                    consistent = Constants.inconsistent_code;
+                    BillItemResult.ErrorResponse errorResponse = billItemResult.getExceptionInformation();
+                    String errorInfo = "";
+                    if (errorResponse.getCode() == Constants.ErrorCode.Exception.getErrorCode()) {
+                        errorInfo = Constants.errorInfo;
+                    } else if (errorResponse.getCode() == Constants.ErrorCode.MONEYNOTENOUGH.getErrorCode()) {
+                        errorInfo = Constants.moneyNotEnough;
+                    } else {
+                        Set<String> resultList = errorResponse.getResultList();
+                        Set<String> resultSet = transferParam.resultTransferParam(yysjProduct.getYysjProductCode(), resultList);
+                        if (errorResponse.getCode() == Constants.ErrorCode.NULL.getErrorCode()) {
+                            errorInfo = "数据源" + StringUtils.join(resultSet.toArray(), ",") + "为空";
+                        } else {
+                            errorInfo = "数据源" + StringUtils.join(resultSet.toArray(), ",") + "为不一致";
+                        }
+                    }
+                    VehicleTrajectoryObject.VerifyResultSet.Errorresult errorresult = new VehicleTrajectoryObject.VerifyResultSet.Errorresult();
+                    errorresult.setErrorInfo(errorInfo);
+                    verifyResultSet.setErrorResult(errorresult);
+                }
+                vehicleTrajectoryObject.setVerifyResultSet(verifyResultSet);
+                request.setAttribute("consistent", consistent);
+                billResultObject.setResultCode(Constants.ResultDesc.SUCCESS.getCode());
+                billResultObject.setResultMsg(Constants.ResultDesc.SUCCESS.getValue());
+                billResultObject.setData(vehicleTrajectoryObject);
+            } catch (ResultCodeException ex) {
+                log.error("resultCodeException:{}", ex);
+                billResultObject.setResultCode(ex.getCode());
+                billResultObject.setResultMsg(ex.getMessage());
+
+            } catch (Exception ex) {
+                log.error("Exception:{}", ex);
+                billResultObject.setResultCode(Constants.ResultDesc.SERVERERROR.getCode());
+                billResultObject.setResultMsg(Constants.ResultDesc.SERVERERROR.getValue());
+
+            }
+            helper.responseHandle(billResultObject, requestContext, false);
+        } catch (JsonProcessingException e) {
+            log.error("解析对象出错,message:{}", e);
+        }
+        return null;
+
+    }
+
+    @Override
+    public String filterType() {
+        return FilterConstants.PRE_TYPE;
+    }
+
+    @Override
+    public int filterOrder() {
+        return FilterConstants.SERVLET_30_WRAPPER_FILTER_ORDER + 4;
+    }
+}