/* * Copyright 2017-2020 吴学文 and java110 team. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 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; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; 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 * * @desc add by 吴学文 15:29 */ @Component(value = "openDoorAdapt") 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) { MachineDto machineDto = new MachineDto(); machineDto.setMachineCode(paramIn.getString("machineCode")); machineDto.setCommunityId(paramIn.getString("communityId")); List 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 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 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> httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders(outRestTemplate)); ResponseEntity 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); } } }