Просмотр исходного кода

加入物联网设备重松问题

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

+ 21 - 0
java110-bean/src/main/java/com/java110/dto/machineTranslateError/MachineTranslateErrorDto.java

@@ -15,6 +15,8 @@ import java.util.Date;
  **/
 public class MachineTranslateErrorDto extends PageDto implements Serializable {
 
+    public static final String REQ_TYPE_URL = "2222";
+
     private String reqHeader;
     private String machineTranslateId;
     private String resBody;
@@ -22,6 +24,9 @@ public class MachineTranslateErrorDto extends PageDto implements Serializable {
     private String logId;
     private String communityId;
 
+    private String reqPath;
+    private String reqType;
+
 
     private Date createTime;
 
@@ -92,4 +97,20 @@ public class MachineTranslateErrorDto extends PageDto implements Serializable {
     public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
+
+    public String getReqPath() {
+        return reqPath;
+    }
+
+    public void setReqPath(String reqPath) {
+        this.reqPath = reqPath;
+    }
+
+    public String getReqType() {
+        return reqType;
+    }
+
+    public void setReqType(String reqType) {
+        this.reqType = reqType;
+    }
 }

+ 19 - 13
java110-bean/src/main/java/com/java110/po/logSystemError/LogSystemErrorPo.java

@@ -1,39 +1,45 @@
 package com.java110.po.logSystemError;
 
 import java.io.Serializable;
-import java.util.Date;
 
 public class LogSystemErrorPo implements Serializable {
 
     private String msg;
-private String errType;
-private String errId;
-private String statusCd = "0";
-public String getMsg() {
+    private String errType;
+    private String errId;
+    private String statusCd = "0";
+
+    public String getMsg() {
         return msg;
     }
-public void setMsg(String msg) {
+
+    public void setMsg(String msg) {
         this.msg = msg;
     }
-public String getErrType() {
+
+    public String getErrType() {
         return errType;
     }
-public void setErrType(String errType) {
+
+    public void setErrType(String errType) {
         this.errType = errType;
     }
-public String getErrId() {
+
+    public String getErrId() {
         return errId;
     }
-public void setErrId(String errId) {
+
+    public void setErrId(String errId) {
         this.errId = errId;
     }
-public String getStatusCd() {
+
+    public String getStatusCd() {
         return statusCd;
     }
-public void setStatusCd(String statusCd) {
+
+    public void setStatusCd(String statusCd) {
         this.statusCd = statusCd;
     }
 
 
-
 }

+ 16 - 0
java110-bean/src/main/java/com/java110/po/machineTranslateError/MachineTranslateErrorPo.java

@@ -11,6 +11,8 @@ public class MachineTranslateErrorPo implements Serializable {
     private String logId;
     private String statusCd = "0";
     private String communityId;
+    private String reqPath;
+    private String reqType;
 
     public String getReqHeader() {
         return reqHeader;
@@ -68,5 +70,19 @@ public class MachineTranslateErrorPo implements Serializable {
         this.communityId = communityId;
     }
 
+    public String getReqPath() {
+        return reqPath;
+    }
+
+    public void setReqPath(String reqPath) {
+        this.reqPath = reqPath;
+    }
 
+    public String getReqType() {
+        return reqType;
+    }
+
+    public void setReqType(String reqType) {
+        this.reqType = reqType;
+    }
 }

+ 4 - 3
java110-db/src/main/resources/mapper/common/MachineTranslateErrorServiceDaoImplMapper.xml

@@ -8,9 +8,9 @@
     <!-- 保存IOT同步错误日志记录信息 add by wuxw 2018-07-03 -->
     <insert id="saveMachineTranslateErrorInfo" parameterType="Map">
         insert into machine_translate_error(
-        req_header,machine_translate_id,res_body,req_body,log_id,community_id
+        req_header,machine_translate_id,res_body,req_body,log_id,community_id,req_path,req_type
         ) values (
-        #{reqHeader},#{machineTranslateId},#{resBody},#{reqBody},#{logId},#{communityId}
+        #{reqHeader},#{machineTranslateId},#{resBody},#{reqBody},#{logId},#{communityId},#{reqPath},#{reqType}
         )
     </insert>
 
@@ -19,7 +19,8 @@
     <select id="getMachineTranslateErrorInfo" parameterType="Map" resultType="Map">
         select t.req_header,t.req_header reqHeader,t.machine_translate_id,t.machine_translate_id
         machineTranslateId,t.res_body,t.res_body resBody,t.req_body,t.req_body reqBody,t.log_id,t.log_id
-        logId,t.status_cd,t.status_cd statusCd,t.community_id,t.community_id communityId
+        logId,t.status_cd,t.status_cd statusCd,t.community_id,t.community_id communityId,
+        t.req_path reqPath,t.req_type reqType
         from machine_translate_error t
         where 1 =1
         <if test="reqHeader !=null and reqHeader != ''">

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

@@ -64,6 +64,18 @@ public abstract class DatabusAdaptImpl implements IDatabusAdapt {
         return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
     }
 
+    /**
+     * 失败重新送IOT
+     *
+     * @param paramIn
+     * @return
+     */
+    @Override
+    public ResultVo reSendToIot(JSONObject paramIn) {
+        return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
+    }
+
+
     /**
      * 业主处理执行
      *

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

@@ -51,4 +51,6 @@ public interface IDatabusAdapt {
      * }
      */
     ResultVo restartMachine(JSONObject reqJson);
+
+    ResultVo reSendToIot(JSONObject reqJson);
 }

+ 50 - 0
service-job/src/main/java/com/java110/job/adapt/hcIot/ReSendIotAdapt.java

@@ -0,0 +1,50 @@
+/*
+ * 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.job.adapt.DatabusAdaptImpl;
+import com.java110.job.adapt.hcIot.asyn.IIotSendAsyn;
+import com.java110.utils.util.Assert;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * 重新同步
+ *
+ * 接口协议地址: https://gitee.com/java110/MicroCommunityThings/blob/master/back/docs/api.md
+ *
+ * @desc add by 吴学文 15:29
+ */
+@Component(value = "openDoorAdapt")
+public class ReSendIotAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private IIotSendAsyn hcMachineAsynImpl;
+
+    @Override
+    public ResultVo reSendToIot(JSONObject paramIn) {
+
+        Assert.hasKeyAndValue(paramIn, "machineTranslateId", "同步ID");
+        Assert.hasKeyAndValue(paramIn, "communityId", "小区ID");
+
+        hcMachineAsynImpl.reSendIot(paramIn);
+
+        return new ResultVo(ResultVo.CODE_OK, ResultVo.MSG_OK);
+    }
+
+}

+ 7 - 1
service-job/src/main/java/com/java110/job/adapt/hcIot/asyn/IIotSendAsyn.java

@@ -16,7 +16,6 @@
 package com.java110.job.adapt.hcIot.asyn;
 
 import com.alibaba.fastjson.JSONObject;
-import org.springframework.util.MultiValueMap;
 
 import java.util.List;
 
@@ -82,4 +81,11 @@ public interface IIotSendAsyn {
      * @param postParameters
      */
     void sendDeleteOwner(JSONObject postParameters);
+
+    /**
+     * 重新同步
+     *
+     * @param reqJson
+     */
+    void reSendIot(JSONObject reqJson);
 }

+ 80 - 32
service-job/src/main/java/com/java110/job/adapt/hcIot/asyn/impl/IotSendAsynImpl.java

@@ -20,6 +20,7 @@ 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.machineTranslateError.MachineTranslateErrorDto;
 import com.java110.intf.common.IMachineAttrInnerServiceSMO;
 import com.java110.intf.common.IMachineInnerServiceSMO;
 import com.java110.intf.common.IMachineTranslateErrorInnerServiceSMO;
@@ -110,9 +111,10 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.ADD_COMMUNITY_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.ADD_COMMUNITY_URL), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
             logger.debug("调用HC IOT信息:" + responseEntity);
             JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
 
@@ -125,7 +127,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
         } finally {
             saveTranslateLog(machineTranslateDto);
             refreshAccessToken(responseEntity);
@@ -146,23 +148,24 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.UPDATE_COMMUNITY_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.UPDATE_COMMUNITY_URL), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
             logger.debug("调用HC IOT信息:" + responseEntity);
             JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
             if (paramOut.getInteger("code") != ResultVo.CODE_OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(paramOut.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
             }
         } catch (Exception e) {
             logger.error("修改小区异常", e);
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
         } finally {
             saveTranslateLog(machineTranslateDto);
@@ -184,23 +187,24 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.DELETE_COMMUNITY_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.DELETE_COMMUNITY_URL), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
             logger.debug("调用HC IOT信息:" + responseEntity);
             JSONObject paramOut = JSONObject.parseObject(responseEntity.getBody());
             if (paramOut.getInteger("code") != ResultVo.CODE_OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(paramOut.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
             }
         } catch (Exception e) {
             logger.error("删除小区异常", e);
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
         } finally {
             saveTranslateLog(machineTranslateDto);
             refreshAccessToken(responseEntity);
@@ -227,6 +231,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.ADD_MACHINE_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
             responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.ADD_MACHINE_URL), HttpMethod.POST, httpEntity, String.class);
@@ -236,7 +241,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
                 return;
             }
             JSONObject tokenObj = JSONObject.parseObject(responseEntity.getBody());
@@ -245,7 +250,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 return;
             }
@@ -253,7 +258,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
             return;
         } finally {
@@ -286,16 +291,17 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.UPDATE_MACHINE_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.UPDATE_MACHINE_URL), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
 
             logger.debug("调用HC IOT信息:" + responseEntity);
 
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 return;
             }
@@ -305,14 +311,14 @@ public class IotSendAsynImpl implements IIotSendAsyn {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
                 return;
             }
         } catch (Exception e) {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
         } finally {
             saveTranslateLog(machineTranslateDto);
             refreshAccessToken(responseEntity);
@@ -338,14 +344,15 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.DELETE_MACHINE_URL);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.DELETE_MACHINE_URL), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
             logger.debug("调用HC IOT信息:" + responseEntity);
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 return;
             }
@@ -355,14 +362,14 @@ public class IotSendAsynImpl implements IIotSendAsyn {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
             }
         } catch (Exception e) {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
         } finally {
             saveTranslateLog(machineTranslateDto);
             refreshAccessToken(responseEntity);
@@ -383,15 +390,16 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.ADD_OWNER);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.ADD_OWNER), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
 
             logger.debug("调用HC IOT信息:" + responseEntity);
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
                 return;
             }
             JSONObject tokenObj = JSONObject.parseObject(responseEntity.getBody());
@@ -399,7 +407,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
             if (!tokenObj.containsKey("code") || ResultVo.CODE_OK != tokenObj.getInteger("code")) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 //保存 失败报文
             }
@@ -407,7 +415,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
 
         } finally {
@@ -429,14 +437,15 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.EDIT_OWNER);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.EDIT_OWNER), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
             logger.debug("调用HC IOT信息:" + responseEntity);
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 return;
             }
@@ -446,14 +455,14 @@ public class IotSendAsynImpl implements IIotSendAsyn {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
             }
         } catch (Exception e) {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
         } finally {
             saveTranslateLog(machineTranslateDto);
@@ -475,15 +484,16 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
         machineTranslateDto.setRemark("同步物联网系统成功");
         ResponseEntity<String> responseEntity = null;
+        String url = IotConstant.getUrl(IotConstant.DELETE_OWNER);
         try {
             HttpEntity httpEntity = new HttpEntity(postParameters.toJSONString(), getHeaders());
-            responseEntity = outRestTemplate.exchange(IotConstant.getUrl(IotConstant.DELETE_OWNER), HttpMethod.POST, httpEntity, String.class);
+            responseEntity = outRestTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
 
             logger.debug("调用HC IOT信息:" + responseEntity);
             if (responseEntity.getStatusCode() != HttpStatus.OK) {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(responseEntity.getBody());
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
                 return;
             }
@@ -493,14 +503,14 @@ public class IotSendAsynImpl implements IIotSendAsyn {
                 machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
                 machineTranslateDto.setRemark(tokenObj.getString("msg"));
                 //保存 失败报文
-                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+                saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
             }
         } catch (Exception e) {
             machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
             machineTranslateDto.setRemark(e.getLocalizedMessage());
             //保存 失败报文
-            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "");
+            saveTranslateError(machineTranslateDto, postParameters.toJSONString(), responseEntity != null ? responseEntity.getBody() : "", url);
 
 
         } finally {
@@ -509,6 +519,42 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         }
     }
 
+    /**
+     * 重试
+     *
+     * @param reqJson
+     */
+    @Override
+    public void reSendIot(JSONObject reqJson) {
+        MachineTranslateErrorDto machineTranslateErrorDto = new MachineTranslateErrorDto();
+        machineTranslateErrorDto.setCommunityId(reqJson.getString("communityId"));
+        machineTranslateErrorDto.setMachineTranslateId(reqJson.getString("machineTranslateId"));
+        List<MachineTranslateErrorDto> machineTranslateErrorDtos
+                = machineTranslateErrorInnerServiceSMOImpl.queryMachineTranslateErrors(machineTranslateErrorDto);
+
+        if (machineTranslateErrorDtos == null || machineTranslateErrorDtos.size() < 1) {
+            return;
+        }
+
+
+        HttpEntity httpEntity = new HttpEntity(machineTranslateErrorDtos.get(0).getReqBody(), getHeaders());
+        ResponseEntity<String> responseEntity
+                = outRestTemplate.exchange(machineTranslateErrorDtos.get(0).getReqPath(), HttpMethod.POST, httpEntity, String.class);
+        JSONObject tokenObj = JSONObject.parseObject(responseEntity.getBody());
+        MachineTranslateDto machineTranslateDto = new MachineTranslateDto();
+        machineTranslateDto.setMachineTranslateId(reqJson.getString("machineTranslateId"));
+        machineTranslateDto.setCommunityId(reqJson.getString("communityId"));
+        machineTranslateDto.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        if (!tokenObj.containsKey("code") || ResultVo.CODE_OK != tokenObj.getInteger("code")) {
+            machineTranslateDto.setState(MachineTranslateDto.STATE_ERROR);
+            machineTranslateDto.setRemark(tokenObj.getString("msg"));
+        } else {
+            machineTranslateDto.setState(MachineTranslateDto.STATE_SUCCESS);
+            machineTranslateDto.setRemark("同步物联网系统成功");
+        }
+        machineTranslateInnerServiceSMOImpl.updateMachineTranslateState(machineTranslateDto);
+    }
+
     /**
      * 存储交互 记录
      *
@@ -524,7 +570,7 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateInnerServiceSMOImpl.saveMachineTranslate(machineTranslateDto);
     }
 
-    public void saveTranslateError(MachineTranslateDto machineTranslateDto, String reqJson, String resJson) {
+    public void saveTranslateError(MachineTranslateDto machineTranslateDto, String reqJson, String resJson, String url) {
         machineTranslateDto.setMachineTranslateId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_machineTranslateId));
         MachineTranslateErrorPo machineTranslateErrorPo = new MachineTranslateErrorPo();
         machineTranslateErrorPo.setLogId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_logId));
@@ -533,6 +579,8 @@ public class IotSendAsynImpl implements IIotSendAsyn {
         machineTranslateErrorPo.setReqBody(reqJson);
         machineTranslateErrorPo.setReqHeader("");
         machineTranslateErrorPo.setResBody(resJson);
+        machineTranslateErrorPo.setReqPath(url);
+        machineTranslateErrorPo.setReqType(MachineTranslateErrorDto.REQ_TYPE_URL);
         machineTranslateErrorInnerServiceSMOImpl.saveMachineTranslateError(machineTranslateErrorPo);
     }