diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
index 7d42137..828f338 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
@@ -345,7 +345,13 @@
     }
 
     private Double getDiscountAmount(String termdate, String custid, Double amount, DiscountBean bean) {
-        Integer limit = transDtlService.getDiscountLimitToday(termdate, custid, bean.getRuleid());
+        Integer limit;
+        if(RestaurantConstant.RULEMODE_MONTH.equals(bean.getRulemode())){
+            limit=transDtlService.getDiscountLimitMonth(termdate.substring(0,6),custid,bean.getRuleid());
+        }else{
+            limit=transDtlService.getDiscountLimitToday(termdate,custid,bean.getRuleid());
+        }
+
         if (bean.getLimitcnt() > limit) {
 
             if (RestaurantConstant.RULETYPE_REDUCTION.equals(bean.getRuletype())) {
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
index 2da979b..3b5ad3e 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountBean.java
@@ -6,16 +6,18 @@
     private Integer limitcnt;
     private Double amount;
     private Integer ruleid;
+    private String rulemode;
 
     public DiscountBean(){
 
     }
 
-    public DiscountBean(String ruletype, Integer limitcnt, Double amount, Integer ruleid) {
+    public DiscountBean(String ruletype, Integer limitcnt, Double amount, Integer ruleid, String rulemode) {
         this.ruletype = ruletype;
         this.limitcnt = limitcnt;
         this.amount = amount;
         this.ruleid = ruleid;
+        this.rulemode = rulemode;
     }
 
     public Integer getRuleid() {
@@ -49,4 +51,12 @@
     public void setAmount(Double amount) {
         this.amount = amount;
     }
+
+    public String getRulemode() {
+        return rulemode;
+    }
+
+    public void setRulemode(String rulemode) {
+        this.rulemode = rulemode;
+    }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountRuleShowBean.java b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountRuleShowBean.java
index bcdd42e..080e8ff 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountRuleShowBean.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/bean/DiscountRuleShowBean.java
@@ -12,6 +12,7 @@
   private String remark;
   private String starttime;
   private String endtime;
+  private String rulemode;
 
   public Integer getRuleid() {
     return ruleid;
@@ -100,4 +101,12 @@
   public void setEndtime(String endtime) {
     this.endtime = endtime;
   }
+
+  public String getRulemode() {
+    return rulemode;
+  }
+
+  public void setRulemode(String rulemode) {
+    this.rulemode = rulemode;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
index e62d925..0cfc2cd 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceDiscountRuleController.java
@@ -140,6 +140,7 @@
                                        @RequestParam("amount") String amount,
                                        @RequestParam("limitcnt") Integer limitcnt,
                                        @RequestParam("listid") String listid,
+                                       @RequestParam("rulemode") String rulemode,
                                   //     @RequestParam(value = "file", required = false) MultipartFile file,
                                        @AuthenticationPrincipal UserDetails operUser) {
         try {
@@ -164,7 +165,7 @@
                 return JsonResult.error("登录过期，请重新登录");
             }
 
-            if (deviceDiscountRuleService.saveNewDiscountRule(rulename.trim(), ruletype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), Double.parseDouble(amount), limitcnt, listid, oper)) {
+            if (deviceDiscountRuleService.saveNewDiscountRule(rulename.trim(), ruletype, DateUtil.unParseToDateFormat(starttime), DateUtil.unParseToDateFormat(endtime), Double.parseDouble(amount), limitcnt, listid, oper,rulemode)) {
                 return JsonResult.ok("新增成功");
             } else {
                 return JsonResult.error("新增失败");
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustTypeDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustTypeDao.java
index 22208ed..7beb09c 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustTypeDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/CustTypeDao.java
@@ -1,7 +1,6 @@
 package com.supwisdom.dlpay.restaurant.dao;
 
 
-import com.supwisdom.dlpay.restaurant.domain.TArea;
 import com.supwisdom.dlpay.restaurant.domain.TCustType;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java b/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
index 1c5f920..5df3122 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/dao/TransDtlDao.java
@@ -44,10 +44,14 @@
 
     List<TTransDtl> findAllByStatusAndTransdate(String status,String date);
 
+
     TTransDtl getByTransdateAndTermidAndTermsqlno(String transdate,Integer termid,Integer termsqlno);
 
     Integer countByAccdateAndCustidAndRuleid(String accdate,String custid,Integer ruleid);
 
+    @Query(value = "select count(refno) from tb_transdtl where substr(accdate,1,6)=?1 and custid=?2 and ruleid=?3",nativeQuery = true)
+    Integer countTrandtlByAccdateAndCustidAndRuleidWithMonth(String accdate,String custid,Integer ruleid);
+
     @Query("select min(accdate) from TTransDtl")
     String getMinTransdate();
 
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDiscountRule.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDiscountRule.java
index 7ada260..df03d6d 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDiscountRule.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TDiscountRule.java
@@ -55,6 +55,9 @@
   @Column(name = "REMARK", length = 600)
   private String remark;
 
+  @Column(name = "RULEMODE", length = 10)
+  private String rulemode;
+
   public Integer getRuleid() {
     return ruleid;
   }
@@ -174,4 +177,12 @@
   public void setDetailStatus(Integer detailStatus) {
     this.detailStatus = detailStatus;
   }
+
+  public String getRulemode() {
+    return rulemode;
+  }
+
+  public void setRulemode(String rulemode) {
+    this.rulemode = rulemode;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
index bf3baef..5feeb1c 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceDiscountRuleService.java
@@ -26,7 +26,7 @@
 
   @Transactional(rollbackFor = Exception.class)
   boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
-                                   String endtime, Double amount, Integer limitcnt, String listid, TOperator oper) throws Exception;
+                                   String endtime, Double amount, Integer limitcnt, String listid, TOperator oper,String rulemode) throws Exception;
 
   @Transactional(rollbackFor = Exception.class, readOnly = true)
   PageResult<TDiscountDetail> getDiscountRuleDetails(String searchkey, int ruleid, int pageNo, int pageSize);
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
index cb9be96..35e48fd 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/TransDtlService.java
@@ -53,4 +53,7 @@
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
     Integer getDiscountLimitToday(String termdate,String custid,Integer ruleid);
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+    Integer getDiscountLimitMonth(String termdate,String custid,Integer ruleid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
index 39a7177..934e8b5 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceDiscountRuleServiceImpl.java
@@ -96,6 +96,7 @@
                 bean.setStarttime(rule.getStarttime().substring(0, 2) + ":" + rule.getStarttime().substring(2));
                 bean.setEndtime(rule.getEndtime().substring(0, 2) + ":" + rule.getEndtime().substring(2));
                 bean.setTimeperiod(bean.getStarttime() + " ~ " + bean.getEndtime());
+                bean.setRulemode(rule.getRulemode());
                 result.add(bean);
             }
         }
@@ -174,7 +175,7 @@
 
     @Override
     public boolean saveNewDiscountRule(String rulename, String ruletype, String starttime,
-                                       String endtime, Double amount, Integer limitcnt, String listid, TOperator oper) throws Exception {
+                                       String endtime, Double amount, Integer limitcnt, String listid, TOperator oper,String rulemode) throws Exception {
         TDiscountRule rule = new TDiscountRule();
         if (discountRuleDao.checkRulenameExists(rulename) > 0) {
             throw new WebCheckException("餐补名称已经存在！");
@@ -192,6 +193,7 @@
         rule.setCreatetime(systime);
         rule.setLastsaved(systime);
         rule.setVerno(1);
+        rule.setRulemode(rulemode);
         rule = discountRuleDao.save(rule);
 
         /*String filename = file.getOriginalFilename();
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
index f5f5344..a8731bc 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/TransDtlServiceImpl.java
@@ -299,5 +299,10 @@
         return transDtlDao.countByAccdateAndCustidAndRuleid(termdate,custid,ruleid);
     }
 
+    @Override
+    public Integer getDiscountLimitMonth(String termdate, String custid, Integer ruleid) {
+        return transDtlDao.countTrandtlByAccdateAndCustidAndRuleidWithMonth(termdate,custid,ruleid);
+    }
+
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
index d5732cc..a231f87 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/util/RestaurantConstant.java
@@ -78,6 +78,9 @@
     public static final String CHKDTL_RESOLVED_FAIL = "fail"; //补账失败
     public static final String CHKDTL_RESOLVED_HANGUP="hangup"; //挂起
 
+    public static final String RULEMODE_MONTH="month"; //按月
+    public static final String RULEMODE_DAY="day"; //按日
+
 
     public static final String TRANSDTL_STATEMENT_LASTDATE = "transdtl.statement.lastdate"; //统计日期
 }
diff --git a/src/main/resources/templates/restaurant/discountrule/rule.html b/src/main/resources/templates/restaurant/discountrule/rule.html
index 7d4706c..55a2568 100644
--- a/src/main/resources/templates/restaurant/discountrule/rule.html
+++ b/src/main/resources/templates/restaurant/discountrule/rule.html
@@ -66,6 +66,18 @@
                         }
                     },
                     {
+                        field: 'rulemode', title: '餐补模式', align: 'center', width: 120,  sort: true, templet: function (d) {
+                            console.log(d);
+                            if ('day' == d.rulemode) {
+                                return '按日';
+                            } else if ('month' == d.rulemode) {
+                                return '按月';
+                            } else {
+                                return '按日';
+                            }
+                        }
+                    },
+                    {
                         field: 'amount', title: '金额/折率', align: 'center', sort: true, templet: function (d) {
                             if ('discount' == d.ruletype) {
                                 return d.amount + '折';
@@ -89,7 +101,7 @@
                             }
                         }
                     },
-                    {field: 'remark', title: '备注',  align: 'center'},
+                  /*  {field: 'remark', title: '备注',  align: 'center'},*/
                     {align: 'center', title: '操作', width: 250, toolbar: '#discountrule-table-bar',  fixed: 'right'}
                 ]
             ]
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index 0eed2ad..b521c85 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -10,6 +10,15 @@
     </div>
 
     <div class="layui-form-item">
+        <label class="layui-form-label">餐补模式</label>
+        <div class="layui-input-block">
+            <input type="radio" name="rulemode" id="form-discountrule-rulemode-day" lay-filter="discountrule-rulemode-filter" value="day" title="按日" checked/>
+            <input type="radio" name="rulemode" id="form-discountrule-rulemode-month" lay-filter="discountrule-rulemode-filter" value="month" title="按月" />
+
+        </div>
+    </div>
+
+    <div class="layui-form-item">
         <label class="layui-form-label"><span style="color: red">* </span>餐补名称</label>
         <div class="layui-input-block">
            <input type="text" class="layui-input" name="rulename" id="form-discountrule-rulename" maxlength="20" style="width: 90%;"
@@ -172,7 +181,7 @@
             formData.append("endtime", vdata.endtime);
             formData.append("amount", vdata.amount);
             formData.append("limitcnt", vdata.limitcnt);
-
+            formData.append("rulemode", vdata.rulemode);
             formData.append("listid",vdata.listid);
         //    var flag = false;
        //     var files = $('#form-discountrule-records').prop('files');
