区域管理员和楼栋管理员相应功能调整修改
diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
index cd6ed89..a936e97 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/CardListDaoImpl.java
@@ -50,31 +50,31 @@
             }

 

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

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

-                queryString += "and b.regionid in  "

+                queryString += " and b.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  )";

+                        + ") select regionid from tmp  ) ";

             }

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " ORDER by a.listid DESC";

+            queryString += " ORDER by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

 

@@ -193,7 +193,7 @@
             String queryString = "select count(*) from t_nc_cardlist a," +

                     " t_nc_device b "+

                     " left join tb_region c on b.regionid=c.regionid " +

-                    "where 1>0 and a.deviceid = b.deviceid ";

+                    " where 1>0 and a.deviceid = b.deviceid ";

 

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

                 queryString += " and a.rectime>=:allocatStartDate ";

@@ -202,32 +202,32 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

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

-                queryString += "and b.regionid in  "

+                queryString += " and b.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  )";

+                        + ") select regionid from tmp  ) ";

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

             Query query = entityManager.createNativeQuery(queryString);

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

@@ -298,42 +298,31 @@
                 queryString += " and b.devname like :devname";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

 

-            if (!regionid.equals("")){

-                queryString += "and b.regionid in  "

+                queryString += " and b.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 {

-                queryString += "and b.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 regionid from tmp  ) ";

+

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " ORDER by a.listid DESC";

+            queryString += " ORDER by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

 

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

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

                 query.setParameter("allocatStartDate", allocatStartDate + "000000");

             }

@@ -356,6 +345,8 @@
             }

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

                 query.setParameter("regionid", regionid);

+            }else {

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

             }

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

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

@@ -399,44 +390,32 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncstatus =:syncStatus";

+                queryString += " and a.syncstatus =:syncStatus ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operFlag";

+                queryString += " and a.operflag =:operFlag ";

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

-            if (!regionid.equals("")){

-                queryString += "and b.regionid in  "

+                queryString += " and b.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 {

-                queryString += "and b.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 regionid from tmp  ) ";

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

-                queryString += " and b.doorname like :devname";

+                queryString += " and b.doorname like :devname ";

             }

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.stuempno like :cardno";

+                queryString += " and a.stuempno like :cardno ";

             }

             Query query = entityManager.createNativeQuery(queryString);

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

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

                 query.setParameter("allocatStartDate", allocatStartDate + "000000");

             }

@@ -459,6 +438,8 @@
             }

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

                 query.setParameter("regionid", regionid);

+            }else {

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

             }

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

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

@@ -501,25 +482,25 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

 

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " ORDER by a.listid DESC";

+            queryString += " ORDER by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

             query.setParameter("operid", operid);

@@ -588,22 +569,22 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

             Query query = entityManager.createNativeQuery(queryString);

             query.setParameter("operid", operid);

@@ -665,34 +646,34 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

-                queryString += " and b.buildingid = :buildingid";

+                queryString += " and b.buildingid = :buildingid ";

             }

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

-                queryString += "and b.regionid in  "

+                queryString += " and b.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  )";

+                        + ") select regionid from tmp  ) ";

             }

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " order by a.listid DESC";

+            queryString += " order by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

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

@@ -812,48 +793,38 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

-                queryString += " and b.buildingid = :buildingid";

+                queryString += " and b.buildingid = :buildingid ";

             }

-            if (!regionid.equals("")){

-                queryString += "and b.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 {

-                queryString += "and b.regionid in  "

+

+                queryString += " and b.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 )";

+                    + ") select regionid from tmp ) ";

 

-            }

+

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " order by a.listid DESC";

+            queryString += " order by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

 

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

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

                 query.setParameter("allocatStartDate", allocatStartDate + "000000");

             }

@@ -876,6 +847,8 @@
             }

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

                 query.setParameter("regionid", regionid);

+            }else {

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

             }

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

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

@@ -974,25 +947,25 @@
                 queryString += " and a.rectime<=:allocatEndDate ";

             }

             if (!("all").equals(syncflag)) {

-                queryString += " and a.syncflag =:syncflag";

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

             }

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

-                queryString += " and b.devname like :devname";

+                queryString += " and b.devname like :devname ";

             }

             if (!("all").equals(operflag)) {

-                queryString += " and a.operflag =:operflag";

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

             }

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

                 queryString += " and b.buildingid = :buildingid ";

             }

 

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

-                queryString += " and a.custname like :custname";

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

             }

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

-                queryString += " and a.cardno like :cardno";

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

             }

-            queryString += " ORDER by a.listid DESC";

+            queryString += " ORDER by a.listid DESC ";

 

             Query query = entityManager.createNativeQuery(queryString, TDoorcardlstInfo.class);

             query.setParameter("operid", operid);

diff --git a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java
index 3d675ce..047e876 100644
--- a/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/mainservice/dao/impl/DoordtlDaoImpl.java
@@ -54,7 +54,7 @@
                         + "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  )";

+                        + ") select regionid from tmp  ) ";

             }

             queryString += " order by a.transdate DESC";

             Query query = entityManager.createNativeQuery(queryString, TDoordtlInfo.class);

@@ -118,25 +118,16 @@
             if(!buildingid.equals("")){

                 queryString += " and e.buildingid = :buildingid ";

             }

-            if (!regionid.equals("")){

+

                 queryString += " and d.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 {

-                queryString += " and d.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 regionid from tmp ) ";

+

             queryString += " order by transdate DESC";

             Query query = entityManager.createNativeQuery(queryString, TDoordtlInfo.class);

 

@@ -159,9 +150,10 @@
             if (!buildingid.equals("")) {

                 query.setParameter("buildingid", buildingid);

             }

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

             if(regionid.equals("")){

                 query.setParameter("regionid",regionid);

+            }else {

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

             }

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

             return list;

@@ -348,7 +340,7 @@
                         + "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  )";

+                        + ") select regionid from tmp  ) ";

             }

             Query query = entityManager.createNativeQuery(queryString);

             query.setMaxResults(5);

@@ -416,25 +408,16 @@
             if(!buildingid.equals("")){

                 queryString += " and e.buildingid = :buildingid ";

             }

-            if (!regionid.equals("")){

-                queryString += " and d.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 {

+

                 queryString += "and d.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 )";

-            }

+

             queryString += " order by transdate DESC";

             Query query = entityManager.createNativeQuery(queryString, TDoordtlInfo.class);

 

@@ -457,9 +440,10 @@
             if (!buildingid.equals("")) {

                 query.setParameter("buildingid", buildingid);

             }

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

-            if(regionid.equals("")){

+            if(!regionid.equals("")){

                 query.setParameter("regionid",regionid);

+            }else {

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

             }

             pageNo = pageNo <= 0 ? 1 : pageNo;

             query.setFirstResult((pageNo - 1) * pageSize);

@@ -487,7 +471,7 @@
         try {

             String queryString = "select count(*) as cnt "

                     + " from t_doordtl a "

-                    + " left join t_card c on a.custid=c.custid, t_nc_device "

+                    + " left join t_card c on a.custid=c.custid, t_nc_device b "

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

                     + " left join t_building e on b.buildingid=e.buildingid "

                     + " where 1>0 and cast(substr(a.doorid,5) as integer) = b.deviceid ";

@@ -510,25 +494,16 @@
             if(!buildingid.equals("")){

                 queryString += " and e.buildingid = :buildingid ";

             }

-            if (!regionid.equals("")){

+

                 queryString += " and d.regionid in  "

                         +"("

                         + "with recursive tmp as  "

                         + "("

-                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid like :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 {

-                queryString += "and tr.regionid in  "

-                        +"("

-                        + "with recursive tmp as  "

-                        + "("

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

+                        + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionid like :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(queryString);

             query.setMaxResults(5);

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

@@ -550,9 +525,11 @@
             if (!buildingid.equals("")) {

                 query.setParameter("buildingid", buildingid);

             }

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

+

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

                 query.setParameter("regionid",regionid);

+            }else {

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

             }

             List list = query.getResultList();

             int cnt = 0;

@@ -573,7 +550,7 @@
         String queryString = "select a.doorseqno,b.deviceid,b.devname,a.custname,c.cardno,c.cardphyid,c.bankcardno,a.transdate||a.transtime transdate, a.coldate||a.coltime coldate,"

                 + " case when a.status='' then '失败' else '成功' end status,a.dtldesc "

                 + " from t_doordtl a "

-                + " left join t_card c left join on a.custid=c.custid,t_nc_devcie b "

+                + " left join t_card c on a.custid=c.custid,t_nc_devcie b "

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

                 + " left join t_building e on b.buildingid=e.buildingid "

                 + " left join t_operBuilding f on e.buildingid = f.buildingid "

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 3b1120f..7bf505f 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -102,7 +102,7 @@
                 map.put("buildings", buildings);

 

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

-                page = ncService.getOperatorNcDeviceWithPage(devname, pageNo, pageSize, buildingid, operUser.getRegionid(), devtype);

+                page = ncService.getOperatorNcDeviceWithPage(devname, pageNo, pageSize, buildingid, regionid, devtype,operUser.getRegionid());

                 map.put("PageResult", page);

                 regions = systemService.getRegionListById(operUser.getRegionid());

                 map.put("regions", regions);

@@ -191,7 +191,9 @@
             List<TBuilding> regionBuildings = null;

             if (operUser.getOpertype().equals("L")){

                 regionBuildings = systemService.getBuildingOperBuildingByRegionId(regionid, operUser.getOperid());

-            }else {

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

+                regionBuildings = systemService.getBuildingByRegionId(operUser.getRegionid());

+            } else {

                 regionBuildings = systemService.getBuildingByRegionId(regionid);

             }

             map.put("reBuilding", regionBuildings);

@@ -1126,11 +1128,10 @@
             map.put("weektime", weektime);//时间周

             String opertype = operUser.getOpertype();

             List<TNcDevice> device = null;

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

+

                 device = ncService.findAllNcDevices();

-            }else if (!StringUtil.isEmpty(operUser.getRegionid())) {

-                device = ncService.findOperatorDevices(operUser.getRegionid());

-            }

+

+

             map.put("device", device);//设备

         } catch (Exception e) {

             e.printStackTrace();

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 88def09..a7b5fd1 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -11,6 +11,8 @@
 public interface NcDeviceDao {

     public Pagination getSystemNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid,String regionid, String devtype);

 

+    public Pagination getOperatorNcDeviceWithPage(String devname,int pageNo,int pageSize, String buildingid,String regionid,String devtype,String operRegionid);

+

     public Pagination getBuildingOperNcDeviceWithPage(String devname,int pageNo,int pageSize,String buildingid,String devtype,String operid);

 

     public List<TBuilding> getAllBuilding();

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 1a71ffd..a3623f0 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
@@ -29,10 +29,10 @@
                 +" left join tb_region tr on tr.regionid=tb.regionid"

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

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

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

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

         }

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

-            sql+="and  bean.buildingid = :buildingid ";

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

         }

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

             sql += "and tr.regionid in  "

@@ -45,9 +45,9 @@
                     + ") select regionid from tmp  )";

         }

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

-            sql+="and  devtype = :devtype ";

+            sql+=" and  devtype = :devtype ";

         }

-        sql+="order by devtype";

+        sql+=" order by devtype";

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

 

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

@@ -80,25 +80,25 @@
         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 and operflag='A' ";

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

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

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

         }

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

-            sql+="and  bean.buildingid = :buildingid ";

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

         }

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

-            sql += "and tr.regionid in  "

+            sql += " and tr.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  )";

+                    + ") select regionid from tmp  ) ";

         }

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

-            sql+="and  bean.devtype = :devtype ";

+            sql+=" and  bean.devtype = :devtype ";

         }

         Query query = entityManager.createNativeQuery(sql);

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

@@ -123,6 +123,109 @@
 

     @Transactional

     @Override

+    public Pagination getOperatorNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String regionid, String devtype, String operRegionid) {

+        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' ";

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

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+

+            sql += " and tr.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(!devtype.equals("")){

+            sql+=" and  devtype = :devtype ";

+        }

+        sql+=" order by devtype";

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

+

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

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if(!devtype.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }else {

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

+        }

+        pageNo = pageNo <= 0 ? 1 : pageNo;

+        query.setFirstResult((pageNo - 1) * pageSize);

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getOperatorNcDeviceCount(devname, buildingid, regionid, devtype, operRegionid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getOperatorNcDeviceCount(String devname,String buildingid, String regionid, String devtype, String operRegionid){

+        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' ";

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

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+

+            sql += " and tr.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(!devtype.equals("")){

+            sql+=" and  bean.devtype = :devtype ";

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

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

+        }

+        if(!buildingid.equals("")){

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

+        }

+        if(!devtype.equals("")){

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

+        }

+        if (!("").equals(regionid)){

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

+        }else {

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

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

+    @Transactional

+    @Override

     public Pagination getBuildingOperNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String devtype,String operid) {

         String sql = "select * from T_NC_device bean "

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

@@ -130,15 +233,15 @@
                 +" left join t_operbuilding tob on tob.buildingid=bean.buildingid "

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

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

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

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

         }

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

-            sql+="and  bean.buildingid = :buildingid ";

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

         }

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

-            sql+="and  bean.devtype = :devtype ";

+            sql+=" and  bean.devtype = :devtype ";

         }

-        sql+="order by devtype";

+        sql+=" order by devtype";

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

         query.setParameter("operid", operid);

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

@@ -171,13 +274,13 @@
                 +" left join t_operbuilding tob on tob.buildingid=bean.buildingid "

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

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

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

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

         }

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

-            sql+="and  bean.buildingid = :buildingid ";

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

         }

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

-            sql+="and  bean.devtype = :devtype ";

+            sql+=" and  bean.devtype = :devtype ";

         }

         Query query = entityManager.createNativeQuery(sql);

         query.setParameter("operid", operid);

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 98d3680..017c47c 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -12,8 +12,8 @@
     //根据查询条件分页获取所有设备

     public Pagination getSystemNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingid,String regionid, String devtype);

 

-    //根据查询条件分页获取管理员设备--- 实际与管理员dao层方法一致,只是regionid传入管理员权限区域id

-    public Pagination getOperatorNcDeviceWithPage(String devname,int pageNo,int pageSize, String buildingid,String regionid,String devtype);

+    //根据查询条件分页获取管理员设备---

+    public Pagination getOperatorNcDeviceWithPage(String devname,int pageNo,int pageSize, String buildingid,String regionid,String devtype,String operRegionid);

 

     //根据查询条件分页获取楼栋管理员设备 ---regionid为空

     public Pagination getBuildingOperNcDeviceWithPage(String devname,int pageNo,int pageSize,String buildingid,String devtype,String operid);

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 7b01829..68dae09 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
@@ -36,8 +36,8 @@
     }

 

     @Override

-    public Pagination getOperatorNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String regionid, String devtype) {

-        return ncDeviceDao.getSystemNcDeviceWithPage(devname, pageNo, pageSize, buildingid, regionid, devtype);

+    public Pagination getOperatorNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid, String regionid, String devtype,String operRegionid) {

+        return ncDeviceDao.getOperatorNcDeviceWithPage(devname, pageNo, pageSize, buildingid, regionid, devtype,operRegionid);

     }

 

     @Override

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 0e5c553..7c77c92 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/OperatorController.java
@@ -261,8 +261,15 @@
                               @AuthenticationPrincipal TOperator operUser){
         Map map = new HashMap();
         try{
-            Pagination page = managerService.getOperatorList(operid, realname, pageNo, pageSize);
-            map.put("PageResult", page);
+            Pagination page = null;
+            String opertype = operUser.getOpertype();
+            if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
+                page = managerService.getOperatorList(operid, realname, pageNo, pageSize);
+                map.put("PageResult", page);
+            }else {
+                page = managerService.getOperOperatorList(operUser.getOperid(), operid, realname, pageNo, pageSize);
+                map.put("PageResult", page);
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -320,8 +327,14 @@
             List<TRole> roles = roleService.findAllRoles();
             map.put("roles", roles);
 
-            List<TRegion> regions = systemService.getAllRegions();
-            map.put("regions", regions);
+            List<TRegion> regions = null;
+            if (!StringUtil.isEmpty(operUser.getOpertype()) && (operUser.getOpertype().equals("P") || operUser.getOpertype().equals("S"))) {
+                regions = systemService.getAllRegions();
+                map.put("regions", regions);
+            }else if (!StringUtil.isEmpty(operUser.getRegionid())){
+                regions = systemService.getRegionListById(operUser.getRegionid());
+                map.put("regions", regions);
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
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 a6086a4..000a4b8 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -23,6 +23,7 @@
 

 import javax.servlet.http.HttpServletRequest;

 import javax.servlet.http.HttpServletResponse;

+import java.util.ArrayList;

 import java.util.HashMap;

 import java.util.List;

 import java.util.Map;

@@ -287,11 +288,31 @@
             List<TDictionaryId> dicts = systemService.findTDictionaryByType(6);//区域级别

             map.put("dicts", dicts);

             if (region!=null) {

-                List<TRegion> fRegion = systemService.getRegionListByLevel(region.getLevel());

-                map.put("fRegion", fRegion);

+                List<TRegion> fRegion = null;

+                if (!StringUtil.isEmpty(operUser.getOpertype()) && (operUser.getOpertype().equals("P") || operUser.getOpertype().equals("S"))) {

+                    fRegion = systemService.getRegionListByLevel(region.getLevel());

+                    map.put("fRegion", fRegion);

+                }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+                    fRegion = systemService.getOperRegionListByLevel(region.getLevel(), operUser.getRegionid());

+                    //需添加其父区域填充显示数据

+                    TRegion parentRegion = systemService.getRegionById(region.getParentid());

+                    if (fRegion!=null) {

+                        fRegion.add(parentRegion);

+                    }else {

+                        fRegion = new ArrayList<>();

+                        fRegion.add(parentRegion);

+                    }

+                    map.put("fRegion", fRegion);

+                }

             }else {

-                List<TRegion> fRegion = systemService.getAllRegions();

-                map.put("fRegion", fRegion);

+                List<TRegion> fRegion = null;

+                if (!StringUtil.isEmpty(operUser.getOpertype()) && (operUser.getOpertype().equals("P") || operUser.getOpertype().equals("S"))) {

+                    fRegion = systemService.getAllRegions();

+                    map.put("fRegion", fRegion);

+                }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+                    fRegion = systemService.getRegionListById(operUser.getRegionid());

+                    map.put("fRegion", fRegion);

+                }

             }

         }catch (Exception e){

             e.printStackTrace();

@@ -380,15 +401,24 @@
     /**

      * 获取选取区域等级的所有可选父区域

      * @param level

+     * @param operUser

      * @return

      */

     @ResponseBody

     @RequestMapping("/getFregion")

-    public Map getFregion(@RequestParam(value = "level")int level){

+    public Map getFregion(@RequestParam(value = "level") int level,

+                            @AuthenticationPrincipal TOperator operUser){

         Map map = new HashMap();

         try{

-            List<TRegion> parentRegion = systemService.getRegionListByLevel(level);

-            map.put("parentRegion", parentRegion);

+            List<TRegion> parentRegion = null;

+            String opertype = operUser.getOpertype();

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

+                parentRegion = systemService.getRegionListByLevel(level);

+                map.put("parentRegion", parentRegion);

+            }else if (!StringUtil.isEmpty(operUser.getRegionid())){

+                parentRegion = systemService.getOperRegionListByLevel(level, operUser.getRegionid());

+                map.put("parentRegion", parentRegion);

+            }

         }catch (Exception e){

             e.printStackTrace();

         }

@@ -428,7 +458,7 @@
                 map.put("pageResult", page);

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

                 regionList = systemService.getRegionListById(operUser.getRegionid());

-                page = systemService.getSystemBuildingList(operUser.getRegionid(), buildingname, pageNo, pageSize);//regionid固定为管理员的权限区域id

+                page = systemService.getOperatorBuildingList(operUser.getRegionid(), regionid,buildingname, pageNo, pageSize);//regionid固定为管理员的权限区域id

                 map.put("pageResult", page);

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

                 page = systemService.getBuildingOperBuildingList(regionid, buildingname, operUser.getOperid(), pageNo, pageSize);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/BuildingDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/BuildingDao.java
index b2d7c68..404b11e 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/BuildingDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/BuildingDao.java
@@ -12,6 +12,8 @@
 

     public Pagination getSystemBuildingList(String regionid, String buildingname, int pageNo, int pageSize);

 

+    public Pagination getOperatorBuildingList(String operRegionid,String regionid,String buildingname,int pageNo,int pageSize);

+

     public Pagination getBuildingOperBuildingList(String regionid,String buildingname,String operid,int pageNo,int pageSize);

 

     public TBuilding getBuildingById(String buildingid);

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 a594e37..5f8798a 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/ManagerDao.java
@@ -9,6 +9,9 @@
 

     Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize);

 

+    Pagination getOperOperatorList(String operatorOperid,String operid, String realname, int pageNo, int pageSize);

+

+

     boolean updateOperatorStatusById(String operid);

 

     TOperator getOperatorById(String operid);

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 75847c4..da117c5 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
@@ -21,6 +21,8 @@
 

     public List<TRegion> getRegionListByLevel(int level);

 

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

+

     public List<TRegion> getAllRegions();

 

     public TRegion getRegionByName(String regionname);

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
index a1a8f79..e8ab4eb 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
@@ -77,6 +77,7 @@
     }

 

 

+

     private int getSystemBuildingListCount(String regionid,String buildingname){

         String sql = "select count(*) from T_Building bean where 1>0 and bean.flag='A' ";

         if (!StringUtil.isEmpty(regionid)){

@@ -106,6 +107,74 @@
 

     @Transactional

     @Override

+    public Pagination getOperatorBuildingList(String operRegionid, String regionid, String buildingname, int pageNo, int pageSize) {

+        String sql = "select bean.buildingid,bean.buildingname,bean.synctime,bean.updtime,bean.flag,bean.buildingdesc,bean.regionid " +

+                " from T_Building bean where 1>0 and bean.flag='A' ";

+

+            sql += "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  )";

+

+

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

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

+        }

+        sql += " order by bean.buildingid";

+

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

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

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

+        }else {

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

+        }

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

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

+        }

+

+        pageNo = pageNo <= 0 ? 1 : pageNo;

+        query.setFirstResult((pageNo - 1) * pageSize);

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getOperatorBuildingListCount(operRegionid,regionid,buildingname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getOperatorBuildingListCount(String operRegionid, String regionid, String buildingname){

+        String sql = "select count(*) from T_Building bean where 1>0 and bean.flag='A' ";

+

+            sql += "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  )";

+

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

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

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

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

+        }else {

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

+        }

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

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

+        }

+        int cnt=0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

+    @Transactional

+    @Override

     public Pagination getBuildingOperBuildingList(String regionid, String buildingname, String operid, int pageNo, int pageSize) {

         // 楼栋管理员regionid为空

         String sql = "select bean.buildingid,bean.buildingname,bean.synctime,bean.updtime,bean.flag,bean.buildingdesc,bean.regionid "+

@@ -139,6 +208,7 @@
             sql += " and bean.buildingname like :buildingname";

         }

         Query query = entityManager.createNativeQuery(sql);

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

         if (!StringUtil.isEmpty(buildingname)){

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

         }

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
index 9e8e002..4655310 100644
--- a/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/DictionaryDaoImpl.java
@@ -140,7 +140,7 @@
         }else if (opertype.equals("H")){

             sql +=" and bean.id.dictval<>'P' and bean.id.dictval<>'S' and bean.id.dictval<>'H'";

         }else {

-            sql +=" and bean.id.dictval == 'L'";

+            sql +=" and bean.id.dictval = 'L' ";

         }

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

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

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 5a8e6a1..3a40774 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
@@ -62,6 +62,7 @@
         return page;

     }

 

+

     private int getOperatorListCount(String operid, String realname){

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

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

@@ -93,6 +94,79 @@
         return cnt;

     }

 

+    @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 " +

+                " 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) ";

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

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

+        }

+

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

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

+        }

+

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

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

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

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

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

+        }

+

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

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

+        }

+        pageNo = pageNo <= 0 ? 1 : pageNo;

+        query.setFirstResult((pageNo - 1) * pageSize);

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getOperOperatorListCount(operatorOperid,operid, realname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getOperOperatorListCount(String operatorOperid, String operid, String realname){

+        String sql = "select count(*) 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 a.status='normal' and (a.operid=:operatorOperid or a.foperid=:operatorOperid) ";

+

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

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

+        }

+

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

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

+        }

+

+        Query query = entityManager.createNativeQuery(sql);

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

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

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

+        }

+

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

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

+        }

+        int cnt=0;

+        List list = query.getResultList();

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

+            cnt = Integer.parseInt(list.get(0).toString());

+        }

+        return cnt;

+    }

+

+

 

     @Transactional

     @Override

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 f865cdb..82c252a 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
@@ -195,6 +195,25 @@
 

     @Transactional

     @Override

+    public List<TRegion> getOperRegionListByLevel(int level, 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.level = :level "+

+                " 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("level" , level-1);

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

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

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

+            return list;

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

     public List<TRegion> getAllRegions() {

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

         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 c7a013e..e4a5f06 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/ManagerService.java
@@ -10,6 +10,10 @@
     //分页获取所有操作员列表

     Pagination getOperatorList(String operid, String realname, int pageNo, int pageSize);

 

+    //分页获取区域管理员权限下操作员列表

+    Pagination getOperOperatorList(String operatorOperid,String operid, String realname, int pageNo, int pageSize);

+

+

     //根据id删除操作员 -- 实际修改状态status为close

     boolean deleteOperatorById(String operid);

 

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 0fd04c9..6dca35c 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -59,6 +59,9 @@
     //根据区域级别获取其上一级级别的所有区域

     public List<TRegion> getRegionListByLevel(int level);

 

+    //根据区域级别获取其权限下上一级级别的区域

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

+

     //获取所有区域

     public List<TRegion> getAllRegions();

 

@@ -78,6 +81,9 @@
     //根据查询条件分页获取所有楼栋

     public Pagination getSystemBuildingList(String regionid,String buildingname,int pageNo,int pageSize);

 

+    //根据查询条件分页获取区域管理员权限下所有楼栋

+    public Pagination getOperatorBuildingList(String operRegionid,String regionid,String buildingname,int pageNo,int pageSize);

+

     //分页获取楼栋管理员权限内楼栋

     public Pagination getBuildingOperBuildingList(String regionid,String buildingname,String operid,int pageNo,int pageSize);

 

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 793769d..5410b55 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
@@ -20,6 +20,12 @@
     }

 

     @Override

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

+        return managerDao.getOperOperatorList(operatorOperid, operid, realname, pageNo, pageSize);

+    }

+

+

+    @Override

     public boolean deleteOperatorById(String operid) {

         return managerDao.updateOperatorStatusById(operid);

     }

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 d1d6679..ca4f176 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
@@ -115,6 +115,11 @@
     }

 

     @Override

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

+        return regionDao.getOperRegionListByLevel(level, regionid);

+    }

+

+    @Override

     public List<TRegion> getAllRegions() {

         return regionDao.getAllRegions();

     }

@@ -146,6 +151,11 @@
     }

 

     @Override

+    public Pagination getOperatorBuildingList(String operRegionid, String regionid, String buildingname, int pageNo, int pageSize) {

+        return buildingDao.getOperatorBuildingList(operRegionid, regionid, buildingname, pageNo, pageSize);

+    }

+

+    @Override

     public Pagination getBuildingOperBuildingList(String regionid, String buildingname, String operid, int pageNo, int pageSize) {

         return buildingDao.getBuildingOperBuildingList(regionid, buildingname, operid, pageNo, pageSize);

     }

diff --git a/src/main/resources/templates/doorlist/searchDoorlist.html b/src/main/resources/templates/doorlist/searchDoorlist.html
index ce46dc8..6f4d31c 100644
--- a/src/main/resources/templates/doorlist/searchDoorlist.html
+++ b/src/main/resources/templates/doorlist/searchDoorlist.html
@@ -387,15 +387,25 @@
                         })
                     }
                     var regionlist = [];
+                    regionlist.push({
+                        value:'',
+                        label:'全部'
+                    });
                     var region = data.regions;
-                    for (var i = 0; i < region.length; i++) {
-                        regionlist.push({
-                            value: region[i]["regionid"],
-                            label: region[i]["regionname"]
-                        })
+                    if(region!=null) {
+                        for (var i = 0; i < region.length; i++) {
+                            regionlist.push({
+                                value: region[i]["regionid"],
+                                label: region[i]["regionname"]
+                            })
+                        }
                     }
 
                     var buildinglist = [];
+                    buildinglist.push({
+                        value:'',
+                        label:'全部'
+                    });
                     var building = data.buildings;
                     for (var i = 0; i < building.length; i++) {
                         buildinglist.push({
@@ -549,6 +559,10 @@
             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++) {
diff --git a/src/main/resources/templates/query/tdoorstream.html b/src/main/resources/templates/query/tdoorstream.html
index e705d98..58ff021 100644
--- a/src/main/resources/templates/query/tdoorstream.html
+++ b/src/main/resources/templates/query/tdoorstream.html
@@ -273,15 +273,25 @@
                         });
                     }
                     var regionlist = [];
+                    regionlist.push({
+                        value:'',
+                        label:'全部'
+                    });
                     var region = ret.regions;
-                    for (var i = 0; i < region.length; i++) {
-                        regionlist.push({
-                            value: region[i]["regionid"],
-                            label: region[i]["regionname"]
-                        })
+                    if (region!=null) {
+                        for (var i = 0; i < region.length; i++) {
+                            regionlist.push({
+                                value: region[i]["regionid"],
+                                label: region[i]["regionname"]
+                            })
+                        }
                     }
 
                     var buildinglist = [];
+                    buildinglist.push({
+                        value:'',
+                        label:'全部'
+                    });
                     var building = ret.buildings;
                     for (var i = 0; i < building.length; i++) {
                         buildinglist.push({
@@ -400,6 +410,10 @@
             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++) {
diff --git a/src/main/resources/templates/system/building.html b/src/main/resources/templates/system/building.html
index 3fd4a33..88fcc86 100644
--- a/src/main/resources/templates/system/building.html
+++ b/src/main/resources/templates/system/building.html
@@ -14,7 +14,7 @@
                         <label class="control-label col-md-5 col-sm-12 col-xs-12" style="font-size: 14px;">区域:</label>
                         <div class="col-md-7 col-sm-12 col-xs-12">
                             <el-select style="width:193px"
-                                       v-model="buildingform.regionid" placeholder="请选择"
+                                       v-model="buildingform.regionid" clearable placeholder="请选择"
                             > <el-option v-for="item in regionlist"
                                          :key="item.value" :label="item.label" :value="item.value">
                             </el-option> </el-select>
@@ -259,6 +259,10 @@
                     if (ret.regionList!=null) {
                         var rlist = ret.regionList;
                         var rows = [];
+                        rows.push({
+                            value:'',
+                            label:'全部'
+                        });
                         for (var i=0;i<rlist.length;i++){
                             rows.push({
                                 value: rlist[i].regionid,
diff --git a/src/main/resources/templates/system/region.html b/src/main/resources/templates/system/region.html
index b044811..24d1b2f 100644
--- a/src/main/resources/templates/system/region.html
+++ b/src/main/resources/templates/system/region.html
@@ -276,6 +276,7 @@
                     this.parentRegionDis = true;
                 } else  {
                     this.parentRegionDis = false;
+                    this.parentRegions = [];
                     region_getFregion(this,value);
                 }
             },
@@ -359,6 +360,18 @@
                 }
                 _self.levels = dictlist;
 
+                var fRegion = ret.fRegion;
+                for (var j=0;j<fRegion.length;j++){
+                    parentlist.push({
+                        value:fRegion[j]["regionid"],
+                        label:fRegion[j]["regionname"]
+                    });
+                }
+
+                _self.parentRegions = parentlist;
+
+
+
                 if (ret.region != null) {
                     _self.regionDiaForm.regionid = ret.region.regionid;
                     _self.regionDiaForm.regionname = ret.region.regionname;
@@ -373,15 +386,7 @@
                 }
 
 
-                var fRegion = ret.fRegion;
-                for (var j=0;j<fRegion.length;j++){
-                    parentlist.push({
-                        value:fRegion[j]["regionid"],
-                        label:fRegion[j]["regionname"]
-                    });
-                }
 
-                _self.parentRegions = parentlist;
             }
         })
     }