java110 лет назад: 3
Родитель
Сommit
4583273c00

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

@@ -56,6 +56,7 @@ public class MachineTranslateDto extends PageDto implements Serializable {
     public static final String CMD_ADD_VISIT = "921";
 
     public static final String CMD_OPEN_DOOR = "5";
+    public static final String CMD_CLOSE_DOOR = "51";
 
     //小区信息
     public static final String TYPE_COMMUNITY = "9988";

+ 8 - 0
java110-interface/src/main/java/com/java110/intf/job/IDataBusInnerServiceSMO.java

@@ -45,6 +45,14 @@ public interface IDataBusInnerServiceSMO {
      */
     @RequestMapping(value = "/openDoor", method = RequestMethod.POST)
     ResultVo openDoor(@RequestBody JSONObject reqJson);
+    /**
+     * <p>开门</p>
+     *
+     * @param reqJson 请求信息
+     * @return TaskDto 对象数据
+     */
+    @RequestMapping(value = "/closeDoor", method = RequestMethod.POST)
+    ResultVo closeDoor(@RequestBody JSONObject reqJson);
 
     /**
      * <p>重启设备</p>

+ 22 - 0
service-common/src/main/java/com/java110/common/api/MachineApi.java

@@ -69,6 +69,28 @@ public class MachineApi {
         return machineOpenDoorBMOImpl.openDoor(reqJson);
     }
 
+    /**
+     * 设备开门功能
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /machine/openDoor
+     * @path /app/machine/openDoor
+     */
+    @RequestMapping(value = "/closeDoor", method = RequestMethod.POST)
+    public ResponseEntity<String> closeDoor(@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.closeDoor(reqJson);
+    }
+
+
 
     /**
      * 设备二维码

+ 7 - 0
service-common/src/main/java/com/java110/common/bmo/machine/IMachineOpenDoorBMO.java

@@ -27,6 +27,13 @@ public interface IMachineOpenDoorBMO {
      * @return
      */
     ResponseEntity<String> openDoor(JSONObject reqJson);
+    /**
+     * 开门接口类
+     *
+     * @param reqJson 请求报文信息
+     * @return
+     */
+    ResponseEntity<String> closeDoor(JSONObject reqJson);
 
     /**
      * 开门接口类

+ 28 - 0
service-common/src/main/java/com/java110/common/bmo/machine/impl/MachineOpenDoorBMOImpl.java

@@ -73,6 +73,34 @@ public class MachineOpenDoorBMOImpl implements IMachineOpenDoorBMO {
         return ResultVo.createResponseEntity(resultVo);
     }
 
+    /**
+     * 开门功能
+     *
+     * @param reqJson 请求报文信息
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> closeDoor(JSONObject reqJson) {
+        //如果是业主 限制开门次数
+        if ("owner".equals(reqJson.getString("userRole"))) {
+            OwnerDto ownerDto = new OwnerDto();
+            ownerDto.setMemberId(reqJson.getString("userId"));
+            ownerDto.setCommunityId(reqJson.getString("communityId"));
+            List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwners(ownerDto);
+            if (ownerDtos == null || ownerDtos.size() < 1) {
+                return ResultVo.error("没有权限开门");
+            }
+
+            if (!hasOpenDoorPri(ownerDtos.get(0), reqJson.getString("machineCode"))) {
+                return ResultVo.error("今日开门次数已用完,请联系物业客服人员");
+            }
+        }
+        ResultVo resultVo = dataBusInnerServiceSMOImpl.closeDoor(reqJson);
+        return ResultVo.createResponseEntity(resultVo);
+    }
+
+
+
     private boolean hasOpenDoorPri(OwnerDto ownerDto, String machineCode) {
 
         List<OwnerAttrDto> ownerAttrDtos = ownerDto.getOwnerAttrDtos();

+ 10 - 0
service-job/src/main/java/com/java110/job/adapt/DatabusAdaptImpl.java

@@ -55,6 +55,16 @@ public abstract class DatabusAdaptImpl implements IDatabusAdapt {
     public ResultVo openDoor(JSONObject paramIn) {
         return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
     }
+    /**
+     * 开门
+     *
+     * @param paramIn 业务信息
+     * @return
+     */
+    @Override
+    public ResultVo closeDoor(JSONObject paramIn) {
+        return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
+    }
 
     @Override
     public ResultVo getQRcode(JSONObject reqJson) {

+ 6 - 0
service-job/src/main/java/com/java110/job/adapt/IDatabusAdapt.java

@@ -46,6 +46,12 @@ public interface IDatabusAdapt {
      * @param paramIn 业务信息
      */
     ResultVo openDoor(JSONObject paramIn);
+    /**
+     * 开门接口
+     *
+     * @param paramIn 业务信息
+     */
+    ResultVo closeDoor(JSONObject paramIn);
 
 
     ResultVo getQRcode(JSONObject reqJson);

+ 2 - 0
service-job/src/main/java/com/java110/job/adapt/hcIot/IotConstant.java

@@ -87,6 +87,8 @@ public class IotConstant {
 
     //开门接口
     public static final String OPEN_DOOR = "/extApi/machine/openDoor";
+    //开门接口
+    public static final String CLOSE_DOOR = "/extApi/machine/closeDoor";
 
     //手动进出场
     public static final String CUSTOM_CAR_INOUT = "/extApi/machine/customCarInOut";

+ 73 - 0
service-job/src/main/java/com/java110/job/adapt/hcIot/OpenDoorAdapt.java

@@ -137,6 +137,79 @@ public class OpenDoorAdapt extends DatabusAdaptImpl {
             machineTranslateInnerServiceSMOImpl.saveMachineTranslate(machineTranslateDto);
         }
     }
+    /**
+     * 开门实现方法
+     *
+     * @param paramIn 业务信息
+     * @return
+     */
+    @Override
+    public ResultVo closeDoor(JSONObject paramIn) {
+
+        MachineDto machineDto = new MachineDto();
+        machineDto.setMachineCode(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(paramIn.getString("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_CLOSE_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.CLOSE_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);
+        }
+    }
 
     /**
      * 开门实现方法

+ 6 - 0
service-job/src/main/java/com/java110/job/smo/impl/DataBusInnerServiceSMOImpl.java

@@ -56,6 +56,12 @@ public class DataBusInnerServiceSMOImpl extends BaseServiceSMO implements IDataB
         return databusAdaptImpl.openDoor(reqJson);
 
     }
+    @Override
+    public ResultVo closeDoor(@RequestBody JSONObject reqJson) {
+        IDatabusAdapt databusAdaptImpl = ApplicationContextFactory.getBean(DEFAULT_OPEN_DOOR_PROTOCOL, IDatabusAdapt.class);
+        return databusAdaptImpl.closeDoor(reqJson);
+
+    }
 
 
     @Override