角色管理和区域维护业务逻辑调整,下发名单等功能完善,初始化数据修改
diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/bean/TNcCardlistDeleteInfo.java b/src/main/java/com/supwisdom/dlpay/doorlist/bean/TNcCardlistDeleteInfo.java
index e68222e..7506fec 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/bean/TNcCardlistDeleteInfo.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/bean/TNcCardlistDeleteInfo.java
@@ -12,7 +12,7 @@
     private String cardno;

     private String bankcardno;

     private String opername;

-    private String syncstatus;

+    private String syncflag;

     private String operflag;

     private String rectime;

     private String synctime;

@@ -65,12 +65,12 @@
         this.opername = opername;

     }

 

-    public String getSyncstatus() {

-        return syncstatus;

+    public String getSyncflag() {

+        return syncflag;

     }

 

-    public void setSyncstatus(String syncstatus) {

-        this.syncstatus = syncstatus;

+    public void setSyncflag(String syncflag) {

+        this.syncflag = syncflag;

     }

 

     public String getOperflag() {

diff --git a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
index 9950ab9..a0ae378 100644
--- a/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/doorlist/controller/DoorlistMgrController.java
@@ -445,8 +445,8 @@
   @ResponseBody

   @RequestMapping(value = "/getAllTCustomerList",method = RequestMethod.POST)

   public Map getAllTCustomerList(@RequestParam(value = "perName", required = false, defaultValue = "") String perName,

-                                 @RequestParam(value = "stuempNo", required = false, defaultValue = "") String cardno,

-                                 @RequestParam(value = "className", required = false, defaultValue = "") String bankcardno) {

+                                 @RequestParam(value = "cardno", required = false, defaultValue = "") String cardno,

+                                 @RequestParam(value = "bankcardno", required = false, defaultValue = "") String bankcardno) {

         Map map = new HashMap();

         try {

             List<TCustomerInfo> pNotInResult = webInterfaceService.getAllTCustomerList(perName, cardno, bankcardno);

@@ -518,11 +518,11 @@
             String opertype = operUser.getOpertype();

             List<TDoordevInfo> pResult = null;

             if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){

-                pResult = ncService.getSystemDevList();

+                pResult = ncService.getSystemDevList(deviceName,regionid,buildingid);

             }else if (opertype.equals("H") && !StringUtil.isEmpty(operUser.getRegionid())){

-                pResult = ncService.getOperatorDevList(operUser.getRegionid());

+                pResult = ncService.getOperatorDevList(deviceName,regionid,buildingid,operUser.getRegionid());

             }else if (opertype.equals("L")){

-                pResult = ncService.getBuildingOperDevList(operUser.getOperid());

+                pResult = ncService.getBuildingOperDevList(deviceName,regionid,buildingid,operUser.getOperid());

             }

             map.put("pResult", pResult);

         }catch (Exception e){

@@ -730,7 +730,7 @@
      * @param devname

      * @param custname

      * @param cardno

-     * @param syncstatus

+     * @param syncflag

      * @param regionid

      * @param allocatStartDate

      * @param allocatEndDate

@@ -747,11 +747,11 @@
                                          @RequestParam(value = "devname", required = false, defaultValue = "") String devname,

                                          @RequestParam(value = "custname", required = false, defaultValue = "") String custname,

                                          @RequestParam(value = "cardno", required = false, defaultValue = "") String cardno,

-                                         @RequestParam(value = "syncstatus", required = false, defaultValue = "all") String syncstatus,

+                                         @RequestParam(value = "syncflag", required = false, defaultValue = "") String syncflag,

                                          @RequestParam(value = "regionid",required = false,defaultValue = "") String regionid,

                                          @RequestParam(value = "allocatStartDate", required = false, defaultValue = "") String allocatStartDate,

                                          @RequestParam(value = "allocatEndDate", required = false, defaultValue = "") String allocatEndDate,

-                                         @RequestParam(value = "operflag", required = false, defaultValue = "all") String operflag,

+                                         @RequestParam(value = "operflag", required = false, defaultValue = "") String operflag,

                                          @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,

                                          @RequestParam(value = "pageSize", required = false, defaultValue = "15") int pageSize,

                                          @RequestParam(value = "usetype", required = false, defaultValue = "MJ") String usetype,

@@ -772,11 +772,11 @@
 

             String opertype = operUser.getOpertype();

             if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){

-                pResult = doorlistMgrService.getSystemCardList(devname, custname, cardno, syncstatus, regionid, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize);

+                pResult = doorlistMgrService.getSystemCardList(devname, custname, cardno, syncflag, regionid, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize);

             }else if (opertype.equals("H") && !StringUtil.isEmpty(operUser.getRegionid())){

-                pResult = doorlistMgrService.getOperatorCardList(devname, custname, cardno, syncstatus, regionid, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize, operUser.getRegionid());

+                pResult = doorlistMgrService.getOperatorCardList(devname, custname, cardno, syncflag, regionid, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize, operUser.getRegionid());

             }else if (opertype.equals("L")){

-                pResult = doorlistMgrService.getBuildingOperCardList(devname, custname, cardno, syncstatus, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize, operUser.getOperid());

+                pResult = doorlistMgrService.getBuildingOperCardList(devname, custname, cardno, syncflag, allocatStartDate, allocatEndDate, operflag, pageNo, pageSize, operUser.getOperid());

             }

         }catch (Exception e){

             e.printStackTrace();

@@ -849,6 +849,7 @@
                     RedisUtil.incr("zcard_max_version");

                 }

             }

+            map.put("result", "删除名单成功!");

         } catch (Exception e) {

             e.printStackTrace();

             map.put("result", "删除设备名单失败!");

diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
index 21f1977..ceacf68 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
@@ -14,6 +14,8 @@
     @Query("from TRole order by createtime asc ")
     List<TRole> getAllRoles();
 
+    List<TRole> getAllByOperid(String operid);
+
     TRole findByRoleCode(String roleCode);
 
     Page<TRole> findAllByRoleNameContaining(String roleName, Pageable pageable);
@@ -24,11 +26,7 @@
 
     TRole findByRoleName(String roleName);
 
-    Page<TRole> findAllByGradeNotAndRoleNameContaining(int grade,String roleName,Pageable pageable);
+    Page<TRole> findAllByOperidAndRoleNameContaining(String operid,String roleName, Pageable pageable);
 
-    Page<TRole> findAllByGradeAndRoleNameContaining(int grade,String roleName,Pageable pageable);
-
-    Page<TRole> findAllByGradeNot(int grade,Pageable pageable);
-
-    Page<TRole> findAllByGrade(int grade,Pageable pageable);
+    Page<TRole> findAllByOperid(String operid, Pageable pageable);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
index 0db1f5a..201d512 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
@@ -31,8 +31,8 @@
   @Column(name="LASTSAVED", length = 14)
   private String lastsaved;
 
-  @Column(name = "GRADE",length = 3)
-  private Integer grade;
+  @Column(name = "OPERID",length = 32)
+  private String operid;
 
   public String getRoleId() {
     return roleId;
@@ -90,11 +90,11 @@
     this.lastsaved = lastsaved;
   }
 
-  public Integer getGrade() {
-    return grade;
+  public String getOperid() {
+    return operid;
   }
 
-  public void setGrade(Integer grade) {
-    this.grade = grade;
+  public void setOperid(String operid) {
+    this.operid = operid;
   }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
index 11555c2..c505a89 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CustomerDaoImpl.java
@@ -59,7 +59,7 @@
             sql +=" and b.cardno like :cardno ";

         }

         if (!StringUtil.isEmpty(bankcardno)){

-            sql +=" and b.bankcardno like bankcardno ";

+            sql +=" and b.bankcardno like :bankcardno ";

         }

         sql +=" order by b.cardno desc ";

         Query query = entityManager.createNativeQuery(sql, TCustomerInfo.class);

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
index 7bf505f..63f2aee 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -391,7 +391,7 @@
             if (cleanList==null) {

                 //如果该设备没有清空专用名单则添加一个(直接添加到同步表里)

                 TNcCardlist tNcCardlist = new TNcCardlist();

-                long listid = RedisUtil.incr("seq_door");

+                long listid = RedisUtil.incr("seq_cardlist");

                 tNcCardlist.setListid(listid + "");

                 tNcCardlist.setCustid("");

                 tNcCardlist.setCustname(devid + "设备清除名单");

@@ -401,7 +401,7 @@
                 tNcCardlist.setOperid(operUser.getOperid());

                 tNcCardlist.setDeviceid(devid);

                 //清除名单专用标志

-                tNcCardlist.setOperflag("C");

+                tNcCardlist.setOperflag("Q");

                 tNcCardlist.setRectime(DateUtil.getNow());

                 tNcCardlist.setSynctime("");

                 tNcCardlist.setSyncflag("N");

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
index a7b5fd1..2b3d7f1 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -45,7 +45,7 @@
 

     public List<TNcDevice> getDevListByfDevid(int devid);

 

-    public boolean delDevById(int devid);

+    public boolean updateTodelDevById(int devid);

 

     public List<TNcDevice> findAllNcDevices();

 

@@ -54,9 +54,9 @@
     public List<TNcDevice> findOperatorDevices(String operRegionid);

 

 

-    public List<TDoordevInfo> getSystemDevList();

+    public List<TDoordevInfo> getSystemDevList(String devname,String regionid,String buildingid);

 

-    public List<TDoordevInfo> getOperatorDevList(String regionid);

+    public List<TDoordevInfo> getOperatorDevList(String devname,String regionid,String buildingid,String operRegionid);

 

-    public List<TDoordevInfo> getBuildingOperDevList(String operid);

+    public List<TDoordevInfo> getBuildingOperDevList(String devname,String regionid,String buildingid,String operid);

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
index 6e6db9a..f9ed72d 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcCardListDaoImpl.java
@@ -23,7 +23,7 @@
     @Transactional

     @Override

     public TNcCardlist getCleanList(int devid) {

-        String sql = "select t from TNcCardlist t where t.deviceid=:devid and t.operflag = 'C'";

+        String sql = "select t from TNcCardlist t where t.deviceid=:devid and t.operflag = 'Q'";

         TypedQuery<TNcCardlist> query = entityManager.createQuery(sql, TNcCardlist.class);

         query.setParameter("devid", devid);

         List<TNcCardlist> list = query.getResultList();

@@ -74,12 +74,12 @@
 

     @Transactional

     @Override

-    public Pagination getSystemCardList(String devname, String custname, String cardno, String syncstatus, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize) {

-        String sql = "select a.listid,a.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncstatus,a.operflag,a.rectime,a.synctime " +

-                " from t_nc_cardlist a left join tn_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' ";

+    public Pagination getSystemCardList(String devname, String custname, String cardno, String syncflag, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize) {

+        String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +

+                " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -87,8 +87,8 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

@@ -107,11 +107,11 @@
         if (!StringUtil.isEmpty(custname)){

             query.setParameter("custname", "%"+custname+"%");

         }

-        if (!StringUtil.isEmpty(devname)){

+        if (!StringUtil.isEmpty(cardno)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

@@ -129,17 +129,17 @@
         page.setPageSize(pageSize);

         List<TNcCardlistDeleteInfo> list = query.getResultList();

         page.setList(list);

-        int totalCount = getSystemCardListCount(devname,custname,cardno,syncstatus,operflag,regionid,allocatStartDate, allocatEndDate);

+        int totalCount = getSystemCardListCount(devname,custname,cardno,syncflag,operflag,regionid,allocatStartDate, allocatEndDate);

         page.setTotalCount(totalCount);

         return page;

     }

 

-    private int getSystemCardListCount(String devname, String custname, String cardno, String syncstatus,String operflag, String regionid, String allocatStartDate, String allocatEndDate){

+    private int getSystemCardListCount(String devname, String custname, String cardno, String syncflag,String operflag, String regionid, String allocatStartDate, String allocatEndDate){

         String sql = " select count(*) from t_nc_cardlist a "+

                 " left join t_nc_device c on a.deviceid = c.deviceid " +

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' ";

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -147,8 +147,8 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

@@ -166,11 +166,11 @@
         if (!StringUtil.isEmpty(custname)){

             query.setParameter("custname", "%"+custname+"%");

         }

-        if (!StringUtil.isEmpty(devname)){

+        if (!StringUtil.isEmpty(cardno)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

@@ -190,12 +190,12 @@
 

     @Transactional

     @Override

-    public Pagination getOperatorCardList(String devname, String custname, String cardno, String syncstatus, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize, String operRegionid) {

-        String sql = "select a.listid,a.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncstatus,a.operflag,a.rectime,a.synctime " +

-                " from t_nc_cardlist a left join tn_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' ";

+    public Pagination getOperatorCardList(String devname, String custname, String cardno, String syncflag, String regionid, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize, String operRegionid) {

+        String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +

+                " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -203,31 +203,22 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

         }

-        if (!StringUtil.isEmpty(regionid)){

+

             sql += "and c.regionid in  "

                     +"("

                     + "with recursive tmp as  "

                     + "("

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:operRegionid  "

-                    + "union all  "

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

-                    + ") select regionid from tmp  where tmp.regionid=:regionid)";

-        }else {

-            sql += "and c.regionid in  "

-                    +"("

-                    + "with recursive tmp as  "

-                    + "("

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:operRegionid  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:regionid  "

                     + "union all  "

                     + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

                     + ") select regionid from tmp  )";

-        }

+

         sql +=" order by a.listid desc " ;

         Query query = entityManager.createNativeQuery(sql, TNcCardlistDeleteInfo.class);

         if (!StringUtil.isEmpty(devname)){

@@ -239,15 +230,16 @@
         if (!StringUtil.isEmpty(devname)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

         }

-        query.setParameter("operRegionid", operRegionid);

         if (!StringUtil.isEmpty(regionid)){

             query.setParameter("regionid", regionid);

+        }else {

+            query.setParameter("regionid", operRegionid);

         }

         query.setParameter("allocatStartDate", allocatStartDate);

         query.setParameter("allocatEndDate", allocatEndDate);

@@ -259,17 +251,17 @@
         page.setPageSize(pageSize);

         List<TNcCardlistDeleteInfo> list = query.getResultList();

         page.setList(list);

-        int totalCount = getOperatorCardListCount(devname,custname,cardno,syncstatus,operflag,regionid,allocatStartDate, allocatEndDate,operRegionid);

+        int totalCount = getOperatorCardListCount(devname,custname,cardno,syncflag,operflag,regionid,allocatStartDate, allocatEndDate,operRegionid);

         page.setTotalCount(totalCount);

         return page;

     }

 

-    private int getOperatorCardListCount(String devname, String custname, String cardno, String syncstatus,String operflag, String regionid, String allocatStartDate, String allocatEndDate,String operRegionid){

+    private int getOperatorCardListCount(String devname, String custname, String cardno, String syncflag,String operflag, String regionid, String allocatStartDate, String allocatEndDate,String operRegionid){

         String sql = "select count(*) from t_nc_cardlist a " +

                 " left join t_nc_device c on a.deviceid = c.deviceid " +

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' ";

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -277,31 +269,21 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

         }

-        if (!StringUtil.isEmpty(regionid)){

+

             sql += "and c.regionid in  "

                     +"("

                     + "with recursive tmp as  "

                     + "("

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:operRegionid  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:regionid  "

                     + "union all  "

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

-                    + ") select regionid from tmp  where tmp.regionid=:regionid)";

-        }else {

-            sql += "and c.regionid in  "

-                    +"("

-                    + "with recursive tmp as  "

-                    + "("

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid =:operRegionid  "

-                    + "union all  "

-                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

-                    + ") select regionid from tmp  )";

-        }

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  " + ") select regionid from tmp  )";

+

         Query query = entityManager.createNativeQuery(sql);

         if (!StringUtil.isEmpty(devname)){

             query.setParameter("devname", "%"+devname+"%");

@@ -312,15 +294,16 @@
         if (!StringUtil.isEmpty(devname)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

         }

-        query.setParameter("operRegionid", operRegionid);

         if (!StringUtil.isEmpty(regionid)){

             query.setParameter("regionid", regionid);

+        }else {

+            query.setParameter("regionid", operRegionid);

         }

         query.setParameter("allocatStartDate", allocatStartDate);

         query.setParameter("allocatEndDate", allocatEndDate);

@@ -335,13 +318,13 @@
 

     @Transactional

     @Override

-    public Pagination getBuildingOperCardList(String devname, String custname, String cardno, String syncstatus, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize, String operid) {

-        String sql = "select a.listid,a.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncstatus,a.operflag,a.rectime,a.synctime " +

-                " from t_nc_cardlist a left join tn_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

+    public Pagination getBuildingOperCardList(String devname, String custname, String cardno, String syncflag, String allocatStartDate, String allocatEndDate, String operflag, int pageNo, int pageSize, String operid) {

+        String sql = "select a.listid,c.devname,a.custname,a.cardno,a.bankcardno,b.opername,a.syncflag,a.operflag,a.rectime,a.synctime " +

+                " from t_nc_cardlist a left join tb_operator b on a.operid=b.operid left join t_nc_device c on a.deviceid = c.deviceid " +

                 " left join t_operbuilding d on d.buildingid = c.buildingid "+

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -349,8 +332,8 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

@@ -366,8 +349,8 @@
         if (!StringUtil.isEmpty(devname)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

@@ -383,18 +366,18 @@
         page.setPageSize(pageSize);

         List<TNcCardlistDeleteInfo> list = query.getResultList();

         page.setList(list);

-        int totalCount = getBuildingOperCardListCount(devname,custname,cardno,syncstatus,operflag,operid,allocatStartDate, allocatEndDate);

+        int totalCount = getBuildingOperCardListCount(devname,custname,cardno,syncflag,operflag,operid,allocatStartDate, allocatEndDate);

         page.setTotalCount(totalCount);

         return page;

     }

 

-    private int getBuildingOperCardListCount(String devname, String custname, String cardno, String syncstatus,String operflag, String operid, String allocatStartDate, String allocatEndDate){

+    private int getBuildingOperCardListCount(String devname, String custname, String cardno, String syncflag,String operflag, String operid, String allocatStartDate, String allocatEndDate){

         String sql = "select count(*) from t_nc_cardlist a " +

                 " left join t_nc_device c on a.deviceid = c.deviceid " +

                 " left join t_operbuilding d on d.buildingid = c.buildingid "+

-                " where a.rectime>=:allocatStartDate and a.rectime<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";

+                " where substr(a.rectime,0,9)>=:allocatStartDate and substr(a.rectime,0,9)<=:allocatEndDate and c.operflag='A' and d.operid = :operid ";

         if (!StringUtil.isEmpty(devname)){

-            sql += " and a.devname like :devname ";

+            sql += " and c.devname like :devname ";

         }

         if (!StringUtil.isEmpty(custname)){

             sql += " and a.custname like :custname ";

@@ -402,13 +385,13 @@
         if (!StringUtil.isEmpty(cardno)){

             sql += " and a.cardno like :cardno ";

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            sql += " and a.syncstatus = :syncstatus ";

+        if (!StringUtil.isEmpty(syncflag)){

+            sql += " and a.syncflag = :syncflag ";

         }

         if (!StringUtil.isEmpty(operflag)){

             sql += " and a.operflag = :operflag ";

         }

-        Query query = entityManager.createNativeQuery(sql, TNcCardlistDeleteInfo.class);

+        Query query = entityManager.createNativeQuery(sql);

         if (!StringUtil.isEmpty(devname)){

             query.setParameter("devname", "%"+devname+"%");

         }

@@ -418,8 +401,8 @@
         if (!StringUtil.isEmpty(devname)){

             query.setParameter("cardno", cardno);

         }

-        if (!StringUtil.isEmpty(syncstatus)){

-            query.setParameter("syncstatus", syncstatus);

+        if (!StringUtil.isEmpty(syncflag)){

+            query.setParameter("syncflag", syncflag);

         }

         if (!StringUtil.isEmpty(operflag)){

             query.setParameter("operflag", operflag);

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
index a3623f0..b7b8a4c 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/impl/NcDeviceDaoImpl.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.ncmgr.dao.impl;

 

 import com.supwisdom.dlpay.doorlist.bean.TDoordevInfo;

+import com.supwisdom.dlpay.framework.util.StringUtil;

 import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;

 import com.supwisdom.dlpay.ncmgr.domain.TBuilding;

 import com.supwisdom.dlpay.ncmgr.domain.TNcDevice;

@@ -27,7 +28,7 @@
         String sql ="select * from T_Nc_Device bean "

                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid"

-                +" where 1>0 and operflag='A'";

+                +" where 1>0 ";

         if(!devname.equals("")){

             sql+=" and devname like :devname ";

         }

@@ -80,7 +81,7 @@
         String sql ="select count(bean.deviceid) from T_Nc_Device bean "

                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid"

-                +" where 1>0 and operflag='A' ";

+                +" where 1>0 ";

         if(!devname.equals("")){

             sql+=" and bean.devname like :devname ";

         }

@@ -127,7 +128,7 @@
         String sql ="select * from T_Nc_Device bean "

                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid "

-                +" where 1>0 and operflag='A' ";

+                +" where 1>0 ";

         if(!devname.equals("")){

             sql+=" and devname like :devname ";

         }

@@ -181,7 +182,7 @@
         String sql ="select count(bean.deviceid) from T_Nc_Device bean "

                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid"

-                +" where 1>0 and operflag='A' ";

+                +" where 1>0 ";

         if(!devname.equals("")){

             sql+=" and bean.devname like :devname ";

         }

@@ -231,7 +232,7 @@
                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid"

                 +" left join t_operbuilding tob on tob.buildingid=bean.buildingid "

-                +" where 1>0 and bean.operflag='A' and tob.operid = :operid ";

+                +" where 1>0  and tob.operid = :operid ";

         if(!devname.equals("")){

             sql+=" and bean.devname like :devname ";

         }

@@ -272,7 +273,7 @@
                 +" left join t_building tb on bean.buildingid=tb.buildingid"

                 +" left join tb_region tr on tr.regionid=tb.regionid"

                 +" left join t_operbuilding tob on tob.buildingid=bean.buildingid "

-                +" where 1>0 and operflag='A' and tob.operid = :operid ";

+                +" where 1>0  and tob.operid = :operid ";

         if(!devname.equals("")){

             sql+=" and bean.devname like :devname ";

         }

@@ -520,10 +521,10 @@
 

     @Transactional

     @Override

-    public boolean delDevById(int devid) {

-        boolean flag=false;

+    public boolean updateTodelDevById(int devid) {

+        boolean flag = false;

         try {

-            String sql = "delete from T_Nc_Device where deviceid=?1";

+            String sql = "update t_nc_device set operflag = 'D' where deviceid = ?1";

             Query query = entityManager.createNativeQuery(sql);

             query.setParameter(1, devid);

             query.executeUpdate();

@@ -574,35 +575,112 @@
 

     @Transactional

     @Override

-    public List<TDoordevInfo> getSystemDevList() {

+    public List<TDoordevInfo> getSystemDevList(String devname,String regionid,String buildingid) {

         String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from T_NC_device a left join tb_region b on a.regionid = b.regionid  " +

-                " where a.operflag = 'A' and a.devtype='R'";

+                " where a.operflag = 'A' and a.devtype='R' ";

+        if (!StringUtil.isEmpty(devname)){

+            sql += " and a.devname like :devname ";

+        }

+        if (!StringUtil.isEmpty(regionid)){

+            sql += " and a.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  ) ";

+        }

+        if (!StringUtil.isEmpty(buildingid)){

+            sql += " and a.buildingid = :buildingid ";

+        }

+        sql += " order by a.devname ";

         Query query = entityManager.createNativeQuery(sql, TDoordevInfo.class);

+        if (!StringUtil.isEmpty(devname)){

+            query.setParameter("devname", "%"+devname+"%");

+        }

+        if (!StringUtil.isEmpty(regionid)){

+            query.setParameter("regionid", regionid);

+        }

+        if (!StringUtil.isEmpty(buildingid)){

+            query.setParameter("buildingid", buildingid);

+        }

         List<TDoordevInfo> list = query.getResultList();

         return list;

     }

 

     @Transactional

     @Override

-    public List<TDoordevInfo> getOperatorDevList(String regionid) {

+    public List<TDoordevInfo> getOperatorDevList(String devname,String regionid,String buildingid,String operRegionid) {

         String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from T_NC_device a left join tb_region b on a.regionid = b.regionid  " +

-                " where a.operflag = 'A' and a.devtype='R' and a.regionid in(with recursive tmp as  (select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr " +

-                "   where regionid= :operRegionid union all  select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  " +

-                "   ) select regionid from tmp  )";

+                " where a.operflag = 'A' and a.devtype='R' ";

+        if (!StringUtil.isEmpty(devname)){

+            sql += " and a.devname like :devname ";

+        }

+

+            sql += " and a.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  ) ";

+

+        if (!StringUtil.isEmpty(buildingid)){

+            sql += " and a.buildingid = :buildingid ";

+        }

+        sql += " order by a.devname ";

         Query query = entityManager.createNativeQuery(sql, TDoordevInfo.class);

-        query.setParameter("operRegionid", regionid);

+        if (!StringUtil.isEmpty(devname)){

+            query.setParameter("devname", "%"+devname+"%");

+        }

+        if (!StringUtil.isEmpty(regionid)){

+            query.setParameter("regionid", regionid);

+        }else {

+            query.setParameter("regionid", operRegionid);

+        }

+        if (!StringUtil.isEmpty(buildingid)){

+            query.setParameter("buildingid", buildingid);

+        }

         List<TDoordevInfo> list = query.getResultList();

         return list;

     }

 

     @Transactional

     @Override

-    public List<TDoordevInfo> getBuildingOperDevList(String operid) {

+    public List<TDoordevInfo> getBuildingOperDevList(String devname,String regionid,String buildingid,String operid) {

         String sql = "select a.deviceid,a.devname,b.regionname,a.buildingname from T_NC_device a left join tb_region b on a.regionid = b.regionid  " +

                 "left join  t_operbuilding c on a.buildingid=c.buildingid " +

-                "where a.operflag = 'A' and a.devtype='R' and c.operid=?1";

+                "where a.operflag = 'A' and a.devtype='R' and c.operid=:operid";

+        if (!StringUtil.isEmpty(devname)){

+            sql += " and a.devname like :devname ";

+        }

+        if (!StringUtil.isEmpty(regionid)){

+            sql += " and a.regionid in  "

+                    +"("

+                    + "with recursive tmp as  "

+                    + "("

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid = :regionid  "

+                    + "union all  "

+                    + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  "

+                    + ") select regionid from tmp  ) ";

+        }

+        if (!StringUtil.isEmpty(buildingid)){

+            sql += " and a.buildingid = :buildingid ";

+        }

+        sql += " order by a.devname ";

         Query query = entityManager.createNativeQuery(sql, TDoordevInfo.class);

-        query.setParameter(1, operid);

+        query.setParameter("operid", operid);

+        if (!StringUtil.isEmpty(devname)){

+            query.setParameter("devname", "%"+devname+"%");

+        }

+        if (!StringUtil.isEmpty(regionid)){

+            query.setParameter("regionid", regionid);

+        }

+        if (!StringUtil.isEmpty(buildingid)){

+            query.setParameter("buildingid", buildingid);

+        }

         List<TDoordevInfo> list = query.getResultList();

         return list;

     }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
index 017c47c..f07ecdc 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -82,13 +82,13 @@
     public TNcDevice getDevByBuildingid(String buildingid);

 

     //获取系统管理员权限下所有可以分配的设备

-    public List<TDoordevInfo> getSystemDevList();

+    public List<TDoordevInfo> getSystemDevList(String devname,String regionid,String buildingid);

 

     //获取区域管理员权限下所有可以分配的设备

-    public List<TDoordevInfo> getOperatorDevList(String regionid);

+    public List<TDoordevInfo> getOperatorDevList(String devname,String regionid,String buildingid,String operRegionid);

 

     //获取楼栋管理员权限下所有可以分配的设备

-    public List<TDoordevInfo> getBuildingOperDevList(String operid);

+    public List<TDoordevInfo> getBuildingOperDevList(String devname,String regionid,String buildingid,String operid);

 

     //根据查询条件分页获取所有时间段信息

     public Pagination getNcTimeWithPage(String time,int pageNo, int pageSize,Map map);

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
index 02029ac..1f76fa1 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
@@ -122,7 +122,7 @@
 

     @Override

     public void delDevById(int devid) {

-        ncDeviceDao.delDevById(devid);

+        ncDeviceDao.updateTodelDevById(devid);

     }

 

     @Override

@@ -151,18 +151,18 @@
     }

 

     @Override

-    public List<TDoordevInfo> getSystemDevList() {

-        return ncDeviceDao.getSystemDevList();

+    public List<TDoordevInfo> getSystemDevList(String devname,String regionid,String buildingid) {

+        return ncDeviceDao.getSystemDevList(devname,regionid,buildingid);

     }

 

     @Override

-    public List<TDoordevInfo> getOperatorDevList(String regionid) {

-        return ncDeviceDao.getOperatorDevList(regionid);

+    public List<TDoordevInfo> getOperatorDevList(String devname,String regionid,String buildingid,String operRegionid) {

+        return ncDeviceDao.getOperatorDevList(devname,regionid,buildingid,operRegionid);

     }

 

     @Override

-    public List<TDoordevInfo> getBuildingOperDevList(String operid) {

-        return ncDeviceDao.getBuildingOperDevList(operid);

+    public List<TDoordevInfo> getBuildingOperDevList(String devname,String regionid,String buildingid,String operid) {

+        return ncDeviceDao.getBuildingOperDevList(devname,regionid,buildingid,operid);

     }

 

     @Override

diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java
index 5d61342..de276ce 100644
--- a/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java
+++ b/src/main/java/com/supwisdom/dlpay/system/bean/OperatorListBean.java
@@ -13,6 +13,7 @@
     private String opertype;

     private String roleid;

     private String rolename;

+    private String status;

     private String regionid;

     private String regionname;

     private String mobile;

@@ -74,6 +75,14 @@
         this.rolename = rolename;

     }

 

+    public String getStatus() {

+        return status;

+    }

+

+    public void setStatus(String status) {

+        this.status = status;

+    }

+

     public String getRegionid() {

         return regionid;

     }

diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
index 7c77c92..4c2df29 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
@@ -323,8 +323,12 @@
             }
             List<TDictionaryId> opertypes = systemService.findOpertypes(operUser.getOpertype());
             map.put("opertypes", opertypes);
-
-            List<TRole> roles = roleService.findAllRoles();
+            List<TRole> roles = null;
+            if (!StringUtil.isEmpty(operUser.getOpertype()) && (operUser.getOpertype().equals("P") || operUser.getOpertype().equals("S"))) {
+                 roles = roleService.findAllRoles();
+            }else {
+                roles = roleService.findAllRolesByOperid(operUser.getOperid());
+            }
             map.put("roles", roles);
 
             List<TRegion> regions = null;
@@ -357,6 +361,12 @@
                 map.put("errStr", "操作员编号已经存在,请修改!");
                 return map;
             }
+            TOperator operatorByOpercode = managerService.getOperatorByOpercode(postData.getOpercode());
+            if (operatorByOpercode!=null){
+                map.put("errStr", "登录名已经存在,请修改!");
+                return map;
+            }
+
             TOperator operator = new TOperator();
             operator.setOperid(postData.getOperid());
             operator.setOpername(postData.getOpername());
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
index fc0ee59..5ecc6f3 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/RoleController.java
@@ -46,7 +46,7 @@
             searchBean.setPageNo(pageNo);
             searchBean.setFunctioname(searchKey);
             searchBean.setPageSize(pageSize);
-            return roleService.getRolesByKey(searchBean,operUser.getOpertype());
+            return roleService.getRolesByKey(searchBean,operUser.getOpertype(),operUser.getOperid());
         } catch (Exception e) {
             e.printStackTrace();
             return new PageResult<>(99, "系统查询错误");
@@ -54,16 +54,17 @@
     }
 
     @GetMapping("/role/loadadd")
-    public String loadadd() {
+    public String loadadd(@AuthenticationPrincipal TOperator operUser) {
+
         return "system/role/form";
     }
 
     @PostMapping("/role/add")
     //@PreAuthorize("hasPermission('/role/add','')")
     @ResponseBody
-    public JsonResult add(@RequestBody TRole role) {
+    public JsonResult add(@RequestBody TRole role,@AuthenticationPrincipal TOperator operUser) {
         if (role != null) {
-            return roleService.saveRole(role);
+            return roleService.saveRole(role,operUser.getOperid());
         } else {
             return JsonResult.error("添加失败");
         }
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
index 000a4b8..c5409c5 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -250,8 +250,8 @@
         String message="";

         try{

             List<TBuilding> building = systemService.getBuildingByRegionId(regionid);

-            List<TRegion> regionByParentId = systemService.getRegionListById(regionid);

-            if (building!=null || regionByParentId!=null){

+            List<TRegion> lowRegionByParentId = systemService.getLowRegionListById(regionid);

+            if (building!=null || lowRegionByParentId.size()>0){

                 message="此区域已被绑定!";

                 map.put("message", message);

                 return map;

@@ -330,24 +330,22 @@
     public Map addRegion (@RequestBody RegionBean postData){

         Map map = new HashMap();

         try{

-            TRegion regionById = systemService.getRegionAllFlagById(postData.getRegionid());

-            if (regionById!=null){

-                map.put("errStr", "区域编号已经存在,请修改!");

-                return map;

-            }

             TRegion regionByName = systemService.getRegionByName(postData.getRegionname());

             if (regionByName!=null){

                 map.put("errStr", "区域名称已经存在,请修改!");

                 return map;

             }

             TRegion region= new TRegion();

-            region.setRegionid(postData.getRegionid());

+            long regionid = RedisUtil.incr("seq_region");

+            region.setRegionid(regionid+"");

             region.setAddress(postData.getAddress());

-            region.setLevel(postData.getLevel());

+

+            TRegion tRegion = systemService.getRegionById(postData.getParentid());

+

+            region.setLevel(tRegion.getLevel()+1);

             region.setParentid(postData.getParentid());

             region.setRegionname(postData.getRegionname());

             region.setRemarks(postData.getRemarks());

-            TRegion tRegion = systemService.getRegionById(postData.getParentid());

             region.setParentname(tRegion.getRegionname());

             region.setFlag(1);

 

@@ -380,12 +378,12 @@
                 return map;

             }

             TRegion region = systemService.getRegionById(postData.getRegionid());

+            TRegion tRegion = systemService.getRegionById(postData.getParentid());

             region.setAddress(postData.getAddress());

-            region.setLevel(postData.getLevel());

+            region.setLevel(tRegion.getLevel()+1);

             region.setParentid(postData.getParentid());

             region.setRegionname(postData.getRegionname());

             region.setRemarks(postData.getRemarks());

-            TRegion tRegion = systemService.getRegionById(postData.getParentid());

             region.setParentname(tRegion.getRegionname());

             region.setFlag(1);

 

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
index 5f8798a..2e5ddda 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
@@ -16,6 +16,8 @@
 

     TOperator getOperatorById(String operid);

 

+    TOperator getOperatorByOpercode(String opercode);

+

     TRole getOperRoleById(String operid);

 

     boolean saveOperator(TOperator bean);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
index da117c5..780d39f 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
@@ -19,6 +19,8 @@
 

     public List<TRegion> getRegionListById(String regionid);

 

+    public List<TRegion> getLowRegionListById(String regionid);

+

     public List<TRegion> getRegionListByLevel(int level);

 

     public List<TRegion> getOperRegionListByLevel(int level,String regionid);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
index e47d5dc..991111f 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/ManagerDaoImpl.java
@@ -25,12 +25,12 @@
     @Transactional

     @Override

     public Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize) {

-        String sql = "select a.operid,a.opername,a.opercode,a.opertype,a.realname,a.regionid,a.mobile,a.foperid,c.roleid,c.rolename,d.regionname " +

+        String sql = "select a.operid,a.opername,a.opercode,a.opertype,a.realname,case when a.status='normal' then '有效' else '注销' end status,a.regionid,a.mobile,a.foperid,c.roleid,c.rolename,d.regionname " +

                 " from Tb_Operator a " +

                 " left join tb_oper_role b on a.operid = b.operid " +

                 " left join tb_role c on b.roleid = c.roleid " +

                 " left join tb_region d on a.regionid = d.regionid " +

-                " where 1>0 and a.status='normal' ";

+                " where 1>0  ";

         if (!StringUtil.isEmpty(operid)){

             sql += " and a.operid = :operid ";

         }

@@ -68,7 +68,7 @@
                 " left join tb_oper_role b on a.operid = b.operid " +

                 " left join tb_role c on b.roleid = c.roleid " +

                 " left join tb_region d on a.regionid = d.regionid " +

-                "where a.status='normal' ";

+                "where 1>0 ";

 

         if (!StringUtil.isEmpty(operid)){

             sql += " and a.operid = :operid ";

@@ -97,12 +97,12 @@
     @Transactional

     @Override

     public Pagination getOperOperatorList(String operatorOperid, String operid, String realname, int pageNo, int pageSize) {

-        String sql = "select a.operid,a.opername,a.opertype,a.realname,a.regionid,a.mobile,a.foperid,c.roleid,c.rolename,d.regionname " +

+        String sql = "select a.operid,a.opername,a.opercode,a.opertype,a.realname,case when a.status='normal' then '有效' else '注销' end status,a.regionid,a.mobile,a.foperid,c.roleid,c.rolename,d.regionname " +

                 " from Tb_Operator a " +

                 " left join tb_oper_role b on a.operid = b.operid " +

                 " left join tb_role c on b.roleid = c.roleid " +

                 " left join tb_region d on a.regionid = d.regionid " +

-                " where 1>0 and a.status='normal' and (a.operid=:operatorOperid or a.foperid=:operatorOperid) ";

+                " where 1>0 and   a.foperid=:operatorOperid ";

         if (!StringUtil.isEmpty(operid)){

             sql += " and a.operid = :operid ";

         }

@@ -139,7 +139,7 @@
                 " left join tb_oper_role b on a.operid = b.operid " +

                 " left join tb_role c on b.roleid = c.roleid " +

                 " left join tb_region d on a.regionid = d.regionid " +

-                "where a.status='normal' and (a.operid=:operatorOperid or a.foperid=:operatorOperid) ";

+                "where   a.foperid=:operatorOperid ";

 

         if (!StringUtil.isEmpty(operid)){

             sql += " and a.operid = :operid ";

@@ -199,8 +199,21 @@
 

     @Transactional

     @Override

+    public TOperator getOperatorByOpercode(String opercode) {

+        String sql = "select bean from TOperator bean where  bean.opercode=:opercode ";

+        TypedQuery<TOperator> query = entityManager.createQuery(sql, TOperator.class);

+        query.setParameter("opercode", opercode);

+        List<TOperator> list = query.getResultList();

+        if (list!=null && list.size()>0){

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

     public TRole getOperRoleById(String operid) {

-        String sql = "select a.roleid,a.createtime,a.editflag,a.lastsaved,a.rolecode,a.roledesc,a.rolename,a.grade  " +

+        String sql = "select a.roleid,a.createtime,a.editflag,a.lastsaved,a.rolecode,a.roledesc,a.rolename,a.operid  " +

                 " from Tb_Role a left join tb_oper_role b on a.roleid = b.roleid where b.operid=?1 ";

         Query query = entityManager.createNativeQuery(sql, TRole.class);

         query.setParameter(1, operid);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
index 82c252a..231b934 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
@@ -182,6 +182,22 @@
 

     @Transactional

     @Override

+    public List<TRegion> getLowRegionListById(String regionid) {

+        String sql = "select bean.regionid,bean.address,bean.level,bean.parentid,bean.regionname,bean.remarks,bean.parentname,bean.flag " +

+                "from TB_REGION bean where flag=1 "+

+                "and bean.regionid <>:regionid and bean.regionid in  " +

+                "(with recursive tmp as  (select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr " +

+                " where regionid= :regionid union all  select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr inner join tmp t on t.regionid=tbr.parentid  " +

+                " ) select regionid from tmp  )";

+        Query query = entityManager.createNativeQuery(sql, TRegion.class);

+        query.setParameter("regionid", regionid);

+        List list = query.getResultList();

+

+        return list;

+    }

+

+    @Transactional

+    @Override

     public List<TRegion> getRegionListByLevel(int level) {

         String sql = "select bean from TRegion bean where bean.flag=1 and bean.level=:level";

         TypedQuery<TRegion> query = entityManager.createQuery(sql, TRegion.class);

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java b/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
index e4a5f06..e6fcab7 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
@@ -20,6 +20,9 @@
     //根据id获取对应管理员

     TOperator getOperatorById(String operid);

 

+    //根据登陆名获取对应管理员

+    TOperator getOperatorByOpercode(String opercode);

+

     //根据管理员id获取其对应角色

     TRole getOperRoleById(String operid);

 

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
index ef1a3d1..98411cf 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/RoleService.java
@@ -18,6 +18,9 @@
     List<TRole> findAllRoles();
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+    List<TRole> findAllRolesByOperid(String operid);
+
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
     TRole findRoleByRoleid(String roleid);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
@@ -27,10 +30,10 @@
     TRoleFunction findRoleFunctionByRoleIdAndFunctionId(String roleid, Integer functionid);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-    PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType);
+    PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType,String operid);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-    JsonResult saveRole(TRole role);
+    JsonResult saveRole(TRole role,String operid);
 
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
     List<TRoleFunction> getRoleFuncByRoleid(String roleId);
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
index 6dca35c..d9402a6 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -56,6 +56,9 @@
     //根据区域id获取其权限下所有区域

     public List<TRegion> getRegionListById(String regionid);

 

+    //根据区域id获取其下级所有区域

+    public List<TRegion> getLowRegionListById(String regionid);

+

     //根据区域级别获取其上一级级别的所有区域

     public List<TRegion> getRegionListByLevel(int level);

 

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java
index 5410b55..dd48a05 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ManagerServiceImpl.java
@@ -36,6 +36,11 @@
     }

 

     @Override

+    public TOperator getOperatorByOpercode(String opercode) {

+        return managerDao.getOperatorByOpercode(opercode);

+    }

+

+    @Override

     public TRole getOperRoleById(String operid) {

         return managerDao.getOperRoleById(operid);

     }

diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
index 740da25..a02ee7c 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
@@ -48,6 +48,13 @@
     }
 
     @Override
+    public List<TRole> findAllRolesByOperid(String operid) {
+        List<TRole> list = roleDao.getAllByOperid(operid);
+        if (!StringUtil.isEmpty(list)) return list;
+        return new ArrayList<>(0);
+    }
+
+    @Override
     public TRole findRoleByRoleid(String roleid) {
         Optional<TRole> role = roleDao.findById(roleid);
         if(role.isPresent()){
@@ -67,7 +74,7 @@
     }
 
     @Override
-    public PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType) {
+    public PageResult<TRole> getRolesByKey(FunctionSearchBean param,String operType,String operid) {
         Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()
                 , Sort.by("createtime"));
         if (operType.equals("P") || operType.equals("S")) {
@@ -75,21 +82,16 @@
                 return new PageResult<>(roleDao.findAllByRoleNameContaining(param.getFunctioname(), pageable));
             }
             return new PageResult<>(roleDao.findAll(pageable));
-        }else if (operType.equals("H")){
-            if (!StringUtil.isEmpty(param.getFunctioname())) {
-                return new PageResult<>(roleDao.findAllByGradeNotAndRoleNameContaining(1,param.getFunctioname(), pageable));
-            }
-            return new PageResult<>(roleDao.findAllByGradeNot(1,pageable));
         }else {
             if (!StringUtil.isEmpty(param.getFunctioname())) {
-                return new PageResult<>(roleDao.findAllByGradeAndRoleNameContaining(3,param.getFunctioname(), pageable));
+                return new PageResult<>(roleDao.findAllByOperidAndRoleNameContaining(operid,param.getFunctioname(), pageable));
             }
-            return new PageResult<>(roleDao.findAllByGrade(3,pageable));
+            return new PageResult<>(roleDao.findAllByOperid(operid,pageable));
         }
     }
 
     @Override
-    public JsonResult saveRole(TRole role) {
+    public JsonResult saveRole(TRole role,String operid) {
         if (!StringUtil.isEmpty(role.getRoleId())) {
             TRole temp = roleDao.findByRoleNameAndRoleIdNot(role.getRoleName(), role.getRoleId());
             if (temp != null) {
@@ -103,7 +105,6 @@
             temp.setRoleName(role.getRoleName());
             temp.setRoleDesc(role.getRoleDesc());
             temp.setRoleCode("ROLE_ADMIN");
-            temp.setGrade(role.getGrade());
             temp.setLastsaved(DateUtil.getNow());
             roleDao.save(temp);
         } else {
@@ -115,6 +116,7 @@
             role.setCreatetime(DateUtil.getNow());
             role.setEditflag(1);
             role.setRoleCode("ROLE_ADMIN");
+            role.setOperid(operid);
             roleDao.save(role);
         }
         return JsonResult.ok("成功");
@@ -164,9 +166,9 @@
         if (operType.equals("P") || operType.equals("S")) {
             nodeData  = roleFunctionDao.findByRoleIdNative(roleId);
         }else if (operType.equals("H")){
-            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 1);//区域管理员取等级大于1的
+            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 2);//区域管理员取等级大于2的
         }else if (operType.equals("L")){
-            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 2);//楼栋管理员取等级大于2的
+            nodeData = roleFunctionDao.findByRoleIdAndGradeNative(roleId, 3);//楼栋管理员取等级大于3的---null
         }
         List<ZTreeNode> ret = new ArrayList<>();
         boolean allChecked = true;
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
index ca4f176..9205dda 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/SystemServiceImpl.java
@@ -110,6 +110,11 @@
     }

 

     @Override

+    public List<TRegion> getLowRegionListById(String regionid) {

+        return regionDao.getLowRegionListById(regionid);

+    }

+

+    @Override

     public List<TRegion> getRegionListByLevel(int level) {

         return regionDao.getRegionListByLevel(level);

     }

diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 4d0024e..2268ef1 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -30,7 +30,7 @@
 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (6, '区域级别', '1', '一级');

 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (6, '区域级别', '2', '二级');

 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (6, '区域级别', '3', '三级');

-INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (1, 'operator', 'L', '物业管理员');

+INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (1, 'operator', 'L', '楼栋管理员');

 INSERT INTO t_dictionary(dicttype,dicttypename,dictval,dictcaption) VALUES (13, '抓拍服务地址', 'http://172.28.43.158:8088/door', '抓拍服务地址');

 

 -- ----------------------------

@@ -70,12 +70,12 @@
 -- ----------------------------

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (1, NULL, 0, NULL, 'layui-icon-home', '#', '主页', 1, -1,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (2, NULL, 1, NULL, 'layui-icon-home', '/home/console', '控制台', 2, 1,3);

-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (3, NULL, 0, NULL, 'layui-icon-set', '#', '系统中心', 10, -1,3);

-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (4, NULL, 1, NULL, 'layui-icon-set', '/role/index', '角色管理', 11, 3,3);

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (3, NULL, 0, NULL, 'layui-icon-set', '#', '系统中心', 10, -1,2);

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (4, NULL, 1, NULL, 'layui-icon-set', '/role/index', '角色管理', 11, 3,2);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (5, NULL, 1, NULL, 'layui-icon-set', '/operator/operatorindex', '操作员管理', 12, 3,2);

 /*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (6, NULL, 1, NULL, 'layui-icon-username', '/function/index', '功能管理', 13, 3,1);*/

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (7, NULL, 1, NULL, 'layui-icon-app', '/system/regionindex', '区域管理', 14, 3,2);

-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (8, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 15, 3,3);

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (8, NULL, 1, NULL, 'layui-icon-app', '/system/buildingindex', '楼栋管理', 15, 3,2);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (9, NULL, 0, NULL, 'layui-icon-engine', '#', '门控中心', 20, -1,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (10, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/devindex', '设备管理', 21, 9,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (11, NULL, 1, NULL, 'layui-icon-engine', '/ncmgr/timeindex', '时间段管理', 22, 9,3);

@@ -86,8 +86,9 @@
 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (16, NULL, 1, NULL, 'layui-icon-app', '/system/dictionary', '数据字典管理', 31, 15,1);*/

 /*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (17, NULL, 1, NULL, 'layui-icon-app', '/system/queue', '任务调度管理', 32, 15,1);*/

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (18, NULL, 0, NULL, 'layui-icon-username', '#', '人员中心', 40, -1,3);

-/*INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (20, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 41, 18,3);

-INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 42, 18,3);*/

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (19, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/impCustomerlistindex', '导入人员名单', 41, 18,3);

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (20, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/downDoorList', '下发门禁名单', 42, 18,3);

+INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (21, NULL, 1, NULL, 'layui-icon-username', '/doorlistMgr/deleteDoorList', '删除门禁名单', 43, 18,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (22, NULL, 0, NULL, 'layui-icon-chart-screen', '#', '数据中心', 50, -1,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (23, NULL, 1, NULL, 'layui-icon-chart-screen', '/doorlistMgr/searchDoorlist', '设备名单查询', 51, 22,3);

 INSERT INTO tb_function(id,createtime,isleaf,lastsaved,menuicon,menuurl,name,ordernum,parentid,grade) VALUES (24, NULL, 1, NULL, 'layui-icon-chart-screen', '/query/tdoorstream', '流水信息查询', 52, 22,3);

@@ -109,7 +110,8 @@
 -- ----------------------------

 -- Records of tb_role

 -- ----------------------------

-INSERT INTO tb_role(roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename) VALUES ('abcdefghijklmnopqrstuvwxyz012345', '20190101000000', 0, NULL, 'ROLE_ADMIN', '超级管理员', '超级管理员');

+INSERT INTO tb_role(roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename,operid) VALUES ('abcdefghijklmnopqrstuvwxyz012345', '20190101000000', 0, NULL, 'ROLE_ADMIN', '超级管理员', '超级管理角色','0000');

+INSERT INTO tb_role(roleid,createtime,editflag,lastsaved,rolecode,roledesc,rolename,operid) VALUES ('abcdefghijklmnopqrstuvwxyz012346', '20190101000000', 0, NULL, 'ROLE_ADMIN', '推荐区域管理角色', '区域管理角色','0000');

 

 -- ----------------------------

 -- Records of tb_role_function

@@ -129,6 +131,29 @@
 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880010', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880011', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

 INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880012', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880015', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890016', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

-INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890017', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');
\ No newline at end of file
+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880013', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880014', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880015', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23880016', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890017', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890018', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012345');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890019', 1, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890020', 2, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890021', 3, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890022', 4, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890023', 5, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890024', 7, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890025', 8, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890026', 9, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890027', 10, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890028', 11, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890029', 12, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890030', 13, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890031', 14, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890032', 18, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890033', 19, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890034', 20, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890035', 21, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890036', 22, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890037', 23, NULL, 'abcdefghijklmnopqrstuvwxyz012346');

+INSERT INTO tb_role_function(id,functionid,permissions,roleid) VALUES ('297eec826b97ecf8016b97ee23890038', 24, NULL, 'abcdefghijklmnopqrstuvwxyz012346');
\ No newline at end of file
diff --git a/src/main/resources/templates/doorlist/addDoorlist.html b/src/main/resources/templates/doorlist/addDoorlist.html
index df3b592..c667fea 100644
--- a/src/main/resources/templates/doorlist/addDoorlist.html
+++ b/src/main/resources/templates/doorlist/addDoorlist.html
@@ -19,10 +19,10 @@
 
             <!--人员选择-->
             <div id="addDoorlist_personSelect">
-                <div class="x_panel" style="margin-left: 1%;width: 98%;float: left;">
+                <!--<div class="x_panel" style="margin-left: 1%;width: 98%;float: left;">-->
                     <div style="height: 60px;border-left: 1px solid #dfe6ec;border-right: 1px solid #dfe6ec;">
                         <el-col :span="22" :offset="1" >
-                            <el-row :span="24">
+                            <el-row :span="24" style="padding-bottom: 10px">
                                 <el-col :span="12">
                                     <el-col :span="3"><lable>姓名:</lable></el-col>
                                     <el-col :span="20"><el-input placeholder="请输入内容" size="mini" v-model="person_person.custname"></el-input></el-col>
@@ -45,13 +45,18 @@
                             </el-row>
                         </el-col>
                     </div>
-                </div>
+                <!--</div>-->
+
                 <div id="addDoorlist_personSel">
-                    <div class="x_panel" style="margin-left: 1%;width: 45%;float: left">
-                        <div class="x_title" style="margin-bottom: 10px">
-                            <!--未分配人员({{person_lefttable.length}}人)-->
+                    <div class="layui-row layui-col-space15">
+                    <div class="layui-col-md5" style="width: 45%">
+                        <div class="layui-card">
+                    <!--<div class="x_panel" style="margin-left: 1%;width: 45%;float: left">-->
+                        <!--<div class="x_title" style="margin-bottom: 10px" v-if="person_lefttable">-->
+                            <div class="layui-card-header" style="margin-bottom: 10px" v-if="person_lefttable">
+                            总分配人员({{person_lefttable.length}}人)
                         </div>
-                        <div id="addDoorlist_pensonS-tb">
+                        <div id="addDoorlist_pensonS-tb" class="layui-card-body">
 
                             <template>
                                 <el-table
@@ -72,7 +77,7 @@
                                             sortable
                                             prop="cardno"
                                             label="卡号"
-                                            width="100">
+                                            width="110">
                                     </el-table-column>
                                     <el-table-column
                                             sortable
@@ -83,26 +88,33 @@
                                     <el-table-column
                                             prop="bankcardno"
                                             label="银行卡号"
-                                            width="190">
+                                            width="200">
                                     </el-table-column>
                                 </el-table>
                             </template>
                         </div>
+                        </div>
                     </div>
 
+                        <div class="layui-col-md1" style="width: 10%">
                     <div style="width:5%;height:400px;display:inline-block;padding:0;margin-left: 5px; float:left">
-                        <div style="position: absolute;top:540px;width:5%;padding:0;margin: 0;text-align: center">
+                        <div style="position: absolute;top:55%;width:5%;padding:0;margin: 0;text-align: center;left: 28%">
                             <el-button class="el-icon-d-arrow-right" :disabled="per_addBtn_dis" @click="person_addBtn"></el-button>
                         </div>
-                        <div style="position: absolute;top:440px;width:5%;padding:0;margin: 0;text-align: center">
+                        <div style="position: absolute;top:80%;width:5%;padding:0;margin: 0;text-align: center;left: 28%">
                             <el-button class="el-icon-d-arrow-left" :disabled="per_delBtn_dis" @click="person_delBtn"></el-button>
                         </div>
                     </div>
-
-                    <div class="x_panel" style="margin-right: 1%;width: 47%;float: right">
-                        <div class="x_title" style="margin-bottom: 10px">
-                            <!--已分配人员({{person_righttable.length}}人)-->
                         </div>
+
+                        <div class="layui-col-md5" style="width: 45%">
+                            <div class="layui-card">
+                    <!--<div class="x_panel" style="margin-right: 1%;width: 47%;float: right">
+                        <div class="x_title" style="margin-bottom: 10px" v-if="person_righttable">-->
+                                <div class="layui-card-header" style="margin-bottom: 10px" v-if="person_lefttable">
+                            已分配人员({{person_righttable.length}}人)
+                        </div>
+                                <div  class="layui-card-body">
                         <template>
                             <el-table
                                     height="480"
@@ -122,7 +134,7 @@
                                         sortable
                                         prop="cardno"
                                         label="卡号"
-                                        width="100">
+                                        width="110">
                                 </el-table-column>
                                 <el-table-column
                                         sortable
@@ -133,11 +145,14 @@
                                 <el-table-column
                                         prop="bankcardno"
                                         label="银行卡号"
-                                        width="190">
+                                        width="200">
                                 </el-table-column>
                             </el-table>
                         </template>
+                                </div>
                     </div>
+                        </div>
+                </div>
                 </div>
 
                 <div id="addDoorlist_excelTable" style="display:none;padding: 10px 0 0 0;width: 100%;float: left;">
@@ -167,8 +182,10 @@
                     </template>
                 </div>
 
-                <div style="width:80%;float: left;margin-top: auto;margin-right: 50%;">
-                    备注&nbsp;:<el-input size="small" v-model="person_reason" style="width: 40%" placeholder="输入下发设备名单的原因等备注信息"></el-input>
+                <div class="layui-row layui-col-space15">
+                    <div style="width:80%;float: left;margin-top: auto;margin-right: 50%;">
+                        备注&nbsp;:<el-input size="small" v-model="person_reason" style="width: 40%" placeholder="输入下发设备名单的原因等备注信息"></el-input>
+                    </div>
                 </div>
                 <!--<div style="float:left;border-top:solid 1px #e0e0e0; width:100%; height:30px; margin-top:10px;padding-top:10px;  font-size: 14px!important;">
                     <form action="${pageContext.request.contextPath}/doorlistMgr/addexcel" method="post" style="width: 60%;float:left;" id="addDoorlist_uploadExcelId" name="formUpload" enctype="multipart/form-data" target="_top">
@@ -182,8 +199,9 @@
                     <el-button size="small" type="primary" @click="downloadExcel">导入模板下载</el-button>
                 </div>-->
 
-                <div style="float:left;margin:10px 0 0 40%;"><el-button style="margin-top: 12px;" @click="per_nextStep">下一步</el-button></div>
-
+                <div class="layui-row layui-col-space15">
+                <div style="float:left;margin:0px 0 0 47%;"><el-button style="margin-top: 12px;" @click="per_nextStep">下一步</el-button></div>
+                </div>
             </div>
 
             <!--选择设备组-->
@@ -251,16 +269,19 @@
 
             <!--选择设备-->
             <div id="addDoorlist_deviceSelect"  style="display: none">
-                <div class="x_panel" style="margin-left: 1%;width: 98%;float: left;">
+                <!--<div class="x_panel" style="margin-left: 1%;width: 98%;float: left;">-->
                     <div style="height: 20px;border-left: 1px solid #dfe6ec;border-right: 1px solid #dfe6ec;">
                         <el-col>
                             <el-row :span="24">
+                                <el-col :span="1">
+                                    &nbsp;
+                                </el-col>
                                 <el-col :span="6" >
                                     区域:
-                                    <el-select v-model="device.regionid" size="mini" clearable placeholder="请选择">
+                                    <el-select v-model="device.regionid" size="mini" @Change="regionChange" clearable placeholder="请选择">
                                         <el-option
                                                 v-for="regionid in regions"
-                                                :key="regionidid.value"
+                                                :key="regionid.value"
                                                 :label="regionid.label"
                                                 :value="regionid.value">
                                         </el-option>
@@ -278,20 +299,25 @@
                                     </el-select>
                                 </el-col>
                                 <el-col :span="6">
-                                    <el-col :span="5"><lable>设备名称:</lable></el-col>
+                                    <el-col :span="7"><lable>设备名称:</lable></el-col>
                                     <el-col :span="14"><el-input placeholder="请输入内容" size="mini" v-model="device.deviceName" ></el-input></el-col>
                                 </el-col>
-                                <el-col :span="3">
+                                <el-col :span="2">
                                     <el-button size="mini" type="primary" @click="seachDevice">&nbsp;&nbsp;搜索&nbsp;&nbsp;</el-button>
                                 </el-col>
                             </el-row>
                         </el-col>
                     </div>
-                </div>
-                <div class="x_panel" style="margin-left: 1%;width: 45%;float: left">
-                    <div class="x_title">
-                        <!--未分配设备({{device_lefttable.length}}台)-->
+                <!--</div>-->
+                <div class="layui-row layui-col-space15">
+                    <div class="layui-col-md5" style="width: 45%">
+                        <div class="layui-card">
+                <!--<div class="x_panel" style="margin-left: 1%;width: 45%;float: left">-->
+                    <!--<div class="x_title" v-if="device_lefttable">-->
+                            <div class="layui-card-header" v-if="device_lefttable">
+                        总分配设备({{device_lefttable.length}}台)
                     </div>
+                            <div  class="layui-card-body">
                     <template>
                         <el-table
                                 height="480"
@@ -308,42 +334,51 @@
                                     width="55">
                             </el-table-column>
                             <el-table-column
-                                    sortable
                                     prop="devname"
                                     label="设备名称"
                                     width="150">
                             </el-table-column>
                             <el-table-column
                                     prop="deviceid"
-                                    label="设备编号">
+                                    label="设备编号"
+                                    width="100">
                             </el-table-column>
                             <el-table-column
+                                    sortable
                                     prop="regionname"
                                     label="区域"
                                     width="150">
                             </el-table-column>
                             <el-table-column
+                                    sortable
                                 prop="buildingname"
                                 label="楼栋"
                                 width="150">
                         </el-table-column>
                         </el-table>
                     </template>
+                            </div>
                 </div>
+                    </div>
 
+                    <div class="layui-col-md1" style="width: 10%">
                 <div style="width:5%;height:400px;display:inline-block;padding:0;margin-left: 5px; float:left">
-                    <div style="position: absolute;top:44%;width:5%;padding:0;margin: 0;text-align: center">
+                    <div style="position: absolute;top:55%;width:5%;padding:0;margin: 0;text-align: center; left: 28%">
                         <el-button class="el-icon-d-arrow-right" :disabled="dev_addBtn_dis" @click="dev_addToright"></el-button>
                     </div>
-                    <div style="position: absolute;top:53%;width:5%;padding:0;margin: 0;text-align: center">
+                    <div style="position: absolute;top:80%;width:5%;padding:0;margin: 0;text-align: center; left: 28%">
                         <el-button class="el-icon-d-arrow-left" :disabled="dev_delBtn_dis" @click="dev_removeRight"></el-button>
                     </div>
                 </div>
-
-                <div class="x_panel" style="margin-right: 1%;width: 47%;float: right">
-                    <div class="x_title">
-                        <!--已分配设备({{device_righttable.length}}台)-->
                     </div>
+
+                <!--<div class="x_panel" style="margin-right: 1%;width: 47%;float: right">-->
+                    <div class="layui-col-md5" style="width: 45%">
+                        <div class="layui-card">
+                    <div class="layui-card-header" v-if="device_righttable">
+                        已分配设备({{device_righttable.length}}台)
+                    </div>
+                            <div  class="layui-card-body">
                     <template>
                         <el-table
                                 height="480"
@@ -360,21 +395,23 @@
                                     width="55">
                             </el-table-column>
                             <el-table-column
-                                    sortable
                                     prop="devname"
                                     label="设备名称"
                                     width="150">
                             </el-table-column>
                             <el-table-column
                                     prop="deviceid"
-                                    label="设备编号">
+                                    label="设备编号"
+                                    width="100">
                             </el-table-column>
                             <el-table-column
+                                    sortable
                                     prop="regionname"
                                     label="区域"
                                     width="150">
                             </el-table-column>
                             <el-table-column
+                                    sortable
                                     prop="buildingname"
                                     label="楼栋"
                                     width="150">
@@ -382,24 +419,29 @@
                         </el-table>
                     </template>
                 </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="layui-row layui-col-space15">
                 <div style="float:left;margin:10px 0 0 40%;">
                     <el-button style="margin-top: 12px;" @click="devToUpStep">上一步</el-button>&nbsp;&nbsp;&nbsp;
                     <el-button style="margin-top: 12px;" @click="devNextStep">下一步</el-button>
                 </div>
+                </div>
             </div>
 
-            <!--时间段选择-->
+            <!--时间周选择-->
             <dev id="addDoorlist_timeSelect" style="margin-top:15px ;width:100%; font-size: 14px!important;display:none; ">
                 <div style="padding:12px 13px;font-size: 14px!important;"  id="addDoorlist_selectTime-tb" >
                     <div style="width:100%">
                         <el-row>
-                            时间段名称:<el-input size="small" v-model="timeName" style="width: 30%;"></el-input>
+                            时间周名称:<el-input size="small" v-model="timeName" style="width: 30%;"></el-input>
                             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                             <el-button size="small" type="primary" @click="searchTime">搜索</el-button>
                         </el-row>
                     </div>
                     <div style="width:100%;margin-top:15px">
-                        已选时间段:<el-tag
+                        已选时间周:<el-tag
                             :key="tag"
                             v-for="tag in timeTags"
                             closable
@@ -410,7 +452,7 @@
                     </el-tag>
                     </div>
                     <div style="width:100%;color:#ff9900; margin-top:10px" id="addDoorlist_timeSelect_remark">
-                        注:时间段为必选项,不选择不能下发设备名单。
+                        注:时间周为必选项,不选择不能下发设备名单。
                     </div>
                 </div>
                 <template>
@@ -425,13 +467,13 @@
                             max-height="2000">
                         <el-table-column
                                 prop="weekid"
-                                label="时间段id"
-                                width="150">
+                                label="时间周id"
+                                width="450">
                         </el-table-column>
                         <el-table-column
                                 prop="weekname"
-                                label="时间段名称"
-                                width="300">
+                                label="时间周名称"
+                                width="618">
                         </el-table-column>
 
                         </el-table-column>
@@ -531,11 +573,11 @@
                         <div style="color:#f60;width:167px;height:28px; font-size:20px;float: left;">您已成功下发名单!</div>&nbsp;&nbsp;&nbsp;&nbsp;
                         <el-button size="small" style="line-height:10px;overflow:hidden;height: 23px;margin-top: 3px;" type="primary" @click="rePush">继续下发设备名单</el-button>
                     </div>
-                    <!--<div style="margin:10px 0 0 200px; ">
-                        该设备名单的部分明细内容:人员 <span style="color:#f60" id="postSuc_perNum">{{addDoorlist_vue.person_righttable.length + parseInt(addDoorlist_vue.personSel_excelNum)}}</span>个,
-                        设备<span style="color:#f60" id="postSuc_devNum">{{addDoorlist_vue.devSel_allocated.length}}</span>个,
-                        时间段<span style="color:#f60" id="postSuc_timeNum">{{addDoorlist_vue.timeTags.length}}</span>个。
-                    </div>-->
+                    <div style="margin:10px 0 0 200px; ">
+                        该设备名单的部分明细内容:人员 <span style="color:#f60" id="postSuc_perNum" v-if="addDoorlist_vue">{{addDoorlist_vue.person_righttable.length}}</span>个, <!--+ parseInt(addDoorlist_vue.personSel_excelNum)}}</span>个,-->
+                        设备<span style="color:#f60" id="postSuc_devNum" v-if="addDoorlist_vue">{{addDoorlist_vue.devSel_allocated.length}}</span>个,
+                        时间周<span style="color:#f60" id="postSuc_timeNum" v-if="addDoorlist_vue">{{addDoorlist_vue.timeTags.length}}</span>个。
+                    </div>
                     <el-card class="box-card">
                         <el-collapse v-model="postCollapse">
                             <el-collapse-item :title="devTitle" name="2">
@@ -543,8 +585,9 @@
                                         :key="tag"
                                         v-for="tag in devSel_allocated"
                                         type="primary"
-                                        size="medium">
-                                    <!--{{tag.doorname}}-->
+                                        size="medium"
+                                        v-if="tag">
+                                    {{tag.devname}}
                                 </el-tag>
                             </el-collapse-item>
                             <el-collapse-item :title="timeTitle" name="3">
@@ -553,7 +596,7 @@
                                         v-for="tag in timeTags"
                                         type="primary"
                                         size="medium">
-                                    <!--{{tag}}-->
+                                    {{tag}}
                                 </el-tag>
                             </el-collapse-item>
                         </el-collapse>
@@ -912,7 +955,12 @@
                 $("#addDoorlist_postSucess").hide();
                 addDoorlist_initData();
                 $("#addDoorlist_personSelect").show();
-            }
+            },
+            regionChange:function(value){
+                this.buildings=[];
+                this.device.buildingid='';
+                addDoorlist_getRegionBuilding(this,value);
+            },
 
         },
         created:function(){
@@ -1086,7 +1134,6 @@
             "&timeName="+timeName;
 //        url = encodeURI(url);
         $.get(url).success(function(data,status){
-            alert(data.pResult)
             if(data.pResult == undefined){
                 layer.msg('用户认证已过期,请重新登录',{icon:2,time:1000});
                 window.location="login";
@@ -1099,7 +1146,7 @@
     }
 
     function addDoorlist_fillDeviceDiv(){
-        $.get("[[@{/doorlistMgr/getRegionAndBuildingList}]]").success(function (data, status) {
+        $.get("[[@{/doorlistMgr/getRegionAndBuildingList}]]").success(function (ret, status) {
             var regionlist=[];
             var regiondata = ret.regions;
             if (regiondata!=null) {
@@ -1130,7 +1177,6 @@
     function addDoorlist_fillDevice_lefttable(url){
         url = encodeURI(url);
         $.get(url).success(function(data,status){
-            alert(data.pResult)
             if(data.pResult == undefined){
                 layer.msg('用户认证已过期,请重新登录',{icon:2,time:1000});
                 window.location="login";
@@ -1185,6 +1231,32 @@
             }
         });
     }
+
+    function addDoorlist_getRegionBuilding(_self,value){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("[[@{/ncmgr/getRegionBuilding?regionid=}]]" + value),
+            success: function (ret) {
+                var bList = [];
+                bList.push({
+                    value:'',
+                    label:'全部'
+                });
+                var rB = ret.reBuilding;
+                if (rB!=null) {
+                    for (var j = 0; j < rB.length; j++) {
+                        bList.push({
+                            value: rB[j]["buildingid"],
+                            label: rB[j]["buildingname"]
+                        });
+                    }
+                }
+
+                _self.buildings = bList;
+            }
+        })
+    }
 </script>
 
 <style>
diff --git a/src/main/resources/templates/doorlist/deleteDoorlist.html b/src/main/resources/templates/doorlist/deleteDoorlist.html
index 6d59be6..eb3aa73 100644
--- a/src/main/resources/templates/doorlist/deleteDoorlist.html
+++ b/src/main/resources/templates/doorlist/deleteDoorlist.html
@@ -78,12 +78,12 @@
                     </el-col>
                     <el-col :span="8">
                         <el-form-item label="名单状态">
-                            <el-select v-model="deleteDoorForm.syncstatu" placeholder="请选择">
+                            <el-select v-model="deleteDoorForm.syncflag" placeholder="请选择">
                                 <el-option
-                                        v-for="status in syncStatus"
-                                        :key="status.value"
-                                        :label="status.label"
-                                        :value="status.value">
+                                        v-for="flag in syncflags"
+                                        :key="flag.value"
+                                        :label="flag.label"
+                                        :value="flag.value">
                                 </el-option>
                             </el-select>
                         </el-form-item>
@@ -130,21 +130,18 @@
                     <el-table-column
                             prop="bankcardno"
                             label="银行卡号"
-                            width="180">
+                            width="200">
                     </el-table-column>
                     <el-table-column
-                            prop="opername"
-                            label="分配操作员"
-                            width="140">
-                    </el-table-column>
-                    <el-table-column
-                            prop="syncstatus"
+                            prop="syncflag"
                             label="名单状态"
+                            :formatter="syncform"
                             width="110">
                     </el-table-column>
                     <el-table-column
                             prop="operflag"
                             label="操作标记"
+                            :formatter="operform"
                             width="110">
                     </el-table-column>
                     <el-table-column
@@ -157,6 +154,11 @@
                             label="同步时间"
                             width="200">
                     </el-table-column>
+                    <el-table-column
+                            prop="opername"
+                            label="分配操作员"
+                            width="140">
+                    </el-table-column>
 
                 </el-table>
                 <div class="clearfix"></div>
@@ -190,11 +192,11 @@
                 devname: '',
                 allocatEndDate: '',
                 cardno: '',
-                syncstatu: '',
+                syncflag: '',
                 operflag: '',
             },
             regions: [],
-            syncStatus: [],
+            syncflags: [],
             operFlags: [],
             dialogFormVisible: false,
             dlgAllotDevVisible: false,
@@ -232,6 +234,29 @@
             del: function () {
                 deleteDoorlist_deletedata();
             },
+            syncform:function (row) {
+                if (row.syncflag == 'N') {
+                    return '未同步';
+                }
+                else if (row.syncflag == 'Y') {
+                    return '已同步';
+                } else {
+                    return row.syncflag;
+                }
+            },
+            operform:function (row) {
+                if (row.operflag == 'A') {
+                    return '增加';
+                }
+                else if (row.operflag == 'D') {
+                    return '删除';
+                }else if (row.operflag == 'C') {
+                    return '注销';
+                }
+                else {
+                    return row.operflag;
+                }
+            },
             handleSelect: function (val) {
                 this.selectList = val;
             }
@@ -300,10 +325,10 @@
             var endStr = deleteDoor.allocatEndDate.Format('yyyyMMdd');
 
         }
-        var url = "[[@{/doorlistMgr/getAllCardListFrDelete}]]" + "allocatStartDate=" + startStr + "&allocatEndDate=" + endStr +
+        var url = "[[@{/doorlistMgr/getAllCardListFrDelete?}]]" + "allocatStartDate=" + startStr + "&allocatEndDate=" + endStr +
             "&devname=" + deleteDoor.devname + "&custname=" + deleteDoor.custname
             + "&cardno=" + deleteDoor.cardno + "&regionid=" + deleteDoor.regionid
-            + "&syncstatus=" + deleteDoor.syncstatus + "&usetype=MJ" +
+            + "&syncflag=" + deleteDoor.syncflag + "&usetype=MJ" +
             "&pageNo=" + pageno + "&pageSize=" + pagesize + "&operflag=" + deleteDoor.operflag;
         var token=$("meta[name='_csrf_token']").attr("value");
         $.ajax({
@@ -346,7 +371,8 @@
                     },
                     data: JSON.stringify(delList),
                     success: function (data) {
-                        layer.closeAll('dialog');
+                        layer.msg(data.result);
+                        //layer.closeAll('dialog');
                         deleteDoorlist_refreshThisTable();
                     }
                 });
@@ -368,7 +394,7 @@
                 var syncDicts = [];
                 var syncDict = data.syncDicts;
                 syncDicts.push({
-                    value: "all",
+                    value: "",
                     label: "全部"
                 })
                 for (var i = 0; i < syncDict.length; i++) {
@@ -396,7 +422,7 @@
                 var operDicts = [];
                 var operDict = data.operDicts;
                 operDicts.push({
-                    value: "all",
+                    value: "",
                     label: "全部"
                 })
                 for (var i = 0; i < operDict.length; i++) {
@@ -406,12 +432,12 @@
                     })
                 }
                 deleteDoorlist_vue.regions = regionList;
-                deleteDoorlist_vue.syncStatus = syncDicts;
-                deleteDoorlist_vue.operFlag = operDicts;
+                deleteDoorlist_vue.syncflags = syncDicts;
+                deleteDoorlist_vue.operFlags = operDicts;
 
                 deleteDoorlist_vue.deleteDoorForm.regionid = '';
-                deleteDoorlist_vue.deleteDoorForm.syncStatus = 'all';
-                deleteDoorlist_vue.deleteDoorForm.operFlag = 'all';
+                deleteDoorlist_vue.deleteDoorForm.syncflag = '';
+                deleteDoorlist_vue.deleteDoorForm.operFlag = '';
             }
         })
     }
diff --git a/src/main/resources/templates/doorlist/searchDoorlist.html b/src/main/resources/templates/doorlist/searchDoorlist.html
index 6f4d31c..c1a0db4 100644
--- a/src/main/resources/templates/doorlist/searchDoorlist.html
+++ b/src/main/resources/templates/doorlist/searchDoorlist.html
@@ -346,6 +346,8 @@
                 }
                 else if (row.operflag == 'D') {
                     return '删除';
+                } else if (row.operflag == 'C') {
+                    return '注销';
                 } else {
                     return row.operflag;
                 }
diff --git a/src/main/resources/templates/home/theme.html b/src/main/resources/templates/home/theme.html
index 67cb12a..42c84f9 100755
--- a/src/main/resources/templates/home/theme.html
+++ b/src/main/resources/templates/home/theme.html
@@ -7,8 +7,8 @@
 

 <div class="layui-card-header"><h2 class="header-title">设置主题:</h2></div>

 <div class="layui-card-body layui-text">

-    <a href="/home/setTheme" class="layui-btn" style="background-color: #009688;">默认主题</a>

-    <a href="/home/setTheme?themeName=blue" class="layui-btn layui-btn-normal">蓝色主题</a>

+    <a href="/door/home/setTheme" class="layui-btn" style="background-color: #009688;">默认主题</a>

+    <a href="/door/home/setTheme?themeName=blue" class="layui-btn layui-btn-normal">蓝色主题</a>

     <br><br><br>

   

 </div>

diff --git a/src/main/resources/templates/ncmgr/nc_dev.html b/src/main/resources/templates/ncmgr/nc_dev.html
index 6cf2647..c1a1308 100644
--- a/src/main/resources/templates/ncmgr/nc_dev.html
+++ b/src/main/resources/templates/ncmgr/nc_dev.html
@@ -150,6 +150,17 @@
                             :formatter="flagform">
                     </el-table-column>
                     <el-table-column
+                            prop="operflag"
+                            label="状态"
+                            width="90"
+                            :formatter="operform">
+                        <!--<template scope="scope">
+                            <el-tag :type="scope.row.operflag === '有效' ? 'success' : 'danger'" close-transition>
+                                {{scope.row.operflag}}
+                            </el-tag>
+                        </template>-->
+                    </el-table-column>
+                    <el-table-column
                             prop="synctime"
                             label="同步时间"
                             width="200"
@@ -250,7 +261,8 @@
                     </el-form-item>
                     <el-form-item label="物理编号:" prop="devphyid">
                         <el-col :span="18">
-                            <el-input v-model="devUpform.devphyid" style="width: 187px;" maxlength="14">
+                            <el-input v-model="devUpform.devphyid"
+                                      placeholder="请输入12位物理编号" style="width: 187px;" maxlength="14">
 
                             </el-input>
                         </el-col>
@@ -536,6 +548,15 @@
                     return '未同步';
                 }
             },
+            operform: function (row, column, cellValue) {
+                if (row.operflag == 'A') {
+                    return '有效';
+                } else if(row.operflag == 'D'){
+                    return '注销';
+                }else {
+                    return row.operflag
+                }
+            },
             usetypeform: function (row, column, cellValue) {
                 var i = this.usetypeVals.indexOf(row.usetype);
                 return this.usetypeNames[i];
diff --git a/src/main/resources/templates/query/tdoorstream.html b/src/main/resources/templates/query/tdoorstream.html
index 58ff021..4929723 100644
--- a/src/main/resources/templates/query/tdoorstream.html
+++ b/src/main/resources/templates/query/tdoorstream.html
@@ -110,6 +110,9 @@
                           max-height="2000"
                           stripe border style="width: 100%">
                     <el-table-column
+                            prop="status" label="流水状态" width="125">
+                    </el-table-column>
+                    <el-table-column
                             prop="deviceid" label="设备编号"  width="130" sortable v-show="false">
                     </el-table-column>
                     <el-table-column
@@ -135,9 +138,6 @@
                             prop="dtldesc" label="描述" width="125">
                     </el-table-column>
                     <el-table-column
-                            prop="status" label="流水状态" width="125">
-                    </el-table-column>
-                    <el-table-column
                             prop="coldate" label="采集时间" width="210":formatter="dateFormat">
                     </el-table-column>
                 </el-table>
diff --git a/src/main/resources/templates/system/operator.html b/src/main/resources/templates/system/operator.html
index 7159d09..96bac81 100644
--- a/src/main/resources/templates/system/operator.html
+++ b/src/main/resources/templates/system/operator.html
@@ -79,6 +79,17 @@
                             width="140">
                     </el-table-column>
                     <el-table-column
+                            prop="status"
+                            sortable
+                            label="状态"
+                            width="90">
+                        <template scope="scope">
+                            <el-tag :type="scope.row.status === '有效' ? 'success' : 'danger'" close-transition>
+                                {{scope.row.status}}
+                            </el-tag>
+                        </template>
+                    </el-table-column>
+                    <el-table-column
                             prop="mobile"
                             label="联系电话"
                             width="180">
@@ -95,7 +106,7 @@
                         <template scope="scope">
                             <button type="button" class="btn btn-info btn-xs" title="编辑操作员" @click="editOperator(scope.row.operid)">编辑</button>
                             <button type="button" class="btn btn-success btn-xs" title="重置密码" @click="resetPwd(scope.row.operid)">重置</button>
-                            <button type="button" class="btn btn-danger btn-xs" title="删除操作员" @click="delOperator(scope.row.operid)">删除</button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除操作员" @click="delOperator(scope.row.operid)" v-if="scope.row.opertype!='S' ">删除</button>
                             <button type="button" class="btn btn-info btn-xs" title="分配楼栋"
                                     @click="allotBuilding(scope.row.operid,scope.row.opername)" v-if="scope.row.opertype=='L'">分配楼栋
                             </button>
@@ -330,7 +341,7 @@
                 ],
                 roleid: [
                     {required: true, message: '请选择角色', trigger: 'blur'}
-                ],
+                ]
 
             },
             operatortitile:'添加操作员(默认密码为123456)',
@@ -585,6 +596,10 @@
 
 
     function oper_saveData(_that,formdata,formName){
+        if (formdata.opertype=='H' && formdata.regionid==''){
+            layer.msg('区域管理员请选择管辖区域!', {icon: 2, time: 1000});
+            return;
+        }
         var url = null;
         if(oper_vue.operatortitile == "添加操作员(默认密码为123456)"){
             url = encodeURI("[[@{/operator/addOperator}]]");
diff --git a/src/main/resources/templates/system/region.html b/src/main/resources/templates/system/region.html
index 32212a3..bdcb65d 100644
--- a/src/main/resources/templates/system/region.html
+++ b/src/main/resources/templates/system/region.html
@@ -49,6 +49,11 @@
                             width="170">
                     </el-table-column>
                     <el-table-column
+                            prop="parentname"
+                            label="父区域"
+                            width="170">
+                    </el-table-column>
+                    <el-table-column
                             prop="level"
                             label="区域级别"
                             sortable
@@ -56,11 +61,6 @@
                             width="120">
                     </el-table-column>
                     <el-table-column
-                            prop="parentname"
-                            label="父区域"
-                            width="170">
-                    </el-table-column>
-                    <el-table-column
                             prop="address"
                             label="详细地址"
                             width="200">
@@ -93,15 +93,6 @@
 
             <el-dialog :title="regiontitile" :visible.sync="dialogFormVisible"  :modal-append-to-body='false' @close="closeDialog('regionDiaForm')">
                 <el-form ref="regionDiaForm" :model="regionDiaForm" :rules="rules" label-width="36%" >
-                    <el-form-item label="区域编号:" prop="regionid">
-                        <div class="el-col el-col-15">
-                            <div class="el-input" style="width: 187px;">
-                                <el-input v-model="regionDiaForm.regionid" :disabled="regionidDis">
-                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
-                                </el-input>
-                            </div>
-                        </div>
-                    </el-form-item>
 
                     <el-form-item label="区域名称:" prop="regionname">
                         <div class="el-col el-col-18">
@@ -113,22 +104,6 @@
                         </div>
                     </el-form-item>
 
-                    <el-form-item label="区域级别:" prop="level">
-                        <el-col :span="18">
-                            <el-select v-model="regionDiaForm.level" style="width: 187px;"
-                                       filterable
-                                       @Change="levelChange"
-                                       placeholder="请选择">
-                                <el-option
-                                        v-for="level in levels"
-                                        :key="level.value"
-                                        :label="level.label"
-                                        :value="level.value">
-                                </el-option>
-                            </el-select>
-                        </el-col>
-                    </el-form-item>
-
                     <el-form-item label="父区域:" prop="parentid">
                         <el-col :span="18">
                             <el-select v-model="regionDiaForm.parentid"
@@ -193,23 +168,15 @@
             regionDiaForm:{
                 regionid:'',
                 regionname:'',
-                level:'',
                 parentid:'',
                 address:'',
                 remarks:''
             },
             rules:{
-                regionid:[
-                    {required:true,message:'请输入区域编号',trigger:'blur'},
-                    {min: 1, max: 32, message: '长度在 1 到 32 个字符', trigger: 'blur'}
-                ],
                 regionname:[
                     {required:true,message:'请输入区域名称',trigger:'blur'},
                     {min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur'}
                 ],
-                level: [
-                    {required: true, message: '请选择区域级别', trigger: 'blur'}
-                ],
                 parentid: [
                     {required: true, message: '请选择父区域', trigger: 'blur'}
                 ],
@@ -248,21 +215,20 @@
                 region_deletedata(regionid);
             },
             editRegion:function(regionid){
-                this.parentRegionDis=false;
+                this.parentRegionDis=true;
                 region_getFillData(this,regionid);
                 this.dialogFormVisible = true;
-                this.regionidDis = true;
                 this.regiontitile="修改区域"
             },
             resetForm: function (formName) {
                 this.$refs[formName].resetFields();
                 this.dialogFormVisible = false;
-                this.regionidDis = false;
+                this.parentRegionDis = false;
             },
             closeDialog: function (formName) {
                 this.$refs[formName].resetFields();
                 this.dialogFormVisible = false;
-                this.regionidDis = false;
+                this.parentRegionDis = false;
             },
             saveRegion:function (formName) {
                 var _that=this;
@@ -279,15 +245,6 @@
                     region_saveData(_that,_that.regionDiaForm,formName);
                 }
             },
-            levelChange: function (value) {
-                if (value == 0) {
-                    this.parentRegionDis = true;
-                } else  {
-                    this.parentRegionDis = false;
-                    this.parentRegions = [];
-                    region_getFregion(this,value);
-                }
-            },
             levelform: function (row, column, cellValue) {
                 return row.level+"级";
             }
@@ -383,7 +340,6 @@
                 if (ret.region != null) {
                     _self.regionDiaForm.regionid = ret.region.regionid;
                     _self.regionDiaForm.regionname = ret.region.regionname;
-                    _self.regionDiaForm.level = ret.region.level+"";
                     _self.regionDiaForm.parentid = ret.region.parentid;
                     _self.regionDiaForm.address = ret.region.address;
                     if (ret.region.level == 0) {
@@ -439,24 +395,4 @@
     }
 
 
-    function region_getFregion(_self,value){
-        $.ajax({
-            type: "get",
-            dataType: "json",
-            url: encodeURI("[[@{/system/getFregion?level=}]]" + value),
-            success: function (ret) {
-                var fList = [];
-                var parentRegion = ret.parentRegion;
-                for (var j=0;j<parentRegion.length;j++){
-                    fList.push({
-                        value:parentRegion[j]["regionid"],
-                        label:parentRegion[j]["regionname"]
-                    });
-                }
-
-                _self.parentRegions = fList;
-            }
-        })
-    }
-
 </script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/role/form.html b/src/main/resources/templates/system/role/form.html
index ab3466c..4515a0f 100755
--- a/src/main/resources/templates/system/role/form.html
+++ b/src/main/resources/templates/system/role/form.html
@@ -15,17 +15,6 @@
         </div>

     </div>

 

-    <div class="layui-form-item">

-        <label class="layui-form-label">角色等级</label>

-        <div class="layui-input-block">

-            <select name="grade" lay-verify="required|grade">

-                <option value="">请选择一个等级</option>

-                <option value="1">一级</option>

-                <option value="2">二级</option>

-                <option value="3">三级</option>

-            </select>

-        </div>

-    </div>

 

     <div class="layui-form-item model-form-footer">

         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>