java110 лет назад: 5
Родитель
Сommit
9a63ac5baf

+ 1 - 0
java110-bean/src/main/java/com/java110/dto/machine/MachineTranslateDto.java

@@ -36,6 +36,7 @@ public class MachineTranslateDto extends PageDto implements Serializable {
     public static final String CMD_ADD_OWNER_FACE = "501";
     public static final String CMD_UPDATE_OWNER_FACE = "502";
     public static final String CMD_DELETE_OWNER_FACE = "503";
+    public static final String CMD_OPEN_DOOR = "5";
 
     //小区信息
     public static final String TYPE_COMMUNITY = "9988";

+ 14 - 2
service-common/src/main/java/com/java110/common/api/MachineApi.java

@@ -10,13 +10,19 @@ import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 
 @RestController
 @RequestMapping(value = "/machine")
 public class MachineApi {
 
+    private static final String USER_ROLE_OWNER = "owner";
     @Autowired
     private IMachineOpenDoorBMO machineOpenDoorBMOImpl;
 
@@ -35,9 +41,15 @@ public class MachineApi {
      * @path /app/machine/openDoor
      */
     @RequestMapping(value = "/openDoor", method = RequestMethod.POST)
-    public ResponseEntity<String> openDoor(@RequestBody JSONObject reqJson) {
+    public ResponseEntity<String> openDoor(@RequestBody JSONObject reqJson,
+                                           @RequestHeader(value = "user-id", required = false) String userId) {
         Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含小区信息");
         Assert.hasKeyAndValue(reqJson, "machineCode", "请求报文中未包含设备信息");
+        Assert.hasKeyAndValue(reqJson, "userRole", "请求报文中未包含用户角色");
+        if (!USER_ROLE_OWNER.equals(reqJson.getString("userRole"))) { //这种为 员工的情况呢
+            reqJson.put("userId", userId);
+        }
+        Assert.hasKeyAndValue(reqJson, "userId", "请求报文中未包含设备信息");
         return machineOpenDoorBMOImpl.openDoor(reqJson);
     }
 

+ 93 - 9
service-job/src/main/java/com/java110/job/adapt/hcIot/OpenDoorAdapt.java

@@ -18,7 +18,17 @@ package com.java110.job.adapt.hcIot;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.machine.MachineDto;
+import com.java110.dto.machine.MachineTranslateDto;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.dto.user.UserDto;
+import com.java110.intf.common.IMachineInnerServiceSMO;
+import com.java110.intf.common.IMachineTranslateInnerServiceSMO;
+import com.java110.intf.user.IOwnerInnerServiceSMO;
+import com.java110.intf.user.IUserInnerServiceSMO;
 import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.DateUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
@@ -28,6 +38,8 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.util.MultiValueMap;
 
+import java.util.List;
+
 /**
  * 开门适配器
  * 接口协议地址: https://gitee.com/java110/MicroCommunityThings/blob/master/back/docs/api.md
@@ -40,18 +52,90 @@ public class OpenDoorAdapt extends DatabusAdaptImpl {
     @Autowired
     RestTemplate outRestTemplate;
 
+    @Autowired
+    private IMachineInnerServiceSMO machineInnerServiceSMOImpl;
+
+    @Autowired
+    private IUserInnerServiceSMO userInnerServiceSMOImpl;
+
+    @Autowired
+    private IMachineTranslateInnerServiceSMO machineTranslateInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerInnerServiceSMO ownerInnerServiceSMOImpl;
+
+    /**
+     * 开门实现方法
+     *
+     * @param paramIn 业务信息
+     * @return
+     */
     @Override
     public ResultVo openDoor(JSONObject paramIn) {
-        JSONObject postParameters = new JSONObject();
-        postParameters.put("taskId",GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
-        postParameters.put("machineCode", paramIn.getString("machineCode"));
-        HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders(outRestTemplate));
-        ResponseEntity<String> responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.OPEN_DOOR), HttpMethod.POST, httpEntity, String.class);
-        if (responseEntity.getStatusCode() != HttpStatus.OK) {
-            return new ResultVo(ResultVo.CODE_ERROR, responseEntity.getBody());
+
+        MachineDto machineDto = new MachineDto();
+        machineDto.setMachineId(paramIn.getString("machineCode"));
+        machineDto.setCommunityId(paramIn.getString("communityId"));
+        List<MachineDto> machineDtos = machineInnerServiceSMOImpl.queryMachines(machineDto);
+
+        Assert.listOnlyOne(machineDtos, "设备不存在");
+        String userId = "";
+        String userName = "";
+
+        if (!"owner".equals(paramIn.getString("userRole"))) {
+            UserDto userDto = new UserDto();
+            userDto.setUserId(paramIn.getString("userId"));
+            List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
+            Assert.listOnlyOne(userDtos, "用户不存在");
+            userId = userDtos.get(0).getUserId();
+            userName = userDtos.get(0).getUserName();
+        } else {
+            OwnerDto ownerDto = new OwnerDto();
+            ownerDto.setMemberId(userId);
+            ownerDto.setCommunityId(paramIn.getString("communityId"));
+            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnerMembers(ownerDto);
+            Assert.listOnlyOne(ownerDtos, "业主不存在");
+            userId = ownerDtos.get(0).getMemberId();
+            userName = ownerDtos.get(0).getName();
+        }
+        MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
+        machineTranslateDto.setMachineTranslateId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
+        machineTranslateDto.setCommunityId(paramIn.getString("communityId"));
+        machineTranslateDto.setMachineCmd(MachineTranslateDto.CMD_OPEN_DOOR);
+        machineTranslateDto.setMachineCode(machineDtos.get(0).getMachineCode());
+        machineTranslateDto.setMachineId(machineDtos.get(0).getMachineId());
+        machineTranslateDto.setObjId(userId);
+        machineTranslateDto.setObjName(userName);
+        machineTranslateDto.setTypeCd(MachineTranslateDto.TYPE_COMMUNITY);
+        machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
+        machineTranslateDto.setRemark("同步物联网系统成功");
+
+        try {
+            JSONObject postParameters = new JSONObject();
+            postParameters.put("taskId", GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
+            postParameters.put("machineCode", paramIn.getString("machineCode"));
+            HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders(outRestTemplate));
+            ResponseEntity<String> responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.OPEN_DOOR), HttpMethod.POST, httpEntity, String.class);
+            if (responseEntity.getStatusCode() != HttpStatus.OK) {
+                machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
+                machineTranslateDto.setRemark("开门失败");
+                return new ResultVo(ResultVo.CODE_ERROR, responseEntity.getBody());
+            }
+            JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
+            if (!paramOut.containsKey("code") || ResultVo.CODE_OK != paramOut.getInteger("code")) {
+                machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
+                machineTranslateDto.setRemark(paramOut.getString("msg"));
+            } else {
+                machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
+                machineTranslateDto.setRemark("同步物联网系统成功");
+            }
+            return new ResultVo(paramOut.getInteger("code"), paramOut.getString("msg"));
+        } finally {
+            machineTranslateDto.setbId("-1");
+            machineTranslateDto.setObjBId("-1");
+            machineTranslateDto.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+            machineTranslateInnerServiceSMOImpl.saveMachineTranslate(machineTranslateDto);
         }
-        JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
-        return new ResultVo(paramOut.getInteger("code"), paramOut.getString("msg"));
     }
 
 }