java110
2021-09-22 d50d64595a629c34e7ae9de2b8415a9679b42ec7
Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity
11个文件已修改
15个文件已添加
1658 ■■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/meterType/MeterTypeDto.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/entity/assetImport/ImportOwner.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/po/meterType/MeterTypePo.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/fee/MeterTypeV1ServiceDaoImplMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/java/com/java110/code/TableToJson.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/java/com/java110/code/TableToJsonWeb.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/resources/newBack/template_1.json 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-generator/src/main/resources/web/template_1.json 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-interface/src/main/java/com/java110/intf/fee/IMeterTypeV1InnerServiceSMO.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/smo/assetImport/impl/AssetImportSMOImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/meterType/DeleteMeterTypeCmd.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/meterType/ListMeterTypeCmd.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/meterType/SaveMeterTypeCmd.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/meterType/UpdateMeterTypeCmd.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/dao/IMeterTypeV1ServiceDao.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/dao/impl/MeterTypeV1ServiceDaoImpl.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/smo/impl/MeterTypeV1InnerServiceSMOImpl.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/HcGovConstant.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovAdapt.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovReturnAdapt.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovAdapt.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovReturnAdapt.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/AddParkingAreaToHcGovReturnAdapt.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/EditParkingAreaToHcGovAdapt.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/meterType/MeterTypeDto.java
New file
@@ -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;
    }
}
java110-bean/src/main/java/com/java110/entity/assetImport/ImportOwner.java
@@ -22,6 +22,10 @@
    private String idCard;
    private String ownerTypeCd;
    private String parentOwnerId;
    public String getOwnerNum() {
        return ownerNum;
    }
@@ -77,4 +81,20 @@
    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;
    }
}
java110-bean/src/main/java/com/java110/po/meterType/MeterTypePo.java
New file
@@ -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;
    }
}
java110-db/src/main/resources/mapper/fee/MeterTypeV1ServiceDaoImplMapper.xml
New file
@@ -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>
java110-generator/src/main/java/com/java110/code/TableToJson.java
@@ -7,18 +7,14 @@
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) {
java110-generator/src/main/java/com/java110/code/TableToJsonWeb.java
@@ -7,14 +7,13 @@
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 @@
            }
            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 @@
                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 @@
            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);
        }
java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java
@@ -70,7 +70,7 @@
        generatorInnerServiceSMOImpl.generator(data);
        GeneratorDtoBean generatorDtoBean = new GeneratorDtoBean();
        //generatorDtoBean.generator(data);
        generatorDtoBean.generator(data);
        GeneratorIInnerServiceSMO generatorIInnerServiceSMO = new GeneratorIInnerServiceSMO();
        generatorIInnerServiceSMO.generator(data);
java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java
@@ -14,7 +14,7 @@
     * @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
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"
}
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"
    }
  ]
}
}
java110-interface/src/main/java/com/java110/intf/fee/IMeterTypeV1InnerServiceSMO.java
New file
@@ -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);
}
service-api/src/main/java/com/java110/api/smo/assetImport/impl/AssetImportSMOImpl.java
@@ -3,17 +3,24 @@
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 @@
                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);
                /***************************************导入日志记录****************************************************/
@@ -818,6 +829,15 @@
        }
        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 @@
        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 @@
                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 @@
                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);
service-fee/src/main/java/com/java110/fee/cmd/meterType/DeleteMeterTypeCmd.java
New file
@@ -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());
    }
}
service-fee/src/main/java/com/java110/fee/cmd/meterType/ListMeterTypeCmd.java
New file
@@ -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);
    }
}
service-fee/src/main/java/com/java110/fee/cmd/meterType/SaveMeterTypeCmd.java
New file
@@ -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());
    }
}
service-fee/src/main/java/com/java110/fee/cmd/meterType/UpdateMeterTypeCmd.java
New file
@@ -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());
    }
}
service-fee/src/main/java/com/java110/fee/dao/IMeterTypeV1ServiceDao.java
New file
@@ -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);
}
service-fee/src/main/java/com/java110/fee/dao/impl/MeterTypeV1ServiceDaoImpl.java
New file
@@ -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());
    }
}
service-fee/src/main/java/com/java110/fee/smo/impl/MeterTypeV1InnerServiceSMOImpl.java
New file
@@ -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));    }
}
service-job/src/main/java/com/java110/job/adapt/hcGov/HcGovConstant.java
@@ -70,6 +70,11 @@
    //修改停车场
    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";
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovAdapt.java
New file
@@ -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 "";
    }
}
service-job/src/main/java/com/java110/job/adapt/hcGov/car/AddCarToHcGovReturnAdapt.java
New file
@@ -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("保存楼栋属性失败");
            }
        }
    }
}
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovAdapt.java
New file
@@ -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 "";
    }
}
service-job/src/main/java/com/java110/job/adapt/hcGov/car/EditCarToHcGovReturnAdapt.java
New file
@@ -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("查询推送报文失败。不是同一订单信息");
        }
    }
}
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/AddParkingAreaToHcGovReturnAdapt.java
@@ -69,7 +69,7 @@
        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) {
service-job/src/main/java/com/java110/job/adapt/hcGov/parkArea/EditParkingAreaToHcGovAdapt.java
@@ -19,9 +19,12 @@
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.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 @@
    private IParkingSpaceInnerServiceSMO parkingSpaceInnerServiceSMOImpl;
    @Autowired
    private BaseHcGovSendAsyn baseHcGovSendAsynImpl;
    @Autowired
    private IParkingAreaInnerServiceSMO parkingAreaInnerServiceSMOImpl;
    /**
     * @param business   当前处理业务
@@ -103,14 +108,44 @@
        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 "";
    }
}