diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index a0ed1d3..7a4735f 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -11,7 +11,7 @@
 spring.datasource.password=123456
 # Redis settings
 spring.redis.host=172.28.201.101
-spring.redis.port=16379
+spring.redis.port=2379
 spring.redis.password=kingstar
 # jwt settings
 jwt.secret=Zj5taLomEbrM0lk+NMQZbHfSxaDU1wekjT+kiC3YzDw=
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java b/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java
index a4950b9..523d3a0 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java
@@ -13,6 +13,8 @@
     public static final String pulseInHML = "pulseInHML";
     //  刷卡单次出水上限
     public static final String waterLimit = "waterlimit";
+    //  单次扣费金额上限
+    public static final String AmountLimit = "amount_limit";
     //  单位扣费金额
     public static final String feeAmount = "feeamount";
     //  单位扣费流量
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index 145ad01..a80e156 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -102,20 +102,20 @@
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "物理卡号不匹配"))
             }
-//            val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
+            val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
             //2. 通过 deviceno 查询设备费率参数
             val deviceParam = deviceService.getParaMapByDeviceno(param.deviceno)
-//            if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
-//                return ResponseEntity.ok(ResponseBodyBuilder.create()
-//                        .data(WaterDeviceParam.cobillNo, "")
-//                        .data(WaterDeviceParam.feeAmount, "")
-//                        .data(WaterDeviceParam.waterLimit, "")
-//                        .data(WaterDeviceParam.feestart, "")
-//                        .data(WaterDeviceParam.feeUnit, "")
-//                        .data(WaterDeviceParam.permit, 1)
-//                        .data(WaterDeviceParam.limitMsg,"限制消费!未扣费金额过多")
-//                        .success())
-//            }
+            if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .data(WaterDeviceParam.cobillNo, "")
+                        .data(WaterDeviceParam.feeAmount, "")
+                        .data(WaterDeviceParam.waterLimit, "")
+                        .data(WaterDeviceParam.feestart, "")
+                        .data(WaterDeviceParam.feeUnit, "")
+                        .data(WaterDeviceParam.permit, 1)
+                        .data(WaterDeviceParam.limitMsg,"限制消费!未扣费金额过多")
+                        .success())
+            }
             //3. 创建 collectdtl 记录初始流水
             val trans = TCollectdtl().apply {
                 mode = TradeDict.PAY_MODE_CARD
@@ -139,8 +139,9 @@
                     .data(WaterDeviceParam.waterLimit, deviceParam[WaterDeviceParam.waterLimit]!!)
                     .data(WaterDeviceParam.feestart, deviceParam[WaterDeviceParam.feestart]!!)
                     .data(WaterDeviceParam.feeUnit, deviceParam[WaterDeviceParam.feeUnit]!!)
-//                    .data(WaterDeviceParam.permit, 0)
-//                    .data(WaterDeviceParam.limitMsg,"")
+                    .data(WaterDeviceParam.AmountLimit,deviceParam[WaterDeviceParam.AmountLimit]!!)
+                    .data(WaterDeviceParam.permit, 0)
+                    .data(WaterDeviceParam.limitMsg,"")
                     .success())
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
@@ -189,28 +190,28 @@
             if (trans.authStatus) {
                 authStatus = 1
             }
-//            if (authStatus == 1) {
-//                val personIdentity = userDataService.getPersonIdentityByThirdUid(trans.citizenCardno)
-//                        ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
-//                                .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到您的身份信息"))
-//                val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
-//                if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
-//                    return ResponseEntity.ok(ResponseBodyBuilder.create()
-//                            .data(WaterDeviceParam.cobillNo, "")
-//                            .data(WaterDeviceParam.authStatus, "")
-//                            //2为代扣模式
-//                            .data(WaterDeviceParam.payStatus, "")
-//                            .data(WaterDeviceParam.waterLimit, "")
-//                            .data(WaterDeviceParam.feeAmount, "")
-//                            .data(WaterDeviceParam.feestart, "")
-//                            .data(WaterDeviceParam.feeUnit, "")
-//                            //  如果订单为已支付状态，支付金额多少
-//                            .data(WaterDeviceParam.paidAmount, "")
-//                            .data(WaterDeviceParam.permit, 1)
-//                            .data(WaterDeviceParam.limitMsg,"限制消费!未扣费金额过多")
-//                            .success())
-//                }
-//            }
+            if (authStatus == 1) {
+                val personIdentity = userDataService.getPersonIdentityByThirdUid(trans.citizenCardno)
+                        ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+                                .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到您的身份信息"))
+                val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
+                if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
+                    return ResponseEntity.ok(ResponseBodyBuilder.create()
+                            .data(WaterDeviceParam.cobillNo, "")
+                            .data(WaterDeviceParam.authStatus, "")
+                            //2为代扣模式
+                            .data(WaterDeviceParam.payStatus, "")
+                            .data(WaterDeviceParam.waterLimit, "")
+                            .data(WaterDeviceParam.feeAmount, "")
+                            .data(WaterDeviceParam.feestart, "")
+                            .data(WaterDeviceParam.feeUnit, "")
+                            //  如果订单为已支付状态，支付金额多少
+                            .data(WaterDeviceParam.paidAmount, "")
+                            .data(WaterDeviceParam.permit, 1)
+                            .data(WaterDeviceParam.limitMsg,"限制消费!未扣费金额过多")
+                            .success())
+                }
+            }
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data(WaterDeviceParam.cobillNo, trans.cobillno)
                     .data(WaterDeviceParam.authStatus, authStatus)
@@ -252,14 +253,14 @@
                 return ModelAndView("error/500").addObject("errorMsg", "用户消费状态异常")
             }
             val collectDtl = collectdtlService.pretendAsCard(userInfo, cobillno)
-//            val deviceParam = deviceService.getParaMapByDeviceno(collectDtl.deviceno)
-//            val personIdentity = userDataService.getPersonIdentityByThirdUid(userInfo.cardno)
-//                    ?:  return ModelAndView("error/500").addObject("errorMsg", "未查询到您的身份信息")
-//            val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
-//            if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
-//                return ModelAndView("error/500").
-//                        addObject("errorMsg", "你的未入账金额为${notaccAmount},已超过最大限额:${deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()}")
-//            }
+            val deviceParam = deviceService.getParaMapByDeviceno(collectDtl.deviceno)
+            val personIdentity = userDataService.getPersonIdentityByThirdUid(userInfo.cardno)
+                    ?:  return ModelAndView("error/500").addObject("errorMsg", "未查询到您的身份信息")
+            val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
+            if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
+                return ModelAndView("error/500").
+                        addObject("errorMsg", "你的未入账金额为${notaccAmount},已超过最大限额:${deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()}")
+            }
             if (collectDtl.status != TradeDict.DTL_STATUS_INIT) {
                 return ModelAndView("error/500").addObject("errorMsg", "流水状态异常")
             }
