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