Kaynağa Gözat

优化完善逻辑

yq 2 yıl önce
ebeveyn
işleme
d23ba189ee

+ 8 - 4
src/main/java/com/usky/dxtop/service/api/FpApi.java

@@ -1,14 +1,18 @@
 package com.usky.dxtop.service.api;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.usky.dxtop.common.exception.CustomException;
+import com.usky.dxtop.common.utils.StringUtils;
 import com.usky.dxtop.common.utils.http.HttpUtils;
 import com.usky.dxtop.service.vo.FpDoorVO;
 
+import javax.transaction.TransactionRequiredException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -22,7 +26,7 @@ public class FpApi {
     /**
      * 路径
      */
-    private static final String PATH = "http://10.208.2.158:7002/";
+    private static final String PATH = "http://10.208.128.14:8069/openapi/";
     /**
      * 获取门禁列表
      */
@@ -40,7 +44,7 @@ public class FpApi {
      * @param operateType
      * @return
      */
-    public static Map<String,Object> generateDoorPermissionParam(String userId,List<FpDoorVO> list,String operateType){
+    public static TreeMap<String,String> generateDoorPermissionParam(String userId,List<FpDoorVO> list,String operateType){
         List<Map<String, Object>> deviceInfoList = list.stream().map(fpDoorVO -> {
             Map<String, Object> deviceInfo = new HashMap<>();
             deviceInfo.put("serialNumber", fpDoorVO.getDeviceId());
@@ -48,10 +52,10 @@ public class FpApi {
             deviceInfo.put("deviceType", fpDoorVO.getDeviceType());
             return deviceInfo;
         }).collect(Collectors.toList());
-        Map<String,Object> param = new HashMap<>();
+        TreeMap<String,String> param = new TreeMap<>();
         param.put("userId",userId);
         param.put("operateType",operateType);
-        param.put("deviceInfo",deviceInfoList);
+        param.put("deviceInfo", JSON.toJSONString(deviceInfoList));
         return param;
     }
 

+ 1 - 1
src/main/java/com/usky/dxtop/service/job/CardDishJob.java

@@ -60,7 +60,7 @@ public class CardDishJob {
         });
         productOrderService.updateBatchById(data);
         callApiLogService.saveBatch(logs);
-        log.info("---orderJob---处理完成");
+        log.info("---cardDishJob---处理完成");
     }
 
     public List<ProductOrder> getData(String param){

+ 23 - 9
src/main/java/com/usky/dxtop/service/job/FpJob.java

@@ -16,6 +16,7 @@ import com.usky.dxtop.model.ProductOrder;
 import com.usky.dxtop.service.CallApiLogService;
 import com.usky.dxtop.service.ProductOrderService;
 import com.usky.dxtop.service.api.FpApi;
+import com.usky.dxtop.service.api.OneCardApi;
 import com.usky.dxtop.service.emun.OrderStatus;
 import com.usky.dxtop.service.emun.ProductOrderStatus;
 import com.usky.dxtop.service.impl.ProductOrderServiceImpl;
@@ -58,7 +59,12 @@ public class FpJob {
             addPerList.forEach(productOrder -> {
                 List<FpDoorVO> listByDeviceId = getListByDeviceId(productOrder.getFpDeviceId(), doorList);
                 if (isAddPermission(productOrder)){
-                    logs.add(sendPermission(listByDeviceId, productOrder, "1",ProductOrderStatus.SET_PERMISSION_ERROR.getCode()));
+                    logs.add(sendPermission(listByDeviceId,
+                            productOrder,
+                            "1",
+                            ProductOrderStatus.SET_PERMISSION_ERROR.getCode(),
+                            ProductOrderStatus.RUN.getCode(),
+                            ProductOrderStatus.SET_PERMISSION_ERROR.getCode()));
                 }
             });
 
@@ -67,7 +73,12 @@ public class FpJob {
             delPerList.forEach(productOrder -> {
                 List<FpDoorVO> listByDeviceId = getListByDeviceId(productOrder.getFpDeviceId(), doorList);
                 if (isDelPermission(productOrder)){
-                    logs.add(sendPermission(listByDeviceId, productOrder, "1",ProductOrderStatus.DEL_PERMISSION_ERROR.getCode()));
+                    logs.add(sendPermission(listByDeviceId,
+                            productOrder,
+                            "2",
+                            ProductOrderStatus.DEL_PERMISSION_ERROR.getCode(),
+                            ProductOrderStatus.SUCCESS.getCode(),
+                            ProductOrderStatus.DEL_PERMISSION_ERROR.getCode()));
                 }
             });
             try {
@@ -92,14 +103,14 @@ public class FpJob {
             Integer count = treeMap.get(orderNumber);
             if (count >= 3){
                 treeMap.remove(orderNumber);
-                return false;
+                return true;
             }else {
                 treeMap.put(orderNumber,count+1);
             }
         }else {
             treeMap.put(orderNumber,1);
         }
-        return true;
+        return false;
     }
 
     public List<FpDoorVO> getListByDeviceId(String deviceId,List<FpDoorVO> list){
@@ -136,17 +147,19 @@ public class FpJob {
      * @param productOrder 订单
      * @param permission 权限标识
      * @param orderFlag 达到最大重试次数以后的订单状态
+     * @param successFlag 成功的订单状态
+     * @param errorFlag 失败的订单状态
      * @return
      */
-    public CallApiLog sendPermission(List<FpDoorVO> list, ProductOrder productOrder,String permission,Integer orderFlag){
-        Map<String, Object> map = FpApi.generateDoorPermissionParam(productOrder.getUserCode(), list, permission);
+    public CallApiLog sendPermission(List<FpDoorVO> list, ProductOrder productOrder,String permission,Integer orderFlag,Integer successFlag,Integer errorFlag){
+        TreeMap<String, String> map = FpApi.generateDoorPermissionParam(productOrder.getUserCode(), list, permission);
         String result;
         try {
-            result = FpApi.commonResult(FpApi.DEVICE_PERMISSION_OPERATE_URL,null,jsonObject -> {
+            result = FpApi.commonResult(FpApi.DEVICE_PERMISSION_OPERATE_URL, OneCardApi.joinParam(map), jsonObject -> {
                 if ("1".equals(jsonObject.get("result").toString())){
-                    productOrder.setOrderFlag(ProductOrderStatus.RUN.getCode());
+                    productOrder.setOrderFlag(successFlag);
                 }else {
-                    productOrder.setOrderFlag(ProductOrderStatus.SET_PERMISSION_ERROR.getCode());
+                    productOrder.setOrderFlag(errorFlag);
                     log.error("设置门禁权限异常:"+jsonObject.get("msg"));
                 }
                 return true;
@@ -167,6 +180,7 @@ public class FpJob {
     }
 
 
+
     public boolean isAddPermission(ProductOrder productOrder){
         Date now = new Date();
         Date startDate = getTimeByOrder(productOrder.getAppointmentTime(), productOrder.getStartTime());