Browse Source

Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity

java110 4 years ago
parent
commit
d50d64595a
26 changed files with 1541 additions and 117 deletions
  1. 77 0
      java110-bean/src/main/java/com/java110/dto/meterType/MeterTypeDto.java
  2. 20 0
      java110-bean/src/main/java/com/java110/entity/assetImport/ImportOwner.java
  3. 68 0
      java110-bean/src/main/java/com/java110/po/meterType/MeterTypePo.java
  4. 93 0
      java110-db/src/main/resources/mapper/fee/MeterTypeV1ServiceDaoImplMapper.xml
  5. 7 11
      java110-generator/src/main/java/com/java110/code/TableToJson.java
  6. 12 13
      java110-generator/src/main/java/com/java110/code/TableToJsonWeb.java
  7. 1 1
      java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java
  8. 1 1
      java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java
  9. 11 35
      java110-generator/src/main/resources/newBack/template_1.json
  10. 27 46
      java110-generator/src/main/resources/web/template_1.json
  11. 68 0
      java110-interface/src/main/java/com/java110/intf/fee/IMeterTypeV1InnerServiceSMO.java
  12. 31 7
      service-api/src/main/java/com/java110/api/smo/assetImport/impl/AssetImportSMOImpl.java
  13. 71 0
      service-fee/src/main/java/com/java110/fee/cmd/meterType/DeleteMeterTypeCmd.java
  14. 84 0
      service-fee/src/main/java/com/java110/fee/cmd/meterType/ListMeterTypeCmd.java
  15. 76 0
      service-fee/src/main/java/com/java110/fee/cmd/meterType/SaveMeterTypeCmd.java
  16. 74 0
      service-fee/src/main/java/com/java110/fee/cmd/meterType/UpdateMeterTypeCmd.java
  17. 77 0
      service-fee/src/main/java/com/java110/fee/dao/IMeterTypeV1ServiceDao.java
  18. 112 0
      service-fee/src/main/java/com/java110/fee/dao/impl/MeterTypeV1ServiceDaoImpl.java
  19. 89 0
      service-fee/src/main/java/com/java110/fee/smo/impl/MeterTypeV1InnerServiceSMOImpl.java
  20. 5 0
      service-job/src/main/java/com/java110/job/adapt/hcGov/HcGovConstant.java
  21. 169 0
      service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovAdapt.java
  22. 79 0
      service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovReturnAdapt.java
  23. 196 0
      service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovAdapt.java
  24. 55 0
      service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovReturnAdapt.java
  25. 1 1
      service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/AddParkingAreaToHcGovReturnAdapt.java
  26. 37 2
      service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/EditParkingAreaToHcGovAdapt.java

+ 77 - 0
java110-bean/src/main/java/com/java110/dto/meterType/MeterTypeDto.java

@@ -0,0 +1,77 @@
+package com.java110.dto.meterType;
+
+import com.java110.dto.PageDto;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName FloorDto
+ * @Description 抄表类型数据层封装
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+public class MeterTypeDto extends PageDto implements Serializable {
+
+    private String typeName;
+    private String typeId;
+    private String remark;
+    private String communityId;
+
+
+    private Date createTime;
+
+    private String statusCd = "0";
+
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public String getTypeId() {
+        return typeId;
+    }
+
+    public void setTypeId(String typeId) {
+        this.typeId = typeId;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+}

+ 20 - 0
java110-bean/src/main/java/com/java110/entity/assetImport/ImportOwner.java

@@ -22,6 +22,10 @@ public class ImportOwner {
 
     private String idCard;
 
+    private String ownerTypeCd;
+
+    private String parentOwnerId;
+
     public String getOwnerNum() {
         return ownerNum;
     }
@@ -77,4 +81,20 @@ public class ImportOwner {
     public void setIdCard(String idCard) {
         this.idCard = idCard;
     }
+
+    public String getOwnerTypeCd() {
+        return ownerTypeCd;
+    }
+
+    public void setOwnerTypeCd(String ownerTypeCd) {
+        this.ownerTypeCd = ownerTypeCd;
+    }
+
+    public String getParentOwnerId() {
+        return parentOwnerId;
+    }
+
+    public void setParentOwnerId(String parentOwnerId) {
+        this.parentOwnerId = parentOwnerId;
+    }
 }

+ 68 - 0
java110-bean/src/main/java/com/java110/po/meterType/MeterTypePo.java

@@ -0,0 +1,68 @@
+/*
+ * 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.po.meterType;
+
+import java.io.Serializable;
+import java.util.Date;
+/**
+ * 类表述: Po 数据模型实体对象 基本保持与数据库模型一直 用于 增加修改删除 等时的数据载体
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+public class MeterTypePo implements Serializable {
+
+    private String typeName;
+private String typeId;
+private String remark;
+private String statusCd = "0";
+private String communityId;
+public String getTypeName() {
+        return typeName;
+    }
+public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+public String getTypeId() {
+        return typeId;
+    }
+public void setTypeId(String typeId) {
+        this.typeId = typeId;
+    }
+public String getRemark() {
+        return remark;
+    }
+public void setRemark(String remark) {
+        this.remark = remark;
+    }
+public String getStatusCd() {
+        return statusCd;
+    }
+public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+public String getCommunityId() {
+        return communityId;
+    }
+public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+
+
+}

+ 93 - 0
java110-db/src/main/resources/mapper/fee/MeterTypeV1ServiceDaoImplMapper.xml

@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="meterTypeV1ServiceDaoImpl">
+
+
+    <!-- 保存抄表类型信息 add by wuxw 2018-07-03 -->
+    <insert id="saveMeterTypeInfo" parameterType="Map">
+        insert into meter_type(
+        type_name,type_id,remark,community_id
+        ) values (
+        #{typeName},#{typeId},#{remark},#{communityId}
+        )
+    </insert>
+
+
+    <!-- 查询抄表类型信息 add by wuxw 2018-07-03 -->
+    <select id="getMeterTypeInfo" parameterType="Map" resultType="Map">
+        select t.type_name,t.type_name typeName,t.type_id,t.type_id typeId,t.remark,t.status_cd,t.status_cd
+        statusCd,t.community_id,t.community_id communityId,t.create_time createTime
+        from meter_type t
+        where 1 =1
+        <if test="typeName !=null and typeName != ''">
+            and t.type_name= #{typeName}
+        </if>
+        <if test="typeId !=null and typeId != ''">
+            and t.type_id= #{typeId}
+        </if>
+        <if test="remark !=null and remark != ''">
+            and t.remark= #{remark}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+        order by t.create_time desc
+        <if test="page != -1 and page != null ">
+            limit #{page}, #{row}
+        </if>
+
+    </select>
+
+
+    <!-- 修改抄表类型信息 add by wuxw 2018-07-03 -->
+    <update id="updateMeterTypeInfo" parameterType="Map">
+        update meter_type t set t.status_cd = #{statusCd}
+        <if test="newBId != null and newBId != ''">
+            ,t.b_id = #{newBId}
+        </if>
+        <if test="typeName !=null and typeName != ''">
+            , t.type_name= #{typeName}
+        </if>
+        <if test="remark !=null and remark != ''">
+            , t.remark= #{remark}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            , t.community_id= #{communityId}
+        </if>
+        where 1=1
+        <if test="typeId !=null and typeId != ''">
+            and t.type_id= #{typeId}
+        </if>
+
+    </update>
+
+    <!-- 查询抄表类型数量 add by wuxw 2018-07-03 -->
+    <select id="queryMeterTypesCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from meter_type t
+        where 1 =1
+        <if test="typeName !=null and typeName != ''">
+            and t.type_name= #{typeName}
+        </if>
+        <if test="typeId !=null and typeId != ''">
+            and t.type_id= #{typeId}
+        </if>
+        <if test="remark !=null and remark != ''">
+            and t.remark= #{remark}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+
+
+    </select>
+
+</mapper>

+ 7 - 11
java110-generator/src/main/java/com/java110/code/TableToJson.java

@@ -7,18 +7,14 @@ import com.java110.utils.util.StringUtil;
 public class TableToJson {
 
     //show create table c_orders  用这个语句获取
-    public static final String createTableSql = "CREATE TABLE `workflow` (\n" +
-            "  `flow_id` varchar(30) NOT NULL COMMENT '流程ID',\n" +
-            "  `flow_name` varchar(200) NOT NULL COMMENT '流程名称',\n" +
-            "  `describle` longtext COMMENT '描述',\n" +
-            "  `skip_level` varchar(12) NOT NULL COMMENT '跳过',\n" +
-            "  `community_id` varchar(30) NOT NULL COMMENT '小区ID,分片',\n" +
-            "  `b_id` varchar(30) NOT NULL COMMENT '业务Id',\n" +
-            "  `store_id` varchar(30) NOT NULL COMMENT '商户ID,用来做分区',\n" +
+    public static final String createTableSql = "CREATE TABLE `meter_type` (\n" +
+            "  `type_id` varchar(30) NOT NULL COMMENT '类型ID',\n" +
+            "  `type_name` varchar(12) NOT NULL COMMENT '名称',\n" +
+            "  `community_id` varchar(30) NOT NULL COMMENT '小区ID',\n" +
+            "  `remark` varchar(200) DEFAULT NULL COMMENT '说明',\n" +
             "  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" +
-            "  `status_cd` varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考t_dict表,0, 在用 1失效',\n" +
-            "  `flow_type` varchar(12) NOT NULL COMMENT '流程类型,10001 投诉建议 20002 报修 30003 采购',\n" +
-            "  `process_definition_key` varchar(64) DEFAULT NULL COMMENT '工作流部署ID'\n" +
+            "  `status_cd` varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0, 在用 1失效',\n" +
+            "  PRIMARY KEY (`type_id`)\n" +
             ")";
 
     public static void main(String[] args) {

+ 12 - 13
java110-generator/src/main/java/com/java110/code/TableToJsonWeb.java

@@ -7,14 +7,13 @@ import com.java110.utils.util.StringUtil;
 public class TableToJsonWeb {
 
     //show create table c_orders  用这个语句获取
-    public static final String createTableSql = "CREATE TABLE `fee_print_page` (\n" +
-            "  `page_id` varchar(30) NOT NULL COMMENT '页面ID',\n" +
-            "  `page_name` varchar(128) NOT NULL COMMENT '名称',\n" +
+    public static final String createTableSql = "CREATE TABLE `meter_type` (\n" +
+            "  `type_id` varchar(30) NOT NULL COMMENT '类型ID',\n" +
+            "  `type_name` varchar(12) NOT NULL COMMENT '名称',\n" +
             "  `community_id` varchar(30) NOT NULL COMMENT '小区ID',\n" +
-            "  `page_url` varchar(512) NOT NULL COMMENT '收据页面',\n" +
-            "  `state` varchar(12) NOT NULL DEFAULT 'F' COMMENT '状态 T 有效 F为无效',\n" +
+            "  `remark` varchar(200) DEFAULT NULL COMMENT '说明',\n" +
             "  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',\n" +
-            "  `status_cd` varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态 1表示 失效 0 有效'\n" +
+            "  `status_cd` varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0, 在用 1失效'\n" +
             ")";
 
     public static void main(String[] args) {
@@ -60,10 +59,10 @@ public class TableToJsonWeb {
             }
             String comment = rowSql.contains("COMMENT") ? rowSql.substring(rowSql.indexOf("COMMENT '") + 9) : StringUtil.lineToHump(key);
             comment = comment.trim();
-            if(comment.contains(",")){
+            if (comment.contains(",")) {
                 comment = comment.split(",")[0];
             }
-            if(comment.contains(" ")){
+            if (comment.contains(" ")) {
                 comment = comment.split(" ")[0];
             }
             paramColumn.put("desc", comment);
@@ -74,10 +73,10 @@ public class TableToJsonWeb {
                 condition.put("code", StringUtil.lineToHump(key));
                 condition.put("whereCondition", "equal");
                 conditions.add(condition);
-                paramColumn.put("desc", "必填,"+comment);
+                paramColumn.put("desc", "必填," + comment);
             }
-            String limit = rowSql.substring(rowSql.indexOf("(") + 1,rowSql.indexOf(")"));
-            if(limit.contains(",")){
+            String limit = rowSql.substring(rowSql.indexOf("(") + 1, rowSql.indexOf(")"));
+            if (limit.contains(",")) {
                 limit = limit.split(",")[0];
             }
 
@@ -87,8 +86,8 @@ public class TableToJsonWeb {
             paramColumn.put("hasDefaultValue", false);
             paramColumn.put("inputType", "input");
             paramColumn.put("limit", "maxLength");
-            paramColumn.put("limitParam",limit );
-            paramColumn.put("limitErrInfo", comment+"不能超过"+limit);
+            paramColumn.put("limitParam", limit);
+            paramColumn.put("limitErrInfo", comment + "不能超过" + limit);
             paramColumn.put("show", true);
             paramColumns.add(paramColumn);
         }

+ 1 - 1
java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java

@@ -70,7 +70,7 @@ public class BackCoderGeneratorStart extends BaseGenerator {
         generatorInnerServiceSMOImpl.generator(data);
 
         GeneratorDtoBean generatorDtoBean = new GeneratorDtoBean();
-        //generatorDtoBean.generator(data);
+        generatorDtoBean.generator(data);
 
         GeneratorIInnerServiceSMO generatorIInnerServiceSMO = new GeneratorIInnerServiceSMO();
         generatorIInnerServiceSMO.generator(data);

+ 1 - 1
java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java

@@ -14,7 +14,7 @@ public class GeneratorApiListener extends BaseGenerator {
      * @param data
      */
     public void generator(Data data) throws Exception {
-        //genneratorPo(data);             //API DataVo对象
+        genneratorPo(data);             //API DataVo对象
         genneratorSaveCmd(data);            //Api BmoImpl
         genneratorUpdateBmoImpl(data);            //Api BmoImpl
         genneratorDeleteBmoImpl(data);            //Api BmoImpl

+ 11 - 35
java110-generator/src/main/resources/newBack/template_1.json

@@ -1,51 +1,27 @@
 {
   "param": {
-    "skipLevel": "skip_level",
-    "describle": "describle",
+    "typeName": "type_name",
+    "typeId": "type_id",
+    "remark": "remark",
     "statusCd": "status_cd",
-    "communityId": "community_id",
-    "storeId": "store_id",
-    "flowId": "flow_id",
-    "flowName": "flow_name",
-    "flowType": "flow_type",
-    "processDefinitionKey": "process_definition_key"
+    "communityId": "community_id"
   },
-  "name": "workflow",
+  "name": "meterType",
   "shareColumn": "community_id",
-  "id": "flowId",
-  "shareName": "common",
+  "id": "typeId",
+  "shareName": "fee",
   "autoMove": true,
   "required": [
     {
-      "msg": "流程ID不能为空",
-      "code": "flowId"
-    },
-    {
-      "msg": "流程名称不能为空",
-      "code": "flowName"
-    },
-    {
-      "msg": "跳过不能为空",
-      "code": "skipLevel"
+      "msg": "名称不能为空",
+      "code": "typeName"
     },
     {
       "msg": "小区ID不能为空",
       "code": "communityId"
-    },
-    {
-      "msg": "商户ID,用来做分区不能为空",
-      "code": "storeId"
-    },
-    {
-      "msg": "数据状态不能为空",
-      "code": "statusCd"
-    },
-    {
-      "msg": "流程类型不能为空",
-      "code": "flowType"
     }
   ],
-  "desc": "工作流程",
+  "desc": "抄表类型",
   "shareParam": "communityId",
-  "tableName": "workflow"
+  "tableName": "meter_type"
 }

+ 27 - 46
java110-generator/src/main/resources/web/template_1.json

@@ -1,37 +1,17 @@
 {
-  "templateName":"收据模板",
+  "templateKeyName": "抄表类型",
+  "templateName": "抄表类型",
+  "searchName": "抄表类型",
   "directories": "property",
-  "templateCode":"feePrintPage",
-  "templateKey":"pageId",
-  "templateKeyName":"收据ID",
-  "searchCode": "pageId",
-  "searchName": "收据ID",
-  "conditions": [
-    {
-      "whereCondition": "equal",
-      "code": "pageId",
-      "name": "页面ID",
-      "inputType": "input"
-    },
-    {
-      "whereCondition": "equal",
-      "code": "pageName",
-      "name": "名称",
-      "inputType": "input"
-    },
-    {
-      "whereCondition": "equal",
-      "code": "state",
-      "name": "状态",
-      "inputType": "input"
-    }
-  ],
+  "searchCode": "typeId",
+  "templateCode": "meterType",
+  "templateKey": "typeId",
   "columns": [
     {
       "hasDefaultValue": false,
-      "limitParam": "128",
-      "code": "pageName",
-      "limitErrInfo": "名称不能超过128",
+      "limitParam": "12",
+      "code": "typeName",
+      "limitErrInfo": "名称不能超过12",
       "cnCode": "名称",
       "limit": "maxLength",
       "show": true,
@@ -41,28 +21,29 @@
     },
     {
       "hasDefaultValue": false,
-      "limitParam": "30",
-      "code": "communityId",
-      "limitErrInfo": "小区ID不能超过30",
-      "cnCode": "小区ID",
+      "limitParam": "200",
+      "code": "remark",
+      "limitErrInfo": "说明不能超过200",
+      "cnCode": "说明",
       "limit": "maxLength",
       "show": true,
       "inputType": "input",
       "required": true,
-      "desc": "必填,小区ID"
+      "desc": "说明"
+    }
+  ],
+  "conditions": [
+    {
+      "whereCondition": "equal",
+      "code": "typeId",
+      "name": "类型ID",
+      "inputType": "input"
     },
     {
-      "hasDefaultValue": false,
-      "limitParam": "512",
-      "code": "pageUrl",
-      "limitErrInfo": "收据页面不能超过512",
-      "cnCode": "收据页面",
-      "limit": "maxLength",
-      "show": true,
-      "inputType": "input",
-      "required": true,
-      "desc": "必填,收据页面"
+      "whereCondition": "equal",
+      "code": "typeName",
+      "name": "名称",
+      "inputType": "input"
     }
   ]
-
-}
+}

+ 68 - 0
java110-interface/src/main/java/com/java110/intf/fee/IMeterTypeV1InnerServiceSMO.java

@@ -0,0 +1,68 @@
+/*
+ * 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.intf.fee;
+
+import com.java110.config.feign.FeignConfiguration;
+import com.java110.dto.meterType.MeterTypeDto;
+import com.java110.po.meterType.MeterTypePo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+/**
+ * 类表述: 服务之前调用的接口类,不对外提供接口能力 只用于接口建调用
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@FeignClient(name = "fee-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/meterTypeV1Api")
+public interface IMeterTypeV1InnerServiceSMO {
+
+
+    @RequestMapping(value = "/saveMeterType", method = RequestMethod.POST)
+    public int saveMeterType(@RequestBody  MeterTypePo meterTypePo);
+
+    @RequestMapping(value = "/updateMeterType", method = RequestMethod.POST)
+    public int updateMeterType(@RequestBody  MeterTypePo meterTypePo);
+
+    @RequestMapping(value = "/deleteMeterType", method = RequestMethod.POST)
+    public int deleteMeterType(@RequestBody  MeterTypePo meterTypePo);
+
+    /**
+     * <p>查询小区楼信息</p>
+     *
+     *
+     * @param meterTypeDto 数据对象分享
+     * @return MeterTypeDto 对象数据
+     */
+    @RequestMapping(value = "/queryMeterTypes", method = RequestMethod.POST)
+    List<MeterTypeDto> queryMeterTypes(@RequestBody MeterTypeDto meterTypeDto);
+
+    /**
+     * 查询<p>小区楼</p>总记录数
+     *
+     * @param meterTypeDto 数据对象分享
+     * @return 小区下的小区楼记录数
+     */
+    @RequestMapping(value = "/queryMeterTypesCount", method = RequestMethod.POST)
+    int queryMeterTypesCount(@RequestBody MeterTypeDto meterTypeDto);
+}

+ 31 - 7
service-api/src/main/java/com/java110/api/smo/assetImport/impl/AssetImportSMOImpl.java

@@ -3,17 +3,24 @@ package com.java110.api.smo.assetImport.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.smo.DefaultAbstractComponentSMO;
-import com.java110.core.component.BaseComponentSMO;
+import com.java110.api.smo.assetImport.IAssetImportSMO;
 import com.java110.core.context.IPageData;
 import com.java110.core.smo.ISaveTransactionLogSMO;
 import com.java110.dto.RoomDto;
 import com.java110.dto.assetImportLog.AssetImportLogDto;
 import com.java110.dto.assetImportLogDetail.AssetImportLogDetailDto;
-import com.java110.entity.assetImport.*;
+import com.java110.dto.owner.OwnerDto;
+import com.java110.entity.assetImport.ImportFee;
+import com.java110.entity.assetImport.ImportFloor;
+import com.java110.entity.assetImport.ImportOwner;
+import com.java110.entity.assetImport.ImportParkingSpace;
+import com.java110.entity.assetImport.ImportRoom;
 import com.java110.entity.component.ComponentValidateResult;
-import com.java110.api.smo.assetImport.IAssetImportSMO;
-import com.java110.utils.constant.ServiceConstant;
-import com.java110.utils.util.*;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.CommonUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.ImportExcelUtils;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -772,9 +779,13 @@ public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements I
                 paramIn.put("age", owner.getAge());
                 paramIn.put("link", owner.getTel());
                 paramIn.put("sex", owner.getSex());
-                paramIn.put("ownerTypeCd", "1001");
+                paramIn.put("ownerTypeCd", owner.getOwnerTypeCd());
                 paramIn.put("idCard", owner.getIdCard());
                 paramIn.put("source", "BatchImport");
+                if (!OwnerDto.OWNER_TYPE_CD_OWNER.equals(owner.getOwnerTypeCd())) {
+                    //查询业主ID
+                    paramIn.put("ownerId", getOwnerId(owners, owner));
+                }
                 responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST);
 
                 /***************************************导入日志记录****************************************************/
@@ -820,6 +831,15 @@ public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements I
         return responseEntity;
     }
 
+    private String getOwnerId(List<ImportOwner> owners, ImportOwner owner) {
+        for (ImportOwner owner1 : owners) {
+            if (owner1.getOwnerNum().equals(owner.getParentOwnerId())) {
+                return owner1.getOwnerId();
+            }
+        }
+        throw new IllegalArgumentException("请将业主成员放到业主后面,或者业主成员未找到对应的业主");
+    }
+
     /**
      * 保存 楼栋和 单元信息
      *
@@ -1006,7 +1026,7 @@ public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements I
         String apiUrl = "";
         ResponseEntity<String> responseEntity = null;
         apiUrl = "owner.queryOwners?page=1&row=1&communityId=" + result.getCommunityId()
-                + "&ownerTypeCd=1001&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel();
+                + "&ownerTypeCd=" + importOwner.getOwnerTypeCd() + "&name=" + importOwner.getOwnerName() + "&link=" + importOwner.getTel();
         responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET);
 
         if (responseEntity.getStatusCode() != HttpStatus.OK) { //跳过 保存单元信息
@@ -1327,6 +1347,8 @@ public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements I
                 Assert.hasValue(os[2], "业主信息选项中" + (osIndex + 1) + "行业主性别为空");
                 String tel = StringUtil.isNullOrNone(os[4]) ? "19999999999" : os[4].toString();
                 String idCard = StringUtil.isNullOrNone(os[5]) ? "10000000000000000001" : os[5].toString();
+                String ownerTypeCd = StringUtil.isNullOrNone(os[6]) ? "1001" : os[6].toString();
+                String parentOwnerId = StringUtil.isNullOrNone(os[7]) ? os[0].toString() : os[7].toString();
 
                 if (os[4].toString().length() > 11) {
                     throw new IllegalArgumentException(os[1].toString() + " 的手机号超过11位,请核实");
@@ -1343,6 +1365,8 @@ public class AssetImportSMOImpl extends DefaultAbstractComponentSMO implements I
                 importOwner.setAge(Integer.parseInt(age));
                 importOwner.setTel(tel);
                 importOwner.setIdCard(idCard);
+                importOwner.setOwnerTypeCd(ownerTypeCd);
+                importOwner.setParentOwnerId(parentOwnerId);
                 owners.add(importOwner);
             } catch (Exception e) {
                 logger.error("第" + (osIndex + 1) + "行数据出现问题", e);

+ 71 - 0
service-fee/src/main/java/com/java110/fee/cmd/meterType/DeleteMeterTypeCmd.java

@@ -0,0 +1,71 @@
+/*
+ * 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.fee.cmd.meterType;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
+import com.java110.po.meterType.MeterTypePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 类表述:删除
+ * 服务编码:meterType.deleteMeterType
+ * 请求路劲:/app/meterType.DeleteMeterType
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "meterType.deleteMeterType")
+public class DeleteMeterTypeCmd extends AbstractServiceCmdListener {
+    private static Logger logger = LoggerFactory.getLogger(DeleteMeterTypeCmd.class);
+
+    @Autowired
+    private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "typeId", "typeId不能为空");
+        Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        MeterTypePo meterTypePo = BeanConvertUtil.covertBean(reqJson, MeterTypePo.class);
+        int flag = meterTypeV1InnerServiceSMOImpl.deleteMeterType(meterTypePo);
+
+        if (flag < 1) {
+            throw new CmdException("删除数据失败");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 84 - 0
service-fee/src/main/java/com/java110/fee/cmd/meterType/ListMeterTypeCmd.java

@@ -0,0 +1,84 @@
+/*
+ * 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.fee.cmd.meterType;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
+import com.java110.po.meterType.MeterTypePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.java110.dto.meterType.MeterTypeDto;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.HttpStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * 类表述:查询
+ * 服务编码:meterType.listMeterType
+ * 请求路劲:/app/meterType.ListMeterType
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "meterType.listMeterType")
+public class ListMeterTypeCmd extends AbstractServiceCmdListener {
+
+  private static Logger logger = LoggerFactory.getLogger(ListMeterTypeCmd.class);
+    @Autowired
+    private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+           MeterTypeDto meterTypeDto = BeanConvertUtil.covertBean(reqJson, MeterTypeDto.class);
+
+           int count = meterTypeV1InnerServiceSMOImpl.queryMeterTypesCount(meterTypeDto);
+
+           List<MeterTypeDto> meterTypeDtos = null;
+
+           if (count > 0) {
+               meterTypeDtos = meterTypeV1InnerServiceSMOImpl.queryMeterTypes(meterTypeDto);
+           } else {
+               meterTypeDtos = new ArrayList<>();
+           }
+
+           ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, meterTypeDtos);
+
+           ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+           cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+}

+ 76 - 0
service-fee/src/main/java/com/java110/fee/cmd/meterType/SaveMeterTypeCmd.java

@@ -0,0 +1,76 @@
+/*
+ * 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.fee.cmd.meterType;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
+import com.java110.po.meterType.MeterTypePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 类表述:保存
+ * 服务编码:meterType.saveMeterType
+ * 请求路劲:/app/meterType.SaveMeterType
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "meterType.saveMeterType")
+public class SaveMeterTypeCmd extends AbstractServiceCmdListener {
+
+    private static Logger logger = LoggerFactory.getLogger(SaveMeterTypeCmd.class);
+
+    public static final String CODE_PREFIX_ID = "10";
+
+    @Autowired
+    private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "typeName", "请求报文中未包含typeName");
+        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        MeterTypePo meterTypePo = BeanConvertUtil.covertBean(reqJson, MeterTypePo.class);
+        meterTypePo.setTypeId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        int flag = meterTypeV1InnerServiceSMOImpl.saveMeterType(meterTypePo);
+
+        if (flag < 1) {
+            throw new CmdException("保存数据失败");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 74 - 0
service-fee/src/main/java/com/java110/fee/cmd/meterType/UpdateMeterTypeCmd.java

@@ -0,0 +1,74 @@
+/*
+ * 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.fee.cmd.meterType;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
+import com.java110.po.meterType.MeterTypePo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * 类表述:更新
+ * 服务编码:meterType.updateMeterType
+ * 请求路劲:/app/meterType.UpdateMeterType
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Java110Cmd(serviceCode = "meterType.updateMeterType")
+public class UpdateMeterTypeCmd extends AbstractServiceCmdListener {
+
+    private static Logger logger = LoggerFactory.getLogger(UpdateMeterTypeCmd.class);
+
+
+    @Autowired
+    private IMeterTypeV1InnerServiceSMO meterTypeV1InnerServiceSMOImpl;
+
+    @Override
+    public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "typeId", "typeId不能为空");
+        Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
+
+    }
+
+    @Override
+    @Java110Transactional
+    public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+        MeterTypePo meterTypePo = BeanConvertUtil.covertBean(reqJson, MeterTypePo.class);
+        int flag = meterTypeV1InnerServiceSMOImpl.updateMeterType(meterTypePo);
+
+        if (flag < 1) {
+            throw new CmdException("更新数据失败");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}

+ 77 - 0
service-fee/src/main/java/com/java110/fee/dao/IMeterTypeV1ServiceDao.java

@@ -0,0 +1,77 @@
+/*
+ * 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.fee.dao;
+
+
+import com.java110.utils.exception.DAOException;
+import com.java110.entity.merchant.BoMerchant;
+import com.java110.entity.merchant.BoMerchantAttr;
+import com.java110.entity.merchant.Merchant;
+import com.java110.entity.merchant.MerchantAttr;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 类表述:
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+public interface IMeterTypeV1ServiceDao {
+
+
+    /**
+     * 保存 抄表类型信息
+     * @param info
+     * @throws DAOException DAO异常
+     */
+    int saveMeterTypeInfo(Map info) throws DAOException;
+
+
+
+
+    /**
+     * 查询抄表类型信息(instance过程)
+     * 根据bId 查询抄表类型信息
+     * @param info bId 信息
+     * @return 抄表类型信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getMeterTypeInfo(Map info) throws DAOException;
+
+
+
+    /**
+     * 修改抄表类型信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    int updateMeterTypeInfo(Map info) throws DAOException;
+
+
+    /**
+     * 查询抄表类型总数
+     *
+     * @param info 抄表类型信息
+     * @return 抄表类型数量
+     */
+    int queryMeterTypesCount(Map info);
+
+}

+ 112 - 0
service-fee/src/main/java/com/java110/fee/dao/impl/MeterTypeV1ServiceDaoImpl.java

@@ -0,0 +1,112 @@
+/*
+ * 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.fee.dao.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.DAOException;
+import com.java110.utils.util.DateUtil;
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.fee.dao.IMeterTypeV1ServiceDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 类表述:
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@Service("meterTypeV1ServiceDaoImpl")
+public class MeterTypeV1ServiceDaoImpl extends BaseServiceDao implements IMeterTypeV1ServiceDao {
+
+    private static Logger logger = LoggerFactory.getLogger(MeterTypeV1ServiceDaoImpl.class);
+
+
+
+
+
+    /**
+     * 保存抄表类型信息 到 instance
+     * @param info   bId 信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public int saveMeterTypeInfo(Map info) throws DAOException {
+        logger.debug("保存 saveMeterTypeInfo 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.insert("meterTypeV1ServiceDaoImpl.saveMeterTypeInfo",info);
+
+        return saveFlag;
+    }
+
+
+    /**
+     * 查询抄表类型信息(instance)
+     * @param info bId 信息
+     * @return List<Map>
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public List<Map> getMeterTypeInfo(Map info) throws DAOException {
+        logger.debug("查询 getMeterTypeInfo 入参 info : {}",info);
+
+        List<Map> businessMeterTypeInfos = sqlSessionTemplate.selectList("meterTypeV1ServiceDaoImpl.getMeterTypeInfo",info);
+
+        return businessMeterTypeInfos;
+    }
+
+
+    /**
+     * 修改抄表类型信息
+     * @param info 修改信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public int updateMeterTypeInfo(Map info) throws DAOException {
+        logger.debug("修改 updateMeterTypeInfo 入参 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.update("meterTypeV1ServiceDaoImpl.updateMeterTypeInfo",info);
+
+        return saveFlag;
+    }
+
+     /**
+     * 查询抄表类型数量
+     * @param info 抄表类型信息
+     * @return 抄表类型数量
+     */
+    @Override
+    public int queryMeterTypesCount(Map info) {
+        logger.debug("查询 queryMeterTypesCount 入参 info : {}",info);
+
+        List<Map> businessMeterTypeInfos = sqlSessionTemplate.selectList("meterTypeV1ServiceDaoImpl.queryMeterTypesCount", info);
+        if (businessMeterTypeInfos.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(businessMeterTypeInfos.get(0).get("count").toString());
+    }
+
+
+}

+ 89 - 0
service-fee/src/main/java/com/java110/fee/smo/impl/MeterTypeV1InnerServiceSMOImpl.java

@@ -0,0 +1,89 @@
+/*
+ * 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.fee.smo.impl;
+
+
+import com.java110.fee.dao.IMeterTypeV1ServiceDao;
+import com.java110.intf.fee.IMeterTypeV1InnerServiceSMO;
+import com.java110.dto.meterType.MeterTypeDto;
+import com.java110.po.meterType.MeterTypePo;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.dto.user.UserDto;
+import com.java110.dto.PageDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 类表述: 服务之前调用的接口实现类,不对外提供接口能力 只用于接口建调用
+ * add by 吴学文 at 2021-09-21 23:01:49 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 官网:http://www.homecommunity.cn
+ * 温馨提示:如果您对此文件进行修改 请不要删除原有作者及注释信息,请补充您的 修改的原因以及联系邮箱如下
+ * // modify by 张三 at 2021-09-12 第10行在某种场景下存在某种bug 需要修复,注释10至20行 加入 20行至30行
+ */
+@RestController
+public class MeterTypeV1InnerServiceSMOImpl extends BaseServiceSMO implements IMeterTypeV1InnerServiceSMO {
+
+    @Autowired
+    private IMeterTypeV1ServiceDao meterTypeV1ServiceDaoImpl;
+
+
+    @Override
+    public int saveMeterType(@RequestBody  MeterTypePo meterTypePo) {
+        int saveFlag = meterTypeV1ServiceDaoImpl.saveMeterTypeInfo(BeanConvertUtil.beanCovertMap(meterTypePo));
+        return saveFlag;
+    }
+
+     @Override
+    public int updateMeterType(@RequestBody  MeterTypePo meterTypePo) {
+        int saveFlag = meterTypeV1ServiceDaoImpl.updateMeterTypeInfo(BeanConvertUtil.beanCovertMap(meterTypePo));
+        return saveFlag;
+    }
+
+     @Override
+    public int deleteMeterType(@RequestBody  MeterTypePo meterTypePo) {
+       meterTypePo.setStatusCd("1");
+       int saveFlag = meterTypeV1ServiceDaoImpl.updateMeterTypeInfo(BeanConvertUtil.beanCovertMap(meterTypePo));
+       return saveFlag;
+    }
+
+    @Override
+    public List<MeterTypeDto> queryMeterTypes(@RequestBody  MeterTypeDto meterTypeDto) {
+
+        //校验是否传了 分页信息
+
+        int page = meterTypeDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            meterTypeDto.setPage((page - 1) * meterTypeDto.getRow());
+        }
+
+        List<MeterTypeDto> meterTypes = BeanConvertUtil.covertBeanList(meterTypeV1ServiceDaoImpl.getMeterTypeInfo(BeanConvertUtil.beanCovertMap(meterTypeDto)), MeterTypeDto.class);
+
+        return meterTypes;
+    }
+
+
+    @Override
+    public int queryMeterTypesCount(@RequestBody MeterTypeDto meterTypeDto) {
+        return meterTypeV1ServiceDaoImpl.queryMeterTypesCount(BeanConvertUtil.beanCovertMap(meterTypeDto));    }
+
+}

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

@@ -70,6 +70,11 @@ public class HcGovConstant {
     //修改停车场
     public static final String EDIT_PARKING_AREA_ACTION = "EDIT_PARKING_AREA";
 
+    //添加停车场
+    public static final String ADD_CAR_ACTION = "ADD_CAR";
+    //修改停车场
+    public static final String EDIT_CAR_ACTION = "EDIT_CAR";
+
     //开门记录
     public static final String ADD_INOUT_RECORD_ACTION = "ADD_INOUT_RECORD";
 

+ 169 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovAdapt.java

@@ -0,0 +1,169 @@
+/*
+ * 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.car;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.community.CommunityAttrDto;
+import com.java110.dto.community.CommunityDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.parking.ParkingAreaDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.dto.parkingAreaAttr.ParkingAreaAttrDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IParkingAreaInnerServiceSMO;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.adapt.hcGov.HcGovConstant;
+import com.java110.job.adapt.hcGov.asyn.BaseHcGovSendAsyn;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+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 = "addCarToHcGovAdapt")
+public class AddCarToHcGovAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+    @Autowired
+    private BaseHcGovSendAsyn baseHcGovSendAsynImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
+
+
+    /**
+     * @param business   当前处理业务
+     * @param businesses 所有业务信息
+     */
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        JSONObject data = business.getData();
+        if (data.containsKey(OwnerCarPo.class.getSimpleName())) {
+            Object bObj = data.get(OwnerCarPo.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);
+                doAddOwnerCar(business, businessOwnerCar);
+            }
+        }
+    }
+
+    private void doAddOwnerCar(Business business, JSONObject businessFloor) {
+
+        OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(businessFloor, OwnerCarPo.class);
+
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityId(ownerCarPo.getCommunityId());
+        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
+        Assert.listNotNull(communityDtos, "未包含小区信息");
+        CommunityDto tmpCommunityDto = communityDtos.get(0);
+        String extCommunityId = "";
+        String communityId = tmpCommunityDto.getCommunityId();
+        for (CommunityAttrDto communityAttrDto : tmpCommunityDto.getCommunityAttrDtos()) {
+            if (HcGovConstant.EXT_COMMUNITY_ID.equals(communityAttrDto.getSpecCd())) {
+                extCommunityId = communityAttrDto.getValue();
+            }
+        }
+        //查询车辆
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(ownerCarPo.getCommunityId());
+        ownerCarDto.setCarId(ownerCarPo.getCarId());
+        List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+        Assert.listOnlyOne(ownerCarDtos, "车辆不存在");
+
+        //查询外部停车场
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(ownerCarDtos.get(0).getPsId());
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+        Assert.listOnlyOne(parkingSpaceDtos, "车位不存在");
+
+        //查询 外部停车
+        ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
+        parkingAreaDto.setPaId(parkingSpaceDtos.get(0).getPaId());
+        parkingAreaDto.setCommunityId(parkingSpaceDtos.get(0).getCommunityId());
+        List<ParkingAreaDto> parkingAreaDtos = parkingAreaInnerServiceSMOImpl.queryParkingAreas(parkingAreaDto);
+        Assert.listOnlyOne(parkingAreaDtos, "停车场不存在");
+
+        String extPaId = getExtPaId(parkingAreaDtos.get(0).getAttrs());
+
+        if (StringUtil.isEmpty(extPaId)) {
+            return;
+        }
+
+
+
+        JSONObject body = new JSONObject();
+        body.put("carNum", ownerCarDtos.get(0).getCarNum());
+        body.put("carBrand", ownerCarDtos.get(0).getCarBrand());
+        body.put("carType", ownerCarDtos.get(0).getCarType());
+        body.put("carColor", ownerCarDtos.get(0).getCarColor());
+        body.put("startTime", DateUtil.getFormatTimeString(ownerCarDtos.get(0).getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
+        body.put("endTime", DateUtil.getFormatTimeString(ownerCarDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
+        body.put("personName", ownerCarDtos.get(0).getOwnerName());
+        body.put("personTel", ownerCarDtos.get(0).getLink());
+        body.put("extPaId", extPaId);
+
+        JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.ADD_CAR_ACTION, HcGovConstant.COMMUNITY_SECURE);
+        baseHcGovSendAsynImpl.sendKafka(HcGovConstant.GOV_TOPIC, kafkaData, communityId, ownerCarPo.getCarId(), HcGovConstant.COMMUNITY_SECURE);
+    }
+
+    private String getExtPaId(List<ParkingAreaAttrDto> attrs) {
+
+        if (attrs == null || attrs.size() < 1) {
+            return "";
+        }
+
+        for (ParkingAreaAttrDto parkingAreaAttrDto : attrs) {
+            if (parkingAreaAttrDto.getSpecCd().equals(HcGovConstant.EXT_COMMUNITY_ID)) {
+                return parkingAreaAttrDto.getValue();
+            }
+        }
+        return "";
+    }
+
+}

+ 79 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovReturnAdapt.java

@@ -0,0 +1,79 @@
+/*
+ * 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.car;
+
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.dto.hcGovTranslate.HcGovTranslateDto;
+import com.java110.dto.ownerCarAttr.OwnerCarAttrDto;
+import com.java110.dto.reportData.ReportDataDto;
+import com.java110.intf.common.IHcGovTranslateInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
+import com.java110.job.adapt.hcGov.HcGovConstant;
+import com.java110.job.adapt.hcGov.IReportReturnDataAdapt;
+import com.java110.po.ownerCarAttr.OwnerCarAttrPo;
+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_CAR_RETURN")
+public class AddCarToHcGovReturnAdapt implements IReportReturnDataAdapt {
+
+    @Autowired
+    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
+    @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("查询推送报文失败。不是同一订单信息");
+        }
+
+        OwnerCarAttrDto ownerCarAttrDto = new OwnerCarAttrDto();
+        ownerCarAttrDto.setCarId(hcGovTranslateDtos.get(0).getObjId());
+        ownerCarAttrDto.setCommunityId(hcGovTranslateDtos.get(0).getCommunityId());
+        ownerCarAttrDto.setSpecCd( HcGovConstant.EXT_COMMUNITY_ID);
+        List<OwnerCarAttrDto> ownerCarAttrDtos = ownerCarAttrInnerServiceSMOImpl.queryOwnerCarAttrs(ownerCarAttrDto);
+
+        OwnerCarAttrPo ownerCarAttrPo = new OwnerCarAttrPo();
+        ownerCarAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_floorId));
+        ownerCarAttrPo.setCarId(ownerCarAttrDto.getCarId());
+        ownerCarAttrPo.setCommunityId(ownerCarAttrDto.getCommunityId());
+        ownerCarAttrPo.setSpecCd(ownerCarAttrDto.getSpecCd());
+        ownerCarAttrPo.setValue(reportDataDto.getReportDataBodyDto().getString("extCarId"));
+        if (ownerCarAttrDtos == null || ownerCarAttrDtos.size() < 1) {
+            int flag = ownerCarAttrInnerServiceSMOImpl.saveOwnerCarAttr(ownerCarAttrPo);
+            if (flag < 1) {
+                throw new IllegalArgumentException("保存楼栋属性失败");
+            }
+        }
+
+
+    }
+}

+ 196 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovAdapt.java

@@ -0,0 +1,196 @@
+/*
+ * 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.car;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.community.CommunityAttrDto;
+import com.java110.dto.community.CommunityDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.dto.ownerCarAttr.OwnerCarAttrDto;
+import com.java110.dto.parking.ParkingAreaDto;
+import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.dto.parkingAreaAttr.ParkingAreaAttrDto;
+import com.java110.entity.order.Business;
+import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IParkingAreaInnerServiceSMO;
+import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarAttrInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.job.adapt.DatabusAdaptImpl;
+import com.java110.job.adapt.hcGov.HcGovConstant;
+import com.java110.job.adapt.hcGov.asyn.BaseHcGovSendAsyn;
+import com.java110.po.car.OwnerCarPo;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.DateUtil;
+import com.java110.utils.util.StringUtil;
+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 = "editCarToHcGovAdapt")
+public class EditCarToHcGovAdapt extends DatabusAdaptImpl {
+
+    @Autowired
+    private ICommunityInnerServiceSMO communityInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerCarAttrInnerServiceSMO ownerCarAttrInnerServiceSMOImpl;
+
+    @Autowired
+    private BaseHcGovSendAsyn baseHcGovSendAsynImpl;
+
+    @Autowired
+    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
+
+    @Autowired
+    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
+
+
+    /**
+     * @param business   当前处理业务
+     * @param businesses 所有业务信息
+     */
+    @Override
+    public void execute(Business business, List<Business> businesses) {
+        JSONObject data = business.getData();
+        if (data.containsKey(OwnerCarPo.class.getSimpleName())) {
+            Object bObj = data.get(OwnerCarPo.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);
+                doEditOwnerCar(business, businessOwnerCar);
+            }
+        }
+    }
+
+    private void doEditOwnerCar(Business business, JSONObject businessFloor) {
+
+        OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(businessFloor, OwnerCarPo.class);
+
+        CommunityDto communityDto = new CommunityDto();
+        communityDto.setCommunityId(ownerCarPo.getCommunityId());
+        List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto);
+        Assert.listNotNull(communityDtos, "未包含小区信息");
+        CommunityDto tmpCommunityDto = communityDtos.get(0);
+        String extCommunityId = "";
+        String communityId = tmpCommunityDto.getCommunityId();
+        for (CommunityAttrDto communityAttrDto : tmpCommunityDto.getCommunityAttrDtos()) {
+            if (HcGovConstant.EXT_COMMUNITY_ID.equals(communityAttrDto.getSpecCd())) {
+                extCommunityId = communityAttrDto.getValue();
+            }
+        }
+        //查询车辆
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(ownerCarPo.getCommunityId());
+        ownerCarDto.setCarId(ownerCarPo.getCarId());
+        List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+        Assert.listOnlyOne(ownerCarDtos, "车辆不存在");
+
+        //查询外部停车场
+        ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+        parkingSpaceDto.setPsId(ownerCarDtos.get(0).getPsId());
+        List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+        Assert.listOnlyOne(parkingSpaceDtos, "车位不存在");
+
+        //查询 外部停车
+        ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
+        parkingAreaDto.setPaId(parkingSpaceDtos.get(0).getPaId());
+        parkingAreaDto.setCommunityId(parkingSpaceDtos.get(0).getCommunityId());
+        List<ParkingAreaDto> parkingAreaDtos = parkingAreaInnerServiceSMOImpl.queryParkingAreas(parkingAreaDto);
+        Assert.listOnlyOne(parkingAreaDtos, "停车场不存在");
+
+        String extPaId = getExtPaId(parkingAreaDtos.get(0).getAttrs());
+
+        if (StringUtil.isEmpty(extPaId)) {
+            return;
+        }
+
+        String extCarId = getExtCarId(ownerCarDtos.get(0));
+
+
+        JSONObject body = new JSONObject();
+        body.put("carNum", ownerCarDtos.get(0).getCarNum());
+        body.put("carBrand", ownerCarDtos.get(0).getCarBrand());
+        body.put("carType", ownerCarDtos.get(0).getCarType());
+        body.put("carColor", ownerCarDtos.get(0).getCarColor());
+        body.put("startTime", DateUtil.getFormatTimeString(ownerCarDtos.get(0).getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
+        body.put("endTime", DateUtil.getFormatTimeString(ownerCarDtos.get(0).getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
+        body.put("personName", ownerCarDtos.get(0).getOwnerName());
+        body.put("personTel", ownerCarDtos.get(0).getLink());
+        body.put("extPaId", extPaId);
+        if (StringUtil.isEmpty(extCarId)) { // 走添加
+            JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.ADD_CAR_ACTION, HcGovConstant.COMMUNITY_SECURE);
+            baseHcGovSendAsynImpl.sendKafka(HcGovConstant.GOV_TOPIC, kafkaData, communityId, ownerCarPo.getCarId(), HcGovConstant.COMMUNITY_SECURE);
+            return;
+        }
+        body.put("extCarId", extCarId);
+
+        JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.EDIT_CAR_ACTION, HcGovConstant.COMMUNITY_SECURE);
+        baseHcGovSendAsynImpl.sendKafka(HcGovConstant.GOV_TOPIC, kafkaData, communityId, ownerCarPo.getCarId(), HcGovConstant.COMMUNITY_SECURE);
+    }
+
+    private String getExtCarId(OwnerCarDto ownerCarDto) {
+
+        OwnerCarAttrDto ownerCarAttrDto = new OwnerCarAttrDto();
+        ownerCarAttrDto.setCarId(ownerCarDto.getCarId());
+        ownerCarAttrDto.setCommunityId(ownerCarDto.getCommunityId());
+        ownerCarAttrDto.setSpecCd(HcGovConstant.EXT_COMMUNITY_ID);
+        List<OwnerCarAttrDto> ownerCarAttrDtos = ownerCarAttrInnerServiceSMOImpl.queryOwnerCarAttrs(ownerCarAttrDto);
+        if (ownerCarAttrDtos == null || ownerCarAttrDtos.size() < 1) {
+            return "";
+        }
+
+        return ownerCarAttrDtos.get(0).getValue();
+    }
+
+    private String getExtPaId(List<ParkingAreaAttrDto> attrs) {
+
+        if (attrs == null || attrs.size() < 1) {
+            return "";
+        }
+
+        for (ParkingAreaAttrDto parkingAreaAttrDto : attrs) {
+            if (parkingAreaAttrDto.getSpecCd().equals(HcGovConstant.EXT_COMMUNITY_ID)) {
+                return parkingAreaAttrDto.getValue();
+            }
+        }
+        return "";
+    }
+
+}

+ 55 - 0
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovReturnAdapt.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.car;
+
+import com.java110.dto.hcGovTranslate.HcGovTranslateDto;
+import com.java110.dto.reportData.ReportDataDto;
+import com.java110.intf.common.IHcGovTranslateInnerServiceSMO;
+import com.java110.intf.community.IFloorAttrInnerServiceSMO;
+import com.java110.job.adapt.hcGov.IReportReturnDataAdapt;
+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 = "EDIT_CAR_RETURN")
+public class EditCarToHcGovReturnAdapt 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("查询推送报文失败。不是同一订单信息");
+        }
+    }
+}

+ 1 - 1
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/AddParkingAreaToHcGovReturnAdapt.java

@@ -69,7 +69,7 @@ public class AddParkingAreaToHcGovReturnAdapt implements IReportReturnDataAdapt
         parkingAreaAttrPo.setPaId(parkingAreaAttrDto.getPaId());
         parkingAreaAttrPo.setCommunityId(parkingAreaAttrDto.getCommunityId());
         parkingAreaAttrPo.setSpecCd(parkingAreaAttrDto.getSpecCd());
-        parkingAreaAttrPo.setValue(reportDataDto.getReportDataBodyDto().getString("extFloorId"));
+        parkingAreaAttrPo.setValue(reportDataDto.getReportDataBodyDto().getString("extPaId"));
         if (parkingAreaAttrDtos == null || parkingAreaAttrDtos.size() < 1) {
             int flag = parkingAreaAttrInnerServiceSMOImpl.saveParkingAreaAttr(parkingAreaAttrPo);
             if (flag < 1) {

+ 37 - 2
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/EditParkingAreaToHcGovAdapt.java

@@ -19,9 +19,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.dto.community.CommunityAttrDto;
 import com.java110.dto.community.CommunityDto;
+import com.java110.dto.parking.ParkingAreaDto;
 import com.java110.dto.parking.ParkingSpaceDto;
+import com.java110.dto.parkingAreaAttr.ParkingAreaAttrDto;
 import com.java110.entity.order.Business;
 import com.java110.intf.community.ICommunityInnerServiceSMO;
+import com.java110.intf.community.IParkingAreaInnerServiceSMO;
 import com.java110.intf.community.IParkingSpaceInnerServiceSMO;
 import com.java110.job.adapt.DatabusAdaptImpl;
 import com.java110.job.adapt.hcGov.HcGovConstant;
@@ -29,6 +32,7 @@ import com.java110.job.adapt.hcGov.asyn.BaseHcGovSendAsyn;
 import com.java110.po.parking.ParkingAreaPo;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -51,7 +55,8 @@ public class EditParkingAreaToHcGovAdapt extends DatabusAdaptImpl {
     private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
     @Autowired
     private BaseHcGovSendAsyn baseHcGovSendAsynImpl;
-
+    @Autowired
+    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
 
     /**
      * @param business   当前处理业务
@@ -103,14 +108,44 @@ public class EditParkingAreaToHcGovAdapt extends DatabusAdaptImpl {
         parkingSpaceDto.setPaId(parkingAreaPo.getPaId());
         int count = parkingSpaceInnerServiceSMOImpl.queryParkingSpacesCount(parkingSpaceDto);
 
+        //查询 外部停车
+        ParkingAreaDto parkingAreaDto = new ParkingAreaDto();
+        parkingAreaDto.setPaId(parkingAreaPo.getPaId());
+        parkingAreaDto.setCommunityId(parkingAreaPo.getCommunityId());
+        List<ParkingAreaDto> parkingAreaDtos = parkingAreaInnerServiceSMOImpl.queryParkingAreas(parkingAreaDto);
+        Assert.listOnlyOne(parkingAreaDtos, "停车场不存在");
+
+        String extPaId = getExtPaId(parkingAreaDtos.get(0).getAttrs());
+
         JSONObject body = new JSONObject();
         body.put("num", parkingAreaPo.getNum());
         body.put("parkingCount", count);
         body.put("typeCd", parkingAreaPo.getTypeCd());
-        body.put("extPaId", parkingAreaPo.getPaId());
+        //如果为空 走添加接口
+        if (StringUtil.isEmpty(extPaId)) {
+            JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.ADD_PARKING_AREA_ACTION, HcGovConstant.COMMUNITY_SECURE);
+            baseHcGovSendAsynImpl.sendKafka(HcGovConstant.GOV_TOPIC, kafkaData, communityId, parkingAreaPo.getPaId(), HcGovConstant.COMMUNITY_SECURE);
+            return;
+        }
+        body.put("extPaId", extPaId);
 
         JSONObject kafkaData = baseHcGovSendAsynImpl.createHeadersOrBody(body, extCommunityId, HcGovConstant.EDIT_PARKING_AREA_ACTION, HcGovConstant.COMMUNITY_SECURE);
         baseHcGovSendAsynImpl.sendKafka(HcGovConstant.GOV_TOPIC, kafkaData, communityId, parkingAreaPo.getPaId(), HcGovConstant.COMMUNITY_SECURE);
     }
 
+
+    private String getExtPaId(List<ParkingAreaAttrDto> attrs) {
+
+        if (attrs == null || attrs.size() < 1) {
+            return "";
+        }
+
+        for (ParkingAreaAttrDto parkingAreaAttrDto : attrs) {
+            if (parkingAreaAttrDto.getSpecCd().equals(HcGovConstant.EXT_COMMUNITY_ID)) {
+                return parkingAreaAttrDto.getValue();
+            }
+        }
+        return "";
+    }
+
 }