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
    • 数据库操作失败抛出 IllegalArgumentExceptionCmdException