Forráskód Böngészése

楼栋信息推送政务

1098226878 4 éve%!(EXTRA string=óta)
szülő
commit
418419ee77

+ 1 - 0
java110-bean/src/main/java/com/java110/po/activities/ActivitiesPo.java

@@ -5,6 +5,7 @@ import com.java110.dto.PageDto;
 import java.io.Serializable;
 import java.util.Date;
 
+
 /**
  * @ClassName FloorDto
  * @Description 活动数据层封装

+ 9 - 0
java110-core/src/main/java/com/java110/core/kafka/KafkaConsumerConfig.java

@@ -34,6 +34,8 @@ public class KafkaConsumerConfig {
     private String autoOffsetReset;
     @Value("${kafka.consumer.concurrency}")
     private int concurrency;
+    @Value("${kafka.consumer.topic}")
+    public String topic;
     @Bean
     public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory() {
         ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<String, String>();
@@ -61,4 +63,11 @@ public class KafkaConsumerConfig {
         return propsMap;
     }
 
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
 }

+ 55 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/HcGovConstant.java

@@ -0,0 +1,55 @@
+/*
+ * 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;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.factory.AuthenticationFactory;
+
+/**
+ * HCGOV 政务常量类
+ * 接口协议地址: 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 吴学文 9:49
+ */
+public class HcGovConstant {
+
+    public static final int CODE_OK = 200; // 成功
+
+
+    public static final String GOV_DOMAIN = "DOMAIN_GOV"; // 政务域
+    public static final String COMMUNITY_SECURE = "978984641654"; // 小区密钥
+    public static final String FLOOR_TYPE = "FLOOR_TYPE"; // 楼栋类型
+    public static final String GOV_TOPIC = "hcGov"; // 楼栋类型
+
+
+    //政务小区编码
+    public static final String EXT_COMMUNITY_ID = "9329000004";
+
+    //添加楼栋
+    public static final String ADD_FLOOR_ACTION = "ADD_FLOOR";
+    //修改楼栋
+    public static final String EDIT_FLOOR_ACTION = "EDIT_FLOOR";
+    //删除楼栋
+    public static final String DEL_FLOOR_ACTION = "DEL_FLOOR";
+
+    public static void generatorProducerSign(JSONObject header, JSONObject body, String code) {
+
+        String newSign = AuthenticationFactory.md5(header.getString("tranId") + header.getString("reqTime") + body.toJSONString() + code).toLowerCase();
+        header.put("sign",newSign);
+    }
+
+}

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

@@ -0,0 +1,135 @@
+/*
+ * 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.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.kafka.KafkaConsumerConfig;
+import com.java110.dto.UnitDto;
+import com.java110.dto.community.CommunityAttrDto;
+import com.java110.dto.community.CommunityDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IUnitInnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.adapt.hcGov.HcGovConstant;
+import com.java110.po.floor.FloorPo;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.kafka.KafkaFactory;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.PayUtil;
+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 = "addFloorToHcGovAdapt")
+public class AddFloorToHcGovAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+    @Autowired
+    private IUnitInnerServiceSMO unitInnerServiceSMOImpl;
+
+
+    /**
+     *
+     * @param business   当前处理业务
+     * @param businesses 所有业务信息
+     */
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        JSONObject data = business.getData();
+        if (data.containsKey(FloorPo.class.getSimpleName())) {
+            Object bObj = data.get(FloorPo.class.getSimpleName());
+            JSONArray businessOwnerCars = null;
+            if (bObj instanceof JSONObject) {
+                businessOwnerCars = new JSONArray();
+                businessOwnerCars.add(bObj);
+            } else if (bObj instanceof List) {
+                businessOwnerCars = JSONArray.parseArray(JSONObject.toJSONString(bObj));
+            } else {
+                businessOwnerCars = (JSONArray) bObj;
+            }
+            //JSONObject businessOwnerCar = data.getJSONObject("businessOwnerCar");
+            for (int bOwnerCarIndex = 0; bOwnerCarIndex < businessOwnerCars.size(); bOwnerCarIndex++) {
+                JSONObject businessOwnerCar = businessOwnerCars.getJSONObject(bOwnerCarIndex);
+                doAddFloor(business, businessOwnerCar);
+            }
+        }
+    }
+
+    private void doAddFloor(Business business, JSONObject businessFloor) {
+
+        FloorPo floorPo = BeanConvertUtil.covertBean(businessFloor, FloorPo.class);
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityId(floorPo.getCommunityId());
+        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
+
+        Assert.listOnlyOne(communityDtos, "未包含小区信息");
+        CommunityDto tmpCommunityDto = communityDtos.get(0);
+        String extCommunityId = "";
+
+        for (CommunityAttrDto communityAttrDto : tmpCommunityDto.getCommunityAttrDtos()) {
+            if (HcGovConstant.EXT_COMMUNITY_ID.equals(communityAttrDto.getSpecCd())) {
+                extCommunityId = communityAttrDto.getValue();
+            }
+        }
+        UnitDto unitDto = new UnitDto();
+        unitDto.setFloorId(floorPo.getFloorId());
+        unitDto.setCommunityId(floorPo.getCommunityId());
+        List<UnitDto> unitDtos = unitInnerServiceSMOImpl.queryUnits(unitDto);
+        Assert.listOnlyOne(unitDtos, "未包含单元信息");
+
+
+        JSONObject body = new JSONObject();
+        body.put("floorNum", floorPo.getFloorNum());
+        body.put("floorName", floorPo.getName());
+        body.put("floorType", MappingCache.getValue(HcGovConstant.GOV_DOMAIN,HcGovConstant.FLOOR_TYPE));
+        body.put("floorArea", floorPo.getFloorArea());
+        body.put("layerCount", unitDtos.get(0).getLayerCount());
+        body.put("unitCount", unitDtos.size());
+        body.put("floorUse", tmpCommunityDto.getName()+"_住宅");
+        body.put("personName", "HC小区管理系统");
+        body.put("personLink", "18909711234");
+
+        JSONObject heard = new JSONObject();
+        heard.put("serviceCode",HcGovConstant.ADD_FLOOR_ACTION);
+        heard.put("extCommunityId",extCommunityId);
+        heard.put("tranId", PayUtil.makeUUID(15));
+        heard.put("reqTime",DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        HcGovConstant.generatorProducerSign(heard,body,HcGovConstant.ADD_FLOOR_ACTION);
+        JSONObject kafkaData = new JSONObject();
+        kafkaData.put("header",heard);
+        kafkaData.put("body",body);
+        try {
+            KafkaFactory.sendKafkaMessage(HcGovConstant.GOV_TOPIC,kafkaData.toJSONString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+}

+ 11 - 5
service-job/src/main/java/com/java110/job/kafka/JobServiceKafka.java

@@ -11,6 +11,7 @@ import com.java110.utils.constant.StatusConstant;
 import com.java110.utils.exception.InitConfigDataException;
 import com.java110.utils.exception.InitDataFlowContextException;
 import com.java110.utils.kafka.KafkaFactory;
+import com.java110.utils.util.Assert;
 import org.apache.kafka.clients.consumer.ConsumerRecord;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -43,7 +44,7 @@ public class JobServiceKafka extends BaseController {
             //预校验
             preValiateOrderInfo(orderInfo);
             businessServiceDataFlow = this.writeDataToDataFlowContext(orderInfo, headers);
-            responseJson = jobServiceSMOImpl.service(businessServiceDataFlow);
+            //responseJson = jobServiceSMOImpl.service(businessServiceDataFlow);
         } catch (InitDataFlowContextException e) {
             logger.error("请求报文错误,初始化 BusinessServiceDataFlow失败" + orderInfo, e);
             responseJson = DataTransactionFactory.createNoBusinessTypeBusinessResponseJson(orderInfo, ResponseConstant.RESULT_PARAM_ERROR, e.getMessage(), null);
@@ -77,9 +78,14 @@ public class JobServiceKafka extends BaseController {
      * @param orderInfo
      */
     private void preValiateOrderInfo(String orderInfo) {
-       /* if(JSONObject.parseObject(orderInfo).getJSONObject("orders").containsKey("dataFlowId")){
-            throw new BusinessException(ResponseConstant.RESULT_CODE_ERROR,"报文中不能存在dataFlowId节点");
-        }*/
+        JSONObject reqJson = JSONObject.parseObject(orderInfo);
+        Assert.hasKeyAndValue(reqJson, "header", "请求报文中未包含header");
+        Assert.hasKeyAndValue(reqJson, "body", "请求报文中未包含body");
+        JSONObject header = reqJson.getJSONObject("header");
+        Assert.hasKeyAndValue(header, "serviceCode", "请求报文中未包含serviceCode");
+        Assert.hasKeyAndValue(header, "sign", "请求报文中未包含sign");
+        Assert.hasKeyAndValue(header, "resTime", "请求报文中未包含reqTime");
+        Assert.hasKeyAndValue(header, "code", "请求报文中未包含reqTime");
+        Assert.hasKeyAndValue(header, "msg", "请求报文中未包含reqTime");
     }
-
 }