1098226878 4 年 前
コミット
f0d3683e85

+ 3 - 0
java110-bean/src/main/java/com/java110/dto/community/CommunityAttrDto.java

@@ -15,6 +15,9 @@ import java.util.Date;
  **/
 public class CommunityAttrDto extends PageDto implements Serializable {
 
+    public static final String SPEC_CD_GOV = "9329000004";
+    public static final String SPEC_CD_GOV_SECURE = "8329000004";
+
     private String attrId;
     private String communityId;
     private String specCd;

+ 28 - 0
java110-bean/src/main/java/com/java110/dto/reportData/ReportDataDto.java

@@ -0,0 +1,28 @@
+package com.java110.dto.reportData;
+
+import com.alibaba.fastjson.JSONObject;
+
+import java.io.Serializable;
+
+public class ReportDataDto implements Serializable {
+
+    private ReportDataHeaderDto reportDataHeaderDto;
+    private JSONObject reportDataBodyDto;
+
+
+    public ReportDataHeaderDto getReportDataHeaderDto() {
+        return reportDataHeaderDto;
+    }
+
+    public void setReportDataHeaderDto(ReportDataHeaderDto reportDataHeaderDto) {
+        this.reportDataHeaderDto = reportDataHeaderDto;
+    }
+
+    public JSONObject getReportDataBodyDto() {
+        return reportDataBodyDto;
+    }
+
+    public void setReportDataBodyDto(JSONObject reportDataBodyDto) {
+        this.reportDataBodyDto = reportDataBodyDto;
+    }
+}

+ 95 - 0
java110-bean/src/main/java/com/java110/dto/reportData/ReportDataHeaderDto.java

@@ -0,0 +1,95 @@
+package com.java110.dto.reportData;
+
+import java.io.Serializable;
+
+public class ReportDataHeaderDto implements Serializable {
+
+    public static final int CODE_SUCCESS = 0;
+    public static final int CODE_ERROR = -1;
+
+    public static final String MSG_SUCCESS= "成功";
+    public static final String MSG_ERROR= "系统错误";
+
+    public static final String RETUR_CODE= "1001"; //已发送
+    public static final String RETUR_SUCCESS_CODE= "2002"; //处理成功
+    public static final String RETUR_ERROR_CODE= "3003";//处理失败
+    public static final String RETUR_AGAIN_CODE= "4004";//重新发送
+
+    public static final String SYSTEM_COMMUNITY_TYPE= "777777";
+    public static final String SYSTEM_GOV_TYPE= "999999";
+    //暂时写死建筑物类型  一个ID 为612021083132790001	住宅
+    public static final String SYSTEM_FLOOR_TYPE= "612021083132790001";
+
+    private String serviceCode;
+    private String tranId;
+    private String reqTime;
+    private String sign;
+    private String resTime;
+    private int code;
+    private String msg;
+    private String extCommunityId;
+
+    public String getServiceCode() {
+        return serviceCode;
+    }
+
+    public void setServiceCode(String serviceCode) {
+        this.serviceCode = serviceCode;
+    }
+
+    public String getTranId() {
+        return tranId;
+    }
+
+    public void setTranId(String tranId) {
+        this.tranId = tranId;
+    }
+
+    public String getReqTime() {
+        return reqTime;
+    }
+
+    public void setReqTime(String reqTime) {
+        this.reqTime = reqTime;
+    }
+
+    public String getSign() {
+        return sign;
+    }
+
+    public void setSign(String sign) {
+        this.sign = sign;
+    }
+
+    public String getResTime() {
+        return resTime;
+    }
+
+    public void setResTime(String resTime) {
+        this.resTime = resTime;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    public String getExtCommunityId() {
+        return extCommunityId;
+    }
+
+    public void setExtCommunityId(String extCommunityId) {
+        this.extCommunityId = extCommunityId;
+    }
+}

+ 27 - 0
java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java

@@ -11,6 +11,8 @@ import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import com.java110.core.context.ApiDataFlow;
 import com.java110.core.context.DataFlow;
+import com.java110.dto.reportData.ReportDataDto;
+import com.java110.dto.reportData.ReportDataHeaderDto;
 import com.java110.utils.cache.JWTCache;
 import com.java110.utils.cache.MappingCache;
 import com.java110.utils.constant.CommonConstant;
@@ -379,6 +381,31 @@ public class AuthenticationFactory {
         return keyFactory.generatePrivate(pkcs8KeySpec);
     }
 
+    /**
+     * md5签名
+     *
+     * @param reportDataDto
+     * @return
+     */
+    public static void authReportDataSign(ReportDataDto reportDataDto, String code) throws NoAuthorityException {
+        ReportDataHeaderDto reportDataHeaderDto = reportDataDto.getReportDataHeaderDto();
+        if (reportDataHeaderDto == null) {
+            throw new IllegalArgumentException("参数错误");
+        }
+        String newSign = md5(reportDataHeaderDto.getTranId() + reportDataHeaderDto.getReqTime() + reportDataDto.getReportDataBodyDto().toJSONString() + code).toLowerCase();
+        if (!newSign.equals(reportDataHeaderDto.getSign())) {
+            throw new IllegalArgumentException("签名失败");
+        }
+    }
+
+    public static void generatorReportDataSign(ReportDataDto reportDataDto, String code) {
+        ReportDataHeaderDto reportDataHeaderDto = reportDataDto.getReportDataHeaderDto();
+        if (reportDataHeaderDto == null) {
+            throw new IllegalArgumentException("参数错误");
+        }
+        String newSign = md5(reportDataHeaderDto.getTranId() + reportDataHeaderDto.getReqTime() + reportDataDto.getReportDataBodyDto().toJSONString() + code).toLowerCase();
+        reportDataHeaderDto.setSign(newSign);
+    }
     /**
      * 加载公钥
      *

+ 6 - 0
java110-db/src/main/resources/mapper/community/CommunityServiceDaoImplMapper.xml

@@ -143,6 +143,12 @@
         <if test="communityId != null and communityId !=''">
             and sa.community_id = #{communityId}
         </if>
+        <if test="specCd != null and specCd !=''">
+            and sa.spec_cd = #{specCd}
+        </if>
+        <if test="value != null and value !=''">
+            and sa.value = #{value}
+        </if>
         <if test="communityIds != null ">
             and sa.community_id in
             <foreach collection="communityIds" item="item" index="index" open="(" close=")" separator=",">

+ 8 - 0
java110-interface/src/main/java/com/java110/intf/community/IFloorAttrInnerServiceSMO.java

@@ -50,4 +50,12 @@ public interface IFloorAttrInnerServiceSMO {
      */
     @RequestMapping(value = "/saveFloorAttr", method = RequestMethod.POST)
     int saveFloorAttr(@RequestBody FloorAttrPo floorAttrPo);
+    /**
+     * 保存 楼栋属性
+     *
+     * @param floorAttrPo 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/updateFloorAttrInfoInstance", method = RequestMethod.POST)
+    int updateFloorAttrInfoInstance(@RequestBody FloorAttrPo floorAttrPo);
 }

+ 1 - 1
service-community/src/main/java/com/java110/community/dao/IFloorAttrServiceDao.java

@@ -67,7 +67,7 @@ public interface IFloorAttrServiceDao {
      * @param info 修改信息
      * @throws DAOException DAO异常
      */
-    void updateFloorAttrInfoInstance(Map info) throws DAOException;
+    int updateFloorAttrInfoInstance(Map info) throws DAOException;
 
 
     /**

+ 2 - 1
service-community/src/main/java/com/java110/community/dao/impl/FloorAttrServiceDaoImpl.java

@@ -102,7 +102,7 @@ public class FloorAttrServiceDaoImpl extends BaseServiceDao implements IFloorAtt
      * @throws DAOException DAO异常
      */
     @Override
-    public void updateFloorAttrInfoInstance(Map info) throws DAOException {
+    public int updateFloorAttrInfoInstance(Map info) throws DAOException {
         logger.debug("修改考勤班组属性信息Instance 入参 info : {}", info);
 
         int saveFlag = sqlSessionTemplate.update("floorAttrServiceDaoImpl.updateFloorAttrInfoInstance", info);
@@ -110,6 +110,7 @@ public class FloorAttrServiceDaoImpl extends BaseServiceDao implements IFloorAtt
         if (saveFlag < 1) {
             throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "修改考勤班组属性信息Instance数据失败:" + JSONObject.toJSONString(info));
         }
+        return saveFlag;
     }
 
     /**

+ 5 - 0
service-community/src/main/java/com/java110/community/smo/impl/FloorAttrInnerServiceSMOImpl.java

@@ -56,6 +56,11 @@ public class FloorAttrInnerServiceSMOImpl extends BaseServiceSMO implements IFlo
         return floorAttrServiceDaoImpl.saveFloorAttr(BeanConvertUtil.beanCovertMap(floorAttrPo));
     }
 
+    @Override
+    public int updateFloorAttrInfoInstance(@RequestBody FloorAttrPo floorAttrPo) {
+        return floorAttrServiceDaoImpl.updateFloorAttrInfoInstance(BeanConvertUtil.beanCovertMap(floorAttrPo));
+    }
+
     public IFloorAttrServiceDao getFloorAttrServiceDaoImpl() {
         return floorAttrServiceDaoImpl;
     }

+ 7 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/IReportReturnDataAdapt.java

@@ -0,0 +1,7 @@
+package com.java110.job.adapt.hcGov;
+
+import com.java110.dto.reportData.ReportDataDto;
+
+public interface IReportReturnDataAdapt {
+    void reportReturn(ReportDataDto reportDataDto, String extCommunityId);
+}

+ 3 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/asyn/BaseHcGovSendAsyn.java

@@ -6,6 +6,9 @@ public interface BaseHcGovSendAsyn {
 
     public JSONObject createHeadersOrBody(JSONObject body,String extCommunityId,String serviceCode,String secure);
 
+    public void saveHcGovLog(JSONObject paramIn,String communityId,String topic,String objId,String secure);
+
+    public void updateHcGovLog(JSONObject paramIn);
 
     public void sendKafka(String topic,JSONObject massage,String communityId,String objId,String secure);
 }

+ 30 - 2
service-job/src/main/java/com/java110/job/adapt/hcGov/asyn/impl/BaseHcGovSendAsynImpl.java

@@ -2,6 +2,7 @@ package com.java110.job.adapt.hcGov.asyn.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.reportData.ReportDataHeaderDto;
 import com.java110.intf.common.IHcGovTranslateDetailInnerServiceSMO;
 import com.java110.intf.common.IHcGovTranslateInnerServiceSMO;
 import com.java110.job.adapt.hcGov.HcGovConstant;
@@ -38,7 +39,7 @@ public class BaseHcGovSendAsynImpl implements BaseHcGovSendAsyn {
     }
 
 
-    protected void saveHcGovLog(JSONObject paramIn,String communityId,String topic,String objId,String secure) {
+     public void saveHcGovLog(JSONObject paramIn,String communityId,String topic,String objId,String secure) {
         Assert.hasKeyAndValue(paramIn, "header", "请求报文中未包含header");
         Assert.hasKeyAndValue(paramIn, "body", "请求报文中未包含body");
         JSONObject heard = paramIn.getJSONObject("header");
@@ -56,7 +57,7 @@ public class BaseHcGovSendAsynImpl implements BaseHcGovSendAsyn {
         hcGovTranslatePo.setReqTime(heard.getString("reqTime"));
         hcGovTranslatePo.setServiceCode(heard.getString("serviceCode"));
         hcGovTranslatePo.setSign(heard.getString("sign"));
-        hcGovTranslatePo.setState("1001");
+        hcGovTranslatePo.setState(ReportDataHeaderDto.RETUR_CODE);
         hcGovTranslatePo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         hcGovTranslatePo.setRemark("物业系统自动推送楼栋信息到政务系统");
         int flag = hcGovTranslateInnerServiceSMOImpl.saveHcGovTranslate(hcGovTranslatePo);
@@ -74,6 +75,33 @@ public class BaseHcGovSendAsynImpl implements BaseHcGovSendAsyn {
         }
     }
 
+     public void updateHcGovLog(JSONObject paramIn) {
+        Assert.hasKeyAndValue(paramIn, "header", "请求报文中未包含header");
+        Assert.hasKeyAndValue(paramIn, "body", "请求报文中未包含body");
+        JSONObject heard = paramIn.getJSONObject("header");
+        JSONObject body = paramIn.getJSONObject("body");
+
+        HcGovTranslatePo hcGovTranslatePo = new HcGovTranslatePo();
+        hcGovTranslatePo.setTranId(heard.getString("tranId"));
+         hcGovTranslatePo.setState(ReportDataHeaderDto.RETUR_SUCCESS_CODE);
+        if(!Integer.toString(ReportDataHeaderDto.CODE_SUCCESS).equals(heard.getString("code"))){
+            hcGovTranslatePo.setState(ReportDataHeaderDto.RETUR_ERROR_CODE);
+        }
+
+        hcGovTranslatePo.setUpdateTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        int flag = hcGovTranslateInnerServiceSMOImpl.updateHcGovTranslate(hcGovTranslatePo);
+        if(flag < 1){
+            throw new IllegalArgumentException("更新物业系统保存楼栋日志失败");
+        }
+        HcGovTranslateDetailPo hcGovTranslateDetailPo = new HcGovTranslateDetailPo();
+        hcGovTranslateDetailPo.setTranId(hcGovTranslatePo.getTranId());
+        hcGovTranslateDetailPo.setResBody(paramIn.toJSONString());
+        flag = hcGovTranslateDetailInnerServiceSMOImpl.updateHcGovTranslateDetail(hcGovTranslateDetailPo);
+        if(flag < 1){
+            throw new IllegalArgumentException("物业系统保存楼栋推送报文明细日志失败");
+        }
+    }
+
     public void sendKafka(String topic,JSONObject massage,String communityId,String objId,String secure) {
         try {
             KafkaFactory.sendKafkaMessage(topic,massage.toJSONString());

+ 1 - 1
service-job/src/main/java/com/java110/job/adapt/hcGov/floor/AddFloorToHcGovAdapt.java

@@ -125,7 +125,7 @@ public class AddFloorToHcGovAdapt extends DatabusAdaptImpl {
         body.put("layerCount", layerCount);
         body.put("unitCount", floorUse);
         body.put("floorUse", tmpCommunityDto.getName() + "_住宅");
-        body.put("personName", "HC小区管理系统");
+        body.put("personName", "小区管理系统");
         body.put("personLink", "18909711234");
 
         JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.ADD_FLOOR_ACTION, HcGovConstant.COMMUNITY_SECURE);

+ 87 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/floor/AddFloorToHcGovReturnAdapt.java

@@ -0,0 +1,87 @@
+/*
+ * 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.hcGov.floor;
+
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.community.CommunityAttrDto;
+import com.java110.dto.floorAttr.FloorAttrDto;
+import com.java110.dto.hcGovTranslate.HcGovTranslateDto;
+import com.java110.dto.reportData.ReportDataDto;
+import com.java110.intf.common.IHcGovTranslateInnerServiceSMO;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IFloorAttrInnerServiceSMO;
+import com.java110.job.adapt.hcGov.IReportReturnDataAdapt;
+import com.java110.po.floorAttr.FloorAttrPo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 新增楼栋同步HC政务接口 返回
+ * <p>
+ * 接口协议地址: https://gitee.com/java110/microCommunityInformation/tree/master/info-doc#1%E6%A5%BC%E6%A0%8B%E4%B8%8A%E4%BC%A0
+ *
+ * @desc add by 吴学文 16:20
+ */
+@Component(value = "ADD_FLOOR_RETURN")
+public class AddFloorToHcGovReturnAdapt implements IReportReturnDataAdapt {
+
+    @Autowired
+    private IFloorAttrInnerServiceSMO floorAttrInnerServiceSMOImpl;
+    @Autowired
+    private IHcGovTranslateInnerServiceSMO hcGovTranslateInnerServiceSMOImpl;
+
+    @Override
+    public void reportReturn(ReportDataDto reportDataDto, String extCommunityId) {
+
+        HcGovTranslateDto hcGovTranslateDto = new HcGovTranslateDto();
+        hcGovTranslateDto.setTranId(reportDataDto.getReportDataHeaderDto().getTranId());
+        hcGovTranslateDto.setServiceCode(reportDataDto.getReportDataHeaderDto().getServiceCode());
+        List<HcGovTranslateDto> hcGovTranslateDtos = hcGovTranslateInnerServiceSMOImpl.queryHcGovTranslates(hcGovTranslateDto);
+        if (hcGovTranslateDtos == null || hcGovTranslateDtos.size() < 1) {
+            throw new IllegalArgumentException("查询推送报文失败。不是同一订单信息");
+        }
+
+        FloorAttrDto floorAttrDto = new FloorAttrDto();
+        floorAttrDto.setFloorId(hcGovTranslateDtos.get(0).getObjId());
+        floorAttrDto.setCommunityId(hcGovTranslateDtos.get(0).getCommunityId());
+        floorAttrDto.setSpecCd(CommunityAttrDto.SPEC_CD_GOV);
+        List<FloorAttrDto> floorAttrDtos = floorAttrInnerServiceSMOImpl.queryFloorAttrs(floorAttrDto);
+
+        FloorAttrPo floorAttrPo = new FloorAttrPo();
+        floorAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_floorId));
+        floorAttrPo.setFloorId(floorAttrDto.getFloorId());
+        floorAttrPo.setCommunityId(floorAttrDto.getCommunityId());
+        floorAttrPo.setSpecCd(floorAttrDto.getSpecCd());
+        floorAttrPo.setValue(reportDataDto.getReportDataBodyDto().getString("extFloorId"));
+        if (floorAttrDtos == null || floorAttrDtos.size() < 1) {
+            int flag = floorAttrInnerServiceSMOImpl.saveFloorAttr(floorAttrPo);
+            if (flag < 1) {
+                throw new IllegalArgumentException("保存楼栋属性失败");
+            }
+        } else {
+            floorAttrPo.setAttrId(floorAttrDtos.get(0).getAttrId());
+            int flag = floorAttrInnerServiceSMOImpl.updateFloorAttrInfoInstance(floorAttrPo);
+            if (flag < 1) {
+                throw new IllegalArgumentException("修改楼栋属性失败");
+            }
+
+        }
+
+
+    }
+}

+ 92 - 6
service-job/src/main/java/com/java110/job/kafka/JobServiceKafka.java

@@ -3,15 +3,26 @@ package com.java110.job.kafka;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.BusinessServiceDataFlow;
+import com.java110.core.factory.AuthenticationFactory;
 import com.java110.core.factory.DataTransactionFactory;
+import com.java110.dto.community.CommunityAttrDto;
+import com.java110.dto.community.CommunityDto;
+import com.java110.dto.reportData.ReportDataDto;
+import com.java110.dto.reportData.ReportDataHeaderDto;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.job.adapt.hcGov.HcGovConstant;
+import com.java110.job.adapt.hcGov.IReportReturnDataAdapt;
+import com.java110.job.adapt.hcGov.asyn.BaseHcGovSendAsyn;
 import com.java110.job.smo.IJobServiceSMO;
 import com.java110.utils.constant.KafkaConstant;
 import com.java110.utils.constant.ResponseConstant;
 import com.java110.utils.constant.StatusConstant;
 import com.java110.utils.exception.InitConfigDataException;
 import com.java110.utils.exception.InitDataFlowContextException;
+import com.java110.utils.factory.ApplicationContextFactory;
 import com.java110.utils.kafka.KafkaFactory;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -19,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.kafka.annotation.KafkaListener;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -29,8 +41,14 @@ public class JobServiceKafka extends BaseController {
 
     private final static Logger logger = LoggerFactory.getLogger(JobServiceKafka.class);
 
+    public static final String KAFKA_RETURN = "_RETURN";
+
     @Autowired
     private IJobServiceSMO jobServiceSMOImpl;
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+    @Autowired
+    private BaseHcGovSendAsyn baseHcGovSendAsynImpl;
 
     @KafkaListener(topics = {"jobServiceTopic"})
     public void listen(ConsumerRecord<?, ?> record) {
@@ -73,20 +91,88 @@ public class JobServiceKafka extends BaseController {
 
     @KafkaListener(topics = {"${kafka.hcGovTopic}"})
     public void hcGovListen(ConsumerRecord<?, ?> record) {
-        logger.info("kafka的key: " + record.key());
-        logger.info("kafka的value: " + record.value().toString());
+
         String orderInfo = record.value().toString();
+        logger.debug("hcGovkafka 接收到数据", orderInfo);
+        doListen(orderInfo);
+
+    }
 
+    private void doListen(String orderInfo) {
+        JSONObject reqJson = JSONObject.parseObject(orderInfo);
+        ReportDataDto reportDataDto = null;
+        JSONObject header = reqJson.getJSONObject("header");
+
+        String extCommunityId = header.getString("extCommunityId");
+
+        //签名校验
+        CommunityDto community = null;
         try {
-            logger.debug("hcGovkafka 接收到数据", orderInfo);
-            //responseJson = jobServiceSMOImpl.service(businessServiceDataFlow);
+            //获得小区对象
+            String secure = getExtCommunityCode(extCommunityId);
+            //报文合规性校验
+            preValiateOrderInfo(orderInfo);
+            //构建对象
+            reportDataDto = freshReportDataDto(orderInfo);
+            //签名认证
+            AuthenticationFactory.authReportDataSign(reportDataDto, secure);
+            //适配器
+            IReportReturnDataAdapt reportDataAdapt = ApplicationContextFactory.getBean(reportDataDto.getReportDataHeaderDto().getServiceCode() + KAFKA_RETURN, IReportReturnDataAdapt.class);
+            if (reportDataAdapt == null) {
+                throw new IllegalArgumentException("serviceCode 错误 请检查");
+            }
+            //业务处理
+            reportDataAdapt.reportReturn(reportDataDto, extCommunityId);
+
         } catch (Exception e) {
-            logger.error("请求订单异常", e);
-        } finally {
+            logger.error("政务回写失败", e);
+        }finally {
+            //回写日志表
+            baseHcGovSendAsynImpl.updateHcGovLog(reqJson);
+        }
+
+    }
+
+    /**
+     * 获取小区密钥
+     *
+     * @param extCommunityId
+     * @return
+     */
+    private String getExtCommunityCode(String extCommunityId) {
 
+        CommunityAttrDto communityAttrDto = new CommunityAttrDto();
+        communityAttrDto.setSpecCd(CommunityAttrDto.SPEC_CD_GOV);
+        communityAttrDto.setValue(extCommunityId);
+        List<CommunityAttrDto> tmpCommunityAttrDtos = communityInnerServiceSMOImpl.getCommunityAttrs(communityAttrDto);
+        if (tmpCommunityAttrDtos == null || tmpCommunityAttrDtos.size() < 1) {
+            return HcGovConstant.COMMUNITY_SECURE;
         }
+        communityAttrDto = new CommunityAttrDto();
+        communityAttrDto.setSpecCd(CommunityAttrDto.SPEC_CD_GOV_SECURE);
+        communityAttrDto.setCommunityId(tmpCommunityAttrDtos.get(0).getCommunityId());
+        tmpCommunityAttrDtos = communityInnerServiceSMOImpl.getCommunityAttrs(communityAttrDto);
+        if (tmpCommunityAttrDtos == null || tmpCommunityAttrDtos.size() < 1) {
+            return HcGovConstant.COMMUNITY_SECURE;
+        }
+        return tmpCommunityAttrDtos.get(0).getValue();
     }
 
+    /**
+     * 构建对象
+     *
+     * @param orderInfo
+     * @return
+     */
+    private ReportDataDto freshReportDataDto(String orderInfo) {
+        ReportDataDto reportDataDto = new ReportDataDto();
+        JSONObject reqJson = JSONObject.parseObject(orderInfo);
+        ReportDataHeaderDto reportDataHeaderDto = BeanConvertUtil.covertBean(reqJson.getJSONObject("header"), ReportDataHeaderDto.class);
+        reportDataDto.setReportDataHeaderDto(reportDataHeaderDto);
+        reportDataDto.setReportDataBodyDto(reqJson.getJSONObject("body"));
+
+        return reportDataDto;
+    }
 
     /**
      * 这里预校验,请求报文中不能有 dataFlowId