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 fa55c34..ea422fd 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
@@ -250,6 +250,12 @@
     }
 
     public double subtract(Double minuend,Double subtractor){
+        if (minuend == null) {
+            minuend = 0.0;
+        }
+        if (subtractor == null) {
+            subtractor = 0.0;
+        }
         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 c77795b..f08f563 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
@@ -103,7 +103,7 @@
             }
             val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
             //2. 通过 deviceno 查询设备费率参数
-            val todayAmount = collectdtlService.getTodayAmount(personIdentity.person.userid)
+            val todayAmount = collectdtlService.getTodayAmount(personIdentity.person.userid) ?: 0.0
             val deviceParam = deviceService.getParaMapByDeviceno(param.deviceno)
             var limitmsg = ""
             var checkFlag = false
@@ -206,7 +206,19 @@
                         ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                                 .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "未查询到您的身份信息"))
                 val notaccAmount = userDataService.subtract(personIdentity.coamount, personIdentity.accamount)
+                //2. 通过 deviceno 查询设备费率参数
+                val todayAmount = collectdtlService.getTodayAmount(personIdentity.person.userid) ?: 0.0
+                var limitmsg = ""
+                var checkFlag = false
+                if (todayAmount > deviceParam[WaterDeviceParam.dayAmountLimit]!!.toInt()) {
+                    limitmsg = "今日消费已达上限"
+                    checkFlag = true
+                }
                 if (notaccAmount > deviceParam[WaterDeviceParam.permitNotAccAmount]!!.toInt()) {
+                    limitmsg = "水费欠费已达上限"
+                    checkFlag = true
+                }
+                if (checkFlag) {
                     return ResponseEntity.ok(ResponseBodyBuilder.create()
                             .data(WaterDeviceParam.cobillNo, "")
                             .data(WaterDeviceParam.authStatus, "")
@@ -221,7 +233,7 @@
                             //  如果订单为已支付状态，支付金额多少
                             .data(WaterDeviceParam.paidAmount, "")
                             .data(WaterDeviceParam.permit, 1)
-                            .data(WaterDeviceParam.limitMsg,"限制消费!未扣费金额过多")
+                            .data(WaterDeviceParam.limitMsg,limitmsg)
                             .success())
                 }
             }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
index 05cb1c9..74e6124 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/service/collectdtl_service.kt
@@ -337,7 +337,7 @@
         val sql = "select sum(amount) from tb_collectdtl where status in ('wip','success') and userid=:userid and transdate=:date"
         val query = em.createNativeQuery(sql)
         query.setParameter("userid",userid)
-        query.setParameter("date","20190902")
+        query.setParameter("date",systemUtilsService.sysdatetime.hostdate)
         return query.singleResult as Double?
     }
 }
\ No newline at end of file
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 0fb5bed..df98ad0 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -78,7 +78,7 @@
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('waittime', 1, '180', '5', '出水等待时间(单位:秒):超出这个时间，自动关闭水阀门', '90', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('app_water_limit', 1, '9999', '1', 'app单次用水上限(单位:百毫升)', '200', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('amount_limit', 1, '9999', '1', '单次消费金额上限(单位:分)', '500', 'N');
-INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('day_amount_limit', 1, '9999', '30', '日累计消费金额上限(单位:元)', '900', 'N');
+INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('day_amount_limit', 1, '9999', '1', '日累计消费金额上限(单位:元)', '30', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('devOfflineMaxHour', 1, '168', '1', '设备最大脱机时间(单位:小时)', '72', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('pulseInHML', 1, '100', '1', '每百毫升流量计的脉冲数(单位:个)', '40', 'N');
 INSERT INTO "tb_areapara"("paraname", "groupid", "maxval", "minval", "paradesc", "paraval", "valtype") VALUES ('waterlimit', 1, '9999', '1', '单次用水上限(单位:百毫升)', '300', 'N');
