From 44b18c5c1e44895eb4bcf8e809a44a5ff9154fd1 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 10 十二月 2020 10:41:54 +0800
Subject: [PATCH] 优化代码

---
 service-job/src/main/java/com/java110/job/adapt/ximoIot/XimoAddMachineTransactionIotAdapt.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 1 deletions(-)

diff --git a/service-job/src/main/java/com/java110/job/adapt/ximoIot/XimoAddMachineTransactionIotAdapt.java b/service-job/src/main/java/com/java110/job/adapt/ximoIot/XimoAddMachineTransactionIotAdapt.java
index f1848be..17883cc 100644
--- a/service-job/src/main/java/com/java110/job/adapt/ximoIot/XimoAddMachineTransactionIotAdapt.java
+++ b/service-job/src/main/java/com/java110/job/adapt/ximoIot/XimoAddMachineTransactionIotAdapt.java
@@ -17,9 +17,19 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.RoomDto;
+import com.java110.dto.communityLocation.CommunityLocationDto;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.file.FileRelDto;
 import com.java110.dto.machine.MachineDto;
+import com.java110.dto.owner.OwnerDto;
 import com.java110.entity.order.Business;
+import com.java110.intf.common.IFileInnerServiceSMO;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
 import com.java110.intf.common.IMachineInnerServiceSMO;
+import com.java110.intf.community.ICommunityLocationInnerServiceSMO;
+import com.java110.intf.community.IRoomInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
 import com.java110.job.adapt.DatabusAdaptImpl;
 import com.java110.job.adapt.ximoIot.asyn.IXimoMachineAsyn;
 import com.java110.po.machine.MachinePo;
@@ -30,6 +40,7 @@
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -44,6 +55,21 @@
     private IXimoMachineAsyn ximoMachineAsynImpl;
     @Autowired
     IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private ICommunityLocationInnerServiceSMO communityLocationInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    @Autowired
+    private IRoomInnerServiceSMO roomInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
 
     /**
      * accessToken={access_token}
@@ -90,6 +116,12 @@
 
         Assert.listOnlyOne(machineDtos, "鏈壘鍒拌澶�");
 
+        if (!"9999".equals(machineDtos.get(0).getMachineTypeCd())) {
+            return;
+        }
+
+        List<MultiValueMap<String, Object>> ownerDtos = getOwners(machinePo);
+
         MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
 
         postParameters.add("extCommunityUuid", machinePo.getCommunityId());
@@ -98,6 +130,83 @@
         postParameters.add("name", machinePo.getMachineName());
         postParameters.add("positionType", "0");
         postParameters.add("positionUuid", machinePo.getCommunityId());
-        ximoMachineAsynImpl.send(postParameters);
+        ximoMachineAsynImpl.send(postParameters, ownerDtos);
+    }
+
+    private List<MultiValueMap<String, Object>> getOwners(MachinePo machinePo) {
+        //鎷垮埌灏忓尯ID
+        String communityId = machinePo.getCommunityId();
+
+        List<MultiValueMap<String, Object>> ownerDtos = new ArrayList<>();
+
+        List<OwnerDto> owners = null;
+        //鏍规嵁灏忓尯ID鏌ヨ鐜版湁璁惧
+        OwnerDto ownerDto = new OwnerDto();
+        ownerDto.setCommunityId(communityId);
+        String locationTypeCd = machinePo.getLocationTypeCd();
+        CommunityLocationDto communityLocationDto = new CommunityLocationDto();
+        communityLocationDto.setLocationId(locationTypeCd);
+        communityLocationDto.setCommunityId(machinePo.getCommunityId());
+        List<CommunityLocationDto> communityLocationDtos = communityLocationInnerServiceSMOImpl.queryCommunityLocations(communityLocationDto);
+
+        if (communityLocationDtos == null || communityLocationDtos.size() < 1) {
+            return ownerDtos;
+        }
+        communityLocationDto = communityLocationDtos.get(0);
+
+        if ("1000".contains(communityLocationDto.getLocationType())) {//鏌ヨ鏁翠釜灏忓尯鐨勪笟涓�
+            owners = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        } else if ("2000".equals(communityLocationDto.getLocationType())) {//2000 鍗曞厓闂� 锛屽垯杩欎釜鍗曞厓涓嬬殑涓氫富鍚屾
+            //鍏堟牴鎹崟鍏冮棬ID 鏌ヨ 鎴垮眿
+            RoomDto roomDto = new RoomDto();
+            roomDto.setUnitId(machinePo.getLocationObjId());
+            roomDto.setCommunityId(machinePo.getCommunityId());
+            List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
+            if (roomDtos == null || roomDtos.size() == 0) { // 鍗曞厓涓嬫病鏈夋埧灞�
+                return ownerDtos;
+            }
+            ownerDto.setRoomIds(getRoomIds(roomDtos));
+            owners = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        } else if ("3000".equals(communityLocationDto.getLocationType())) {// 3000 鎴垮眿闂�
+            ownerDto.setRoomId(machinePo.getLocationObjId());
+            owners = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+        }
+
+        for (OwnerDto tOwnerDto : owners) {
+            FileRelDto fileRelDto = new FileRelDto();
+            fileRelDto.setObjId(tOwnerDto.getMemberId());
+            fileRelDto.setRelTypeCd("10000");
+            List<FileRelDto> fileRelDtos = fileRelInnerServiceSMOImpl.queryFileRels(fileRelDto);
+            if (fileRelDtos == null || fileRelDtos.size() != 1) {
+                continue;
+            }
+            FileDto fileDto = new FileDto();
+            fileDto.setFileId(fileRelDtos.get(0).getFileSaveName());
+            fileDto.setFileSaveName(fileRelDtos.get(0).getFileSaveName());
+            fileDto.setCommunityId(tOwnerDto.getCommunityId());
+            List<FileDto> fileDtos = fileInnerServiceSMOImpl.queryFiles(fileDto);
+            if (fileDtos == null || fileDtos.size() != 1) {
+                continue;
+            }
+            MultiValueMap<String, Object> postParameters = new LinkedMultiValueMap<>();
+
+            postParameters.add("extCommunityUuid", tOwnerDto.getCommunityId());
+            postParameters.add("addAuthorizationDevSn", machinePo.getMachineCode());
+            postParameters.add("uuid", tOwnerDto.getMemberId());
+            postParameters.add("name", tOwnerDto.getName());
+            postParameters.add("faceFileBase64Array", fileDtos.get(0).getContext());
+
+            ownerDtos.add(postParameters);
+        }
+
+        return ownerDtos;
+    }
+
+    private String[] getRoomIds(List<RoomDto> roomDtos) {
+        List<String> roomIds = new ArrayList<String>();
+        for (RoomDto roomDto : roomDtos) {
+            roomIds.add(roomDto.getRoomId());
+        }
+        return roomIds.toArray(new String[roomIds.size()]);
     }
 }

--
Gitblit v1.8.0