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 8ad1e25..a4950b9 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/WaterDeviceParam.java
@@ -33,4 +33,11 @@
     public static final String paidAmount = "paidAmount";
     //  立即扣费阈值
     public static final String imdDecThreshold = "imdDecThreshold";
+    //  允许未入账金额
+    public static final String permitNotAccAmount = "permitNotAccAmount";
+    //  是否允许消费
+    public static final String permit = "permit";
+    //  限制消费信息
+    public static final String limitMsg = "limitmsg";
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
index 0a8bad2..918cb87 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
@@ -53,4 +53,6 @@
 
     @Transactional(rollbackFor = Exception.class, readOnly = true)
     PageResult<UserAccountDTO> queryUserAccByParam(UserAccountSearchBean param);
+
+    double subtract(Double minuend, Double subtractor);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
index 18e921c..fa55c34 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
@@ -249,7 +249,7 @@
         return new PageResult<>(count.longValue(), list);
     }
 
-    private double subtract(Double minuend,Double subtractor){
+    public double subtract(Double minuend,Double subtractor){
         return new BigDecimal(String.valueOf(minuend))
                 .subtract(new BigDecimal(String.valueOf(subtractor)))
                 .doubleValue();
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 58d4175..145ad01 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
@@ -15,6 +15,7 @@
 import com.supwisdom.dlpay.water.service.CollectdtlService
 import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.http.HttpRequest
 import org.springframework.http.ResponseEntity
 import org.springframework.web.bind.annotation.*
 import org.springframework.web.servlet.ModelAndView
@@ -101,8 +102,20 @@
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "物理卡号不匹配"))
             }
+//            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())
+//            }
             //3. 创建 collectdtl 记录初始流水
             val trans = TCollectdtl().apply {
                 mode = TradeDict.PAY_MODE_CARD
@@ -126,6 +139,8 @@
                     .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,"")
                     .success())
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
@@ -174,6 +189,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())
+//                }
+//            }
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data(WaterDeviceParam.cobillNo, trans.cobillno)
                     .data(WaterDeviceParam.authStatus, authStatus)
@@ -185,6 +222,8 @@
                     .data(WaterDeviceParam.feeUnit, deviceParam[WaterDeviceParam.feeUnit]!!)
                     //  如果订单为已支付状态，支付金额多少
                     .data(WaterDeviceParam.paidAmount, 0)
+//                    .data(WaterDeviceParam.permit, 0)
+//                    .data(WaterDeviceParam.limitMsg,"")
                     .success())
         } catch (ex: Exception) {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
@@ -197,32 +236,43 @@
      */
     @GetMapping("/qrcode/pretend")
     fun confirmView(@RequestParam("cobillno") cobillno: Int,
-                    @RequestParam("userid") userid: String): ModelAndView {
+                    @RequestParam("userid") userid: String?): ModelAndView {
         try {
+            if (userid == null) {
+                return ModelAndView("error/500").addObject("errorMsg","用户id不能为空")
+            }
             val userInfo = userProxy.querybycardno(QueryUserParam().apply {
                 this.userid = userid
             })
             if (userInfo.retcode != 0) {
                 logger.error { "获取用户${userid}信息失败,错误信息:${userInfo.retmsg}" }
-                return ModelAndView("/error/500").addObject("errorMsg", "用户信息异常")
+                return ModelAndView("error/500").addObject("errorMsg", "用户信息异常")
             }
             if (userInfo.cardstatus != TradeDict.STATUS_NORMAL || userInfo.transstatus != TradeDict.STATUS_NORMAL) {
-                return ModelAndView("/error/500").addObject("errorMsg", "用户消费状态异常")
+                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()}")
+//            }
             if (collectDtl.status != TradeDict.DTL_STATUS_INIT) {
-                return ModelAndView("/error/500").addObject("errorMsg", "流水状态异常")
+                return ModelAndView("error/500").addObject("errorMsg", "流水状态异常")
             }
             val device = deviceService.queryDeviceByDeviceno(collectDtl.deviceno)
-                    ?: return ModelAndView("/error/500").addObject("errorMsg", "设备信息异常")
+                    ?: return ModelAndView("error/500").addObject("errorMsg", "设备信息异常")
             val area = areaService.findByAreaNo(device.areano)
-                    ?: return ModelAndView("/error/500").addObject("errorMsg", "区域信息异常")
+                    ?: return ModelAndView("error/500").addObject("errorMsg", "区域信息异常")
             return ModelAndView("system/start/start").
                     addObject("devicename", device.devicename).
                     addObject("areaname",area.areaName)
         } catch (e: Exception) {
             logger.error { e.message }
-            return ModelAndView("/error/500")
+            return ModelAndView("error/500")
         }
     }
 
@@ -255,11 +305,13 @@
         //  流水是否重复上传
         if (!querycodtl.uploadStatus) {
             val dtl = collectdtlService.saveDeviceDtlData(param)
-            userDataService.updateCoamount(dtl.citizenCardno, param.amount / 100.0)
-            //  是否立即扣费
-            if (param.amount >= deviceService.getParaMapByDeviceno(param.deviceno)[WaterDeviceParam.imdDecThreshold]!!.toInt()) {
-                //  立即异步扣费
-                waterPayAsyncTask.waterPay(querycodtl.cobillno)
+            if (dtl.status == TradeDict.DTL_STATUS_WIP) {
+                userDataService.updateCoamount(dtl.citizenCardno, param.amount / 100.0)
+                //  是否立即扣费
+                if (param.amount >= deviceService.getParaMapByDeviceno(param.deviceno)[WaterDeviceParam.imdDecThreshold]!!.toInt()) {
+                    //  立即异步扣费
+                    waterPayAsyncTask.waterPay(querycodtl.cobillno)
+                }
             }
             return ResponseEntity.ok(ResponseBodyBuilder.create().data(WaterDeviceParam.cobillNo, dtl.cobillno)
                     .success())
@@ -267,4 +319,11 @@
         return ResponseEntity.ok(ResponseBodyBuilder.create().data(WaterDeviceParam.cobillNo, querycodtl.cobillno)
                 .success())
     }
+
+    @GetMapping("/test")
+    fun test(request:HttpRequest): ResponseEntity<Any> {
+        request.uri
+        return ResponseEntity.ok(ResponseBodyBuilder.create().data("test","test")
+                .success())
+    }
 }
\ No newline at end of file
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 079f943..0977d6a 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -111,6 +111,8 @@
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('waterlimit', 1, '500', '1', '单次用水上限(单位:百毫升)', '300', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('validtime', 1, '240', '60', '二维码有效时间(单位:秒)', '180', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('imdDecThreshold', 1, '500', '1', '流水上传立即扣费阈值(单位:分)', '50', 'N');
+INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('permitNotAccAmount', 1, '200', '1', '允许未入账金额(单位:元)', '50', 'N');
+
 
 
 
