From 149bf192a518008953a198bd8161fa612bdf2f24 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期三, 21 六月 2023 15:52:31 +0800
Subject: [PATCH] 完成智能水电表导入功能

---
 service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 110 insertions(+), 9 deletions(-)

diff --git a/service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java b/service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java
index dd8401a..2c22a56 100644
--- a/service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java
+++ b/service-common/src/main/java/com/java110/common/cmd/machine/AccessControlQrcodeVerificationCmd.java
@@ -6,11 +6,23 @@
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.doc.annotation.*;
+import com.java110.dto.community.CommunityLocationDto;
+import com.java110.dto.machine.MachineDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.room.RoomDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.common.IMachineV1InnerServiceSMO;
+import com.java110.intf.community.IRoomV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
+import com.java110.intf.user.IOwnerV1InnerServiceSMO;
+import com.java110.intf.user.IUserV1InnerServiceSMO;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.text.ParseException;
-
+import java.util.List;
 
 
 @Java110CmdDoc(title = "闂ㄧ浜岀淮鐮佹牳楠屾帴鍙�",
@@ -28,11 +40,11 @@
 
 @Java110ParamsDoc(
         headers = {
-                @Java110HeaderDoc(name="APP-ID",defaultValue = "閫氳繃dev璐︽埛鍒嗛厤搴旂敤",description = "搴旂敤APP-ID"),
-                @Java110HeaderDoc(name="TRANSACTION-ID",defaultValue = "uuid",description = "浜ゆ槗娴佹按鍙�"),
-                @Java110HeaderDoc(name="REQ-TIME",defaultValue = "20220917120915",description = "璇锋眰鏃堕棿 YYYYMMDDhhmmss"),
-                @Java110HeaderDoc(name="JAVA110-LANG",defaultValue = "zh-cn",description = "璇█涓枃"),
-                @Java110HeaderDoc(name="USER-ID",defaultValue = "-1",description = "璋冪敤鐢ㄦ埛ID 涓�鑸啓-1"),
+                @Java110HeaderDoc(name = "APP-ID", defaultValue = "閫氳繃dev璐︽埛鍒嗛厤搴旂敤", description = "搴旂敤APP-ID"),
+                @Java110HeaderDoc(name = "TRANSACTION-ID", defaultValue = "uuid", description = "浜ゆ槗娴佹按鍙�"),
+                @Java110HeaderDoc(name = "REQ-TIME", defaultValue = "20220917120915", description = "璇锋眰鏃堕棿 YYYYMMDDhhmmss"),
+                @Java110HeaderDoc(name = "JAVA110-LANG", defaultValue = "zh-cn", description = "璇█涓枃"),
+                @Java110HeaderDoc(name = "USER-ID", defaultValue = "-1", description = "璋冪敤鐢ㄦ埛ID 涓�鑸啓-1"),
         },
         params = {
                 @Java110ParamDoc(name = "qrCode", length = 30, remark = "浜岀淮鐮�"),
@@ -44,19 +56,36 @@
                 @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "杩斿洖缂栧彿锛�0 鎴愬姛 鍏朵粬澶辫触"),
                 @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "鎴愬姛", remark = "鎻忚堪"),
                 @Java110ParamDoc(name = "data", type = "Object", remark = "鏈夋晥鏁版嵁"),
-                @Java110ParamDoc(parentNodeName = "data",name = "userName", type = "String", remark = "鐢ㄦ埛鍚嶇О"),
+                @Java110ParamDoc(parentNodeName = "data", name = "userName", type = "String", remark = "鐢ㄦ埛鍚嶇О"),
         }
 )
 
 @Java110ExampleDoc(
-        reqBody="{'qrCode':'wuxw','machineCode':'admin'}",
-        resBody="{'code':0,'msg':'鎴愬姛','data':{'userName':'123123'}}"
+        reqBody = "{'qrCode':'wuxw','machineCode':'admin'}",
+        resBody = "{'code':0,'msg':'鎴愬姛','data':{'userName':'123123'}}"
 )
 /**
  * 闂ㄧ浜岀淮鐮佹牳楠屾帴鍙�
  */
 @Java110Cmd(serviceCode = "machine.accessControlQrcodeVerification")
 public class AccessControlQrcodeVerificationCmd extends Cmd {
+
+    @Autowired
+    private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineV1InnerServiceSMO machineV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
+
+
+    @Autowired
+    private IRoomV1InnerServiceSMO roomV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
@@ -67,5 +96,77 @@
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
 
+        //todo 鏌ヨ璁惧淇℃伅
+        MachineDto machineDto = new MachineDto();
+        machineDto.setMachineCode(reqJson.getString("machineCode"));
+        List<MachineDto> machineDtos = machineV1InnerServiceSMOImpl.queryMachines(machineDto);
+        if (machineDtos == null || machineDtos.size() < 1) {
+            throw new IllegalArgumentException("璁惧涓嶅瓨鍦�");
+        }
+
+        String userId = userV1InnerServiceSMOImpl.getUserIdByQrCode(reqJson.getString("qrCode"));
+
+        Assert.hasLength(userId, "浜岀淮鐮侀敊璇�");
+
+        UserDto userDto = new UserDto();
+        userDto.setUserId(userId);
+        List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
+
+        Assert.listOnlyOne(userDtos, "鐢ㄦ埛涓嶅瓨鍦�");
+
+
+        boolean openDoor = false;
+        //todo 鍒ゆ柇鏄惁涓轰笟涓�
+        openDoor = hasOwnerRole(machineDtos.get(0), userDtos.get(0));
+
+    }
+
+    /**
+     * 鍒ゆ柇鏄惁鏄笟涓昏鑹�
+     *
+     * @param machineDto
+     * @param userDto
+     * @return
+     */
+    private boolean hasOwnerRole(MachineDto machineDto, UserDto userDto) {
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setLink(userDto.getTel());
+        ownerDto.setCommunityId(machineDto.getMachineCode());
+        List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto);
+        if (ownerDtos == null || ownerDtos.size() < 1) {//todo 鏄笟涓�
+            return false;
+        }
+
+        //鍦ㄥ皬鍖轰綅缃�
+        if (CommunityLocationDto.LOCAL_TYPE_COMMUNITY.equals(machineDto.getLocationType())) {
+            return true;
+        }
+
+        //todo 鍦ㄥ崟鍏冮棬浣嶇疆
+        if (!CommunityLocationDto.LOCAL_TYPE_UNIT.equals(machineDto.getMachineTypeCd())) {
+            return false;
+        }
+
+
+        OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+        ownerRoomRelDto.setOwnerId(ownerDtos.get(0).getOwnerId());
+        ownerRoomRelDto.setCommunityId(ownerDtos.get(0).getCommunityId());
+        List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+
+        if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) {
+            return false;
+        }
+        RoomDto roomDto = null;
+        int count = 0;
+        for (OwnerRoomRelDto tmpOwnerRoomRelDto : ownerRoomRelDtos) {
+            roomDto = new RoomDto();
+            roomDto.setRoomId(tmpOwnerRoomRelDto.getRoomId());
+            roomDto.setUnitId(machineDto.getLocationObjId());
+            count = roomV1InnerServiceSMOImpl.queryRoomsCount(roomDto);
+            if (count > 0) {
+                return true;
+            }
+        }
+        return false;
     }
 }

--
Gitblit v1.8.0