diff --git a/config/application-devel-pg.properties b/config/application-devel-pg.properties
index 84dffed..77d4185 100644
--- a/config/application-devel-pg.properties
+++ b/config/application-devel-pg.properties
@@ -8,7 +8,7 @@
 #logging.level.org.hibernate.SQL=DEBUG
 # Postgresql settings
 spring.datasource.platform=postgresql
-spring.datasource.url=jdbc:postgresql://172.28.201.70:15432/restaurantdev
+spring.datasource.url=jdbc:postgresql://172.28.201.101:25432/restauranttest
 spring.datasource.username=payapi
 spring.datasource.password=123456
 database.dbtype=postgresql
diff --git a/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
index ecfb7c9..804526e 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/security/CodeUtil.java
@@ -35,10 +35,8 @@
     //获取生成的验证码
     String verifyCodeExpected = (String) request.getSession()
         .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
-    System.out.println(verifyCodeExpected);
     //获取用户输入的验证码
     String verifyCodeActual = CodeUtil.getString(request, "imageCode");
-    System.out.println(verifyCodeActual);
     if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {
       return false;
     }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
index 197f709..c75b27f 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceGroupController.java
@@ -47,8 +47,7 @@
             searchBean.setPageNo(pageNo);
             searchBean.setDevgroupid(searchKey);
             searchBean.setPageSize(pageSize);
-            System.out.println(searchKey+"&&&&");
-            return deviceService.getDeviceByGroupId(searchBean);
+            return deviceService.getBindDevicesBySearch(searchBean);
         } catch (Exception e) {
             e.printStackTrace();
             return new PageResult<>(99, "系统查询错误");
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
index bc0cae0..ed32a71 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/controller/DeviceManageController.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.restaurant.controller;
 
 
+import com.google.gson.Gson;
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.restaurant.bean.DeviceSearchBean;
 import com.supwisdom.dlpay.restaurant.domain.TDevice;
@@ -18,7 +19,10 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
 @Controller
 @RequestMapping("/devicemanage")
 public class DeviceManageController {
@@ -32,6 +36,14 @@
 
     @RequestMapping("/index")
     public String indexView(ModelMap model) {
+        Map<Integer, String> map = new HashMap<>();
+        List<TDeviceGroup> lst = groupService.findAll();
+        for (TDeviceGroup group : lst) {
+            map.put(group.getDevgroupid(), group.getGroupname());
+        }
+        Gson gson = new Gson();
+        String gsonString = gson.toJson(map);
+        model.put("groupList", gsonString);
 
         return "restaurant/devicemanage/index";
     }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
index 0eee4e7..f7223da 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/DeviceService.java
@@ -39,4 +39,8 @@
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     JsonResult importFile(MultipartFile file, HttpServletRequest request) throws Exception;
+
+    @Transactional(rollbackFor = Exception.class, readOnly = true)
+    PageResult<TDevice> getBindDevicesBySearch(DeviceSearchBean searchBean);
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
index 0d6e626..b6360ac 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/CustomerServiceImpl.java
@@ -126,12 +126,17 @@
 //    InputStream excelstream = new FileInputStream(savePath+"/"+fname);
         InputStream excelstream = file.getInputStream();
         List<Object[][]> oList = null;
-        if (fname.endsWith(".xls")) {
-            oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
-        } else {
-            oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+        try{
+            if (fname.endsWith(".xls")) {
+                oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
+            } else {
+                oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+            }
+        }catch (Exception e){
+            return JsonResult.error("模板格式错误，请重新下载模板");
         }
 
+
         String msg = "";
         Integer successCnt=0;
         Integer failCnt=0;
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 cafc853..72efa0b 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
@@ -200,14 +200,19 @@
       throw new WebCheckException("文件格式错误,请选择excel文件");
     }
     List<Object[][]> excelData = null;
-    if (filename.endsWith(".xls")) {
-      excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
-    } else {
-      excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+    try{
+      if (filename.endsWith(".xls")) {
+        excelData = ImportExcelUtil.getIntegralData(file.getInputStream());//2003版本
+      } else {
+        excelData = ImportExcelUtil.getIntegralData07(file.getInputStream());//2007版本以上
+      }
+      if (null == excelData || excelData.size() < 1) {
+        throw new WebCheckException("excel文件解析错误");
+      }
+    }catch (ArrayIndexOutOfBoundsException e){
+      throw new WebCheckException("模板格式错误，请重新下载模板");
     }
-    if (null == excelData || excelData.size() < 1) {
-      throw new WebCheckException("excel文件解析错误");
-    }
+
 
     int index_cardno = -1;
     int index_name = -1;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
index 37be9e7..3eeb755 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/service/impl/DeviceServiceImpl.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.restaurant.service.impl;
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.exception.WebCheckException;
 import com.supwisdom.dlpay.restaurant.bean.DeviceSearchBean;
 import com.supwisdom.dlpay.restaurant.dao.DeviceDao;
 import com.supwisdom.dlpay.restaurant.dao.ShopDeviceDao;
@@ -12,6 +13,9 @@
 import com.supwisdom.dlpay.framework.util.ImportExcelUtil;
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import org.apache.commons.lang3.StringUtils;
+import org.hibernate.query.internal.NativeQueryImpl;
+import org.hibernate.transform.Transformers;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
@@ -20,9 +24,13 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
 import javax.persistence.criteria.*;
 import javax.servlet.http.HttpServletRequest;
 import java.io.InputStream;
+import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
@@ -36,6 +44,8 @@
     private ShopDeviceDao shopDeviceDao;
     @Autowired
     private ShopSettlementDao shopSettlementDao;
+    @PersistenceContext
+    private EntityManager entityManager;
 
         @Override
         public PageResult<TDevice> getDeviceByParam(DeviceSearchBean param) {
@@ -115,7 +125,6 @@
 
     @Override
     public JsonResult updateDevice(TDevice device) {
-
         TDevice d = deviceDao.findTDeviceById(device.getId());
         d.setDevicename(device.getDevicename());
         d.setDevgroupid(device.getDevgroupid());
@@ -156,13 +165,20 @@
 //    InputStream excelstream = new FileInputStream(savePath+"/"+fname);
         InputStream excelstream = file.getInputStream();
         List<Object[][]> oList = null;
-        if (fname.endsWith(".xls")) {
-            oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
-        } else {
-            oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+        try{
+            if (fname.endsWith(".xls")) {
+                oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
+            } else {
+                oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+            }
+        }catch (Exception e){
+            return JsonResult.error("模板格式错误，请重新下载模板");
         }
 
+
         String msg = "";
+        Integer successCnt=0;
+        Integer failCnt=0;
         for (Object[][] data : oList) {
             for (int i = 1; i < data.length; i++) {
 
@@ -194,8 +210,45 @@
 
             return JsonResult.ok("成功导入"+sList.size()+"条信息");
         }
+        msg="导入成功"+successCnt+"条，导入失败"+failCnt+"条<br/>"+msg;
+
         return JsonResult.error(String.format(Locale.CHINESE, msg));
     }
 
+    @Override
+    public PageResult<TDevice> getBindDevicesBySearch(DeviceSearchBean searchBean) {
+        List<Integer> chirdGroupids = null;
+        Integer devgroupid=searchBean.getDevgroupid();
+        if (null != devgroupid) {
+            Query chirdGroupQuery = entityManager.createNativeQuery(" WITH  RECURSIVE  r  AS ( " +
+                    " SELECT * FROM tb_devicegroup WHERE devgroupid = :gid " +
+                    " union ALL " +
+                    " SELECT a.* FROM tb_devicegroup a, r WHERE a.pid = r.devgroupid ) " +
+                    " SELECT devgroupid FROM r ORDER BY devgroupid ");
+            chirdGroupQuery.setParameter("gid", devgroupid.intValue());
+            chirdGroupids = chirdGroupQuery.getResultList(); //递归查询所有的子节点
+        }
+
+        StringBuffer sql = new StringBuffer("select t.id ,t.devicename,t.devphyid,t.shopid,t.factoryid,t.state " +
+                " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid ");
+        StringBuffer countsql = new StringBuffer("select count(*) " +
+                " from TB_DEVICE t left join TB_DEVICEGROUP a on t.devgroupid=a.devgroupid ");
+
+        if (!StringUtil.isEmpty(chirdGroupids)) {
+            sql.append(" where t.devgroupid in ("+ StringUtils.join(chirdGroupids.toArray(),",")+") ");
+            countsql.append(" where t.devgroupid in ("+ StringUtils.join(chirdGroupids.toArray(),",")+") ");
+
+        }
+        sql.append(" order by t.id ");
+        Query query = entityManager.createNativeQuery(sql.toString());
+        query.setFirstResult((searchBean.getPageNo() - 1) * searchBean.getPageSize());
+        query.setMaxResults(searchBean.getPageSize()); //分页显示
+        Query countQuery = entityManager.createNativeQuery(countsql.toString());
+        query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.aliasToBean(TDevice.class));
+        List<TDevice> list = query.getResultList();
+        BigInteger count = (BigInteger) countQuery.getSingleResult();
+        return new PageResult<>(count.longValue(),list);
+    }
+
 
 }
diff --git a/src/main/resources/templates/restaurant/devicegroup/index.html b/src/main/resources/templates/restaurant/devicegroup/index.html
index dcb9d31..775f629 100644
--- a/src/main/resources/templates/restaurant/devicegroup/index.html
+++ b/src/main/resources/templates/restaurant/devicegroup/index.html
@@ -51,7 +51,6 @@
         table.render({
             elem: '#devicegroup-table',
             url: '[[@{/devicegroup/listDevice}]]',
-            where:  {searchkey:0},
             page: true,
             cols: [
                 [
diff --git a/src/main/resources/templates/restaurant/devicemanage/form.html b/src/main/resources/templates/restaurant/devicemanage/form.html
index 09d53ba..41cf76a 100644
--- a/src/main/resources/templates/restaurant/devicemanage/form.html
+++ b/src/main/resources/templates/restaurant/devicemanage/form.html
@@ -1,6 +1,6 @@
 
 <form id="form" lay-filter="form" class="layui-form model-form">
-    <input name="id" id="id" type="hidden"/>
+    <input name="id" id="devicemanage-id" type="hidden"/>
     <div class="layui-form-item">
         <label class="layui-form-label"><span style="color: red">* </span>设备名称</label>
         <div class="layui-input-block">
diff --git a/src/main/resources/templates/restaurant/devicemanage/index.html b/src/main/resources/templates/restaurant/devicemanage/index.html
index 283b379..1bde305 100644
--- a/src/main/resources/templates/restaurant/devicemanage/index.html
+++ b/src/main/resources/templates/restaurant/devicemanage/index.html
@@ -25,13 +25,16 @@
         <table class="layui-table" id="devicemanage-table" lay-filter="devicemanage-table"></table>
     </div>
 </div>
-
+<input hidden th:value="${groupList}" id="grouplist">
 <script type="text/html" id="devicemanage-dev-tpl-state">
     <input type="checkbox" lay-filter="devicemanage-dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
            {{d.state=='1'?'checked':''}} />
 </script>
 <script>
 
+    var rawlist=$("#grouplist").val();
+    var grouplist=JSON.parse(rawlist);
+
     layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
         let form = layui.form;
         let table = layui.table;
@@ -44,14 +47,26 @@
             elem: '#devicemanage-table',
             url: '[[@{/devicemanage/list}]]',
             page: true,
+            minWidth: 80,
             cols: [
                 [
                     {field: 'id', title: '终端编号', sort: true},
                     {field: 'devicename', title: '设备名称', width:200},
-                    {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
-                    {field: 'shopid', sort: true, width: 150, title: '商户id'},
-                    {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
-                    {field: 'state', title: '状态', sort: true, width: 100, templet: '#devicemanage-dev-tpl-state'},
+                    {field: 'devphyid', sort: true,  title: '设备物理id'},
+                    {field: 'shopid', sort: true,  title: '商户id'},
+                    {field: 'factoryid', sort: true, title: '设备厂商'},
+                    {
+                        field: 'groupid',
+                        sort: true,
+                        title: '设备组',
+                        templet: function (item) {
+                            if(item.devgroupid==0||item.devgroupid== null){
+                                return '无';
+                            }
+                            return grouplist[item.devgroupid];
+                        }
+                    },
+                    {field: 'state', title: '状态', sort: true,  templet: '#devicemanage-dev-tpl-state'},
                     {
                         field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
                             return ' <a class="layui-btn  layui-btn-xs" lay-event="devicemanage-edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ';
@@ -76,7 +91,7 @@
 
         let showModel = function (data) {
             let title = data ? '修改设备信息' : '添加设备';
-            admin.putTempData('t_dev', data);
+            admin.putTempData('t_devm', data);
             admin.popupCenter({
                 title: title,
                 path: '[[@{/devicemanage/loadupdate}]]',
diff --git a/src/main/resources/templates/restaurant/discountrule/ruleform.html b/src/main/resources/templates/restaurant/discountrule/ruleform.html
index 236edb9..175f81c 100644
--- a/src/main/resources/templates/restaurant/discountrule/ruleform.html
+++ b/src/main/resources/templates/restaurant/discountrule/ruleform.html
@@ -8,7 +8,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">餐补名称</label>
+        <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%;"
                   autocomplete="off" lay-verify="required|Rulename"/>
@@ -16,7 +16,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">可用时间段</label>
+        <label class="layui-form-label"><span style="color: red">* </span>可用时间段</label>
         <div class="layui-input-inline" style="width: 100px;">
             <input type="text" name="starttime" placeholder="9:00" id="form-discountrule-starttime" autocomplete="off" maxlength="5"
                    class="layui-input" lay-verify="required"/>
@@ -29,7 +29,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label" id="form-discountrule-amount-text">固定金额(元)</label>
+        <label class="layui-form-label" id="form-discountrule-amount-text"><span style="color: red">* </span>固定金额(元)</label>
         <div class="layui-input-block">
             <input type="text" name="amount" id="form-discountrule-amount" maxlength="9" autocomplete="off" style="width: 90%;"
                    class="layui-input" lay-verify="required|Amount"/>
@@ -37,7 +37,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">可用次数/人</label>
+        <label class="layui-form-label"><span style="color: red">* </span>可用次数/人</label>
         <div class="layui-input-block">
             <input type="text" name="limitcnt" id="form-discountrule-limitcnt" maxlength="9" autocomplete="off" style="width: 90%;"
                    class="layui-input" lay-verify="required|number"/>
@@ -45,7 +45,7 @@
     </div>
 
     <div class="layui-form-item">
-        <label class="layui-form-label">餐补对象</label>
+        <label class="layui-form-label"><span style="color: red">* </span>餐补对象</label>
         <div class="layui-input-inline" style="width: auto;">
             <button type="button" class="layui-btn upoadfile-btn" >
                 <i class="layui-icon">&#xe67c;</i>上传名单
