HC小区接口文档

API接口文档:水电抄表


一、接口名称

水电抄表

二、接口描述

该接口用于保存水电表抄表记录,并根据抄表数据生成相应的费用账单(如水费、电费)。如果小区在水费或电费黑名单中,则仅记录抄表数据,不生成费用账单。

三、接口路径

POST http://{ip}:{port}/app/meterWater.SaveMeterWater

四、请求方法

POST

五、请求头

参数名称 必填 类型 描述
Authorization 是 String 用户认证Token(Base Token)
app-id 是 String 应用ID(由系统分配)
transaction-id 是 String 请求流水号(格式:1000000000+YYYYMMDDhhmmss+6位序列)
sign 是 String 签名
req-time 是 String 请求时间(YYYYMMDDhhmmss)

六、请求参数

6.1 请求体(JSON格式)

参数名称 必填 类型 描述 示例
configId 是 String 费用项ID "123456"
objType 是 String 对象类型(如房屋、商铺等) "room"
objId 是 String 对象ID(如房屋ID) "1001"
preDegrees 是 Double 上期读数 100.5
curDegrees 是 Double 当前读数(必须 ≥ preDegrees) 120.5
preReadingTime 是 String 上期抄表时间(格式:YYYY-MM-DD HH:mm:ss) "2023-01-01 00:00:00"
curReadingTime 是 String 当前抄表时间(格式:YYYY-MM-DD HH:mm:ss) "2023-02-01 00:00:00"
meterType 是 String 抄表类型(如水表、电表) "water"
communityId 是 String 小区ID "10001"
storeId 是 String 商户ID "20001"
userId 是 String 操作人用户ID "30001"

七、返回值

7.1 返回值(JSON格式)

参数名称 必填 类型 描述
code 是 String 返回码(0 表示成功,其他表示失败)
msg 是 String 返回信息
data 否 Object 返回数据(通常为空)

八、示例请求

POST /app/meterWater.SaveMeterWater
Headers:
{
  "Authorization": "Bearer xxxxxx",
  "app-id": "micro-community",
  "transaction-id": "100000000020230101120000000001",
  "sign": "xxxxxx",
  "req-time": "20230101120000"
}
Body:
{
  "configId": "123456",
  "objType": "room",
  "objId": "1001",
  "preDegrees": 100.5,
  "curDegrees": 120.5,
  "preReadingTime": "2023-01-01 00:00:00",
  "curReadingTime": "2023-02-01 00:00:00",
  "meterType": "water",
  "communityId": "10001",
  "storeId": "20001",
  "userId": "30001"
}

九、示例响应

{
  "code": "0",
  "msg": "成功",
  "data": null
}

十、业务逻辑说明

  1. 参数校验:

    • 校验必填参数是否完整。
    • 校验当前读数是否 ≥ 上期读数,否则报错。
  2. 费用项查询:

    • 根据 configId 查询费用项配置,不存在则报错。
  3. 抄表记录保存:

    • 生成批次号(batchId)。
    • 检查小区是否在水费或电费黑名单中:
      • 如果是黑名单小区,仅保存抄表记录,不生成费用账单。
      • 否则,保存抄表记录并生成费用账单。
  4. 费用账单生成:

    • 生成 feeId 并保存费用信息(PayFeePo)。
    • 保存费用属性(如房屋名称、业主信息等)。
    • 设置费用状态为待支付(STATE_DOING)。
  5. 返回结果:

    • 操作成功返回 code=0,失败返回错误信息。

十一、数据库操作

  • 查询:

    • 查询费用项配置(payFeeConfigV1InnerServiceSMOImpl.queryPayFeeConfigs)。
    • 查询房屋信息(roomInnerServiceSMOImpl.queryRooms)。
    • 查询业主信息(ownerInnerServiceSMOImpl.queryOwnersByRoom)。
  • 插入:

    • 保存抄表记录(meterWaterV1InnerServiceSMOImpl.saveMeterWater)。
    • 保存费用账单(payFeeV1InnerServiceSMOImpl.savePayFee)。
    • 保存费用属性(feeAttrInnerServiceSMOImpl.saveFeeAttr)。
    • 保存批次信息(payFeeBatchV1InnerServiceSMOImpl.savePayFeeBatch)。

注意事项

  1. 黑名单机制:

    • 水费黑名单通过 DOMAIN.COMMON.WATER_BLACK_LIST 配置。
    • 电费黑名单通过 DOMAIN.COMMON.ELECTRIC_BLACK_LIST 配置。
  2. 事务管理:

    • 使用 @Java110Transactional 注解确保数据一致性。
  3. 错误处理:

    • 参数校验失败抛出 CmdException。
    • 数据库操作失败抛出 IllegalArgumentException 或 CmdException。