Bläddra i källkod

feature: 门锁对接
1.发员工卡

luo.yibo@datuai.com 1 år sedan
förälder
incheckning
d711399dd0

+ 41 - 13
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/lock/LockBusiness.java

@@ -3,6 +3,7 @@ package org.dromara.backstage.business.lock;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -14,6 +15,7 @@ import org.dromara.common.core.domain.R;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -34,20 +36,21 @@ public class LockBusiness {
         Integer cardType = bo.getCardType();
         String cardData = "";
         Map<String, Object> formMap;
-        switch (cardType) {
-            case 0:
+        cardData = switch (cardType) {
+            case 0 -> {
                 formMap = setPwdCardParam(bo);
-                cardData = lockUtils.getPwdCardData(formMap);
-                break;
-            case 1:
+                yield lockUtils.getPwdCardData(formMap);
+            }
+            case 1 -> {
                 formMap = setGuestCardParam(bo);
-                cardData = lockUtils.getWriteCardData(formMap);
-                break;
-            case 2:
+                yield lockUtils.getWriteCardData(formMap);
+            }
+            case 2 -> {
                 formMap = setManageCardParam(bo);
-                cardData = lockUtils.getWriteCardData(formMap);
-                break;
-        }
+                yield lockUtils.getWriteCardData(formMap);
+            }
+            default -> cardData;
+        };
         if (ObjectUtil.isNotEmpty(cardData)) {
             bo.setCardData(cardData);
             return R.ok(cardData, cardData);
@@ -62,9 +65,9 @@ public class LockBusiness {
         String openResult = lockUtils.sendPost(formMap, "openRemoteDeviceLock");
         String flag = JSONUtil.parseObj(openResult).getStr("result");
         if (ObjectUtil.equals(flag, "0")) {
-            return R.ok("远程开门成功","远程开门成功");
+            return R.ok("远程开门成功", "远程开门成功");
         }
-        return R.fail("远程开门失败","远程开门失败");
+        return R.fail("远程开门失败", "远程开门失败");
     }
 
     private Map<String, Object> setGuestCardParam(RoomCardBo bo) {
@@ -81,7 +84,32 @@ public class LockBusiness {
 
     private Map<String, Object> setManageCardParam(RoomCardBo bo) {
         Map<String, Object> formMap = this.setGuestCardParam(bo);
+        String groupIds = "0000";
+        if (ObjectUtil.notEqual(bo.getCardUseType(), "1024")) {
+            StringBuilder sb = new StringBuilder();
+            List<String> areaIds = List.of(bo.getGroupIds().split(","));
 
+            for (String areaId : areaIds) {
+                // TODO 2024-11-20 luoyibo 根据区域id查询出对应的门锁id,只需要一条
+                String lockId = "0000";
+                Map<String, Object> mapGroup = new HashMap<>();
+                mapGroup.put("DEVICE_ID", lockId);
+                mapGroup.put("PAGENO", 1);
+                mapGroup.put("PAGESIZE", 10);
+                String result = lockUtils.sendPost(mapGroup, "devicesList");
+                JSONObject obj = JSONUtil.parseObj(result);
+                String lockkeyid = obj.getJSONArray("AppkeyList").getJSONObject(0).getStr("KEY_ID");
+                // 通过keyid获取分组
+                mapGroup = new HashMap<String, Object>();
+                mapGroup.put("LOCKKEYID", lockkeyid);
+                mapGroup.put("OPERATETYPE", "2");
+                result = lockUtils.sendPost(mapGroup, "operateLockGroup");
+                obj = JSONUtil.parseObj(result);
+                sb.append(obj.getStr("checkGroupId"));
+            }
+            groupIds = sb.toString();
+        }
+        formMap.put("groupIds", groupIds);
         return formMap;
     }