楼栋管理,设备管理 部分功能楼栋权限添加
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 030ea46..a2efe03 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -10,6 +10,7 @@
 import com.supwisdom.dlpay.system.domain.TDictionaryId;

 import com.supwisdom.dlpay.system.domain.TRegion;

 import com.supwisdom.dlpay.system.page.Pagination;

+import com.supwisdom.dlpay.system.service.ManagerService;

 import com.supwisdom.dlpay.system.service.SystemService;

 import com.supwisdom.dlpay.util.RedisUtil;

 import org.slf4j.Logger;

@@ -35,6 +36,8 @@
     private NcService ncService;

     @Autowired

     private SystemService systemService;

+    @Autowired

+    private ManagerService managerService;

 

     @RequestMapping("/devindex")

     public String devindex(ModelMap model) {

@@ -62,7 +65,7 @@
     }

 

     /**

-     * 查询设备信息

+     * 分页查询设备信息

      * @param request

      * @param response

      * @param pageNo

@@ -98,13 +101,18 @@
                 buildings = ncService.getAllBuilding();

                 map.put("buildings", buildings);

 

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

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

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

                 map.put("PageResult", page);

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

                 map.put("regions", regions);

                 buildings = systemService.getBuildingByRegionId(operUser.getRegionid());

                 map.put("buildings", buildings);

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

+                page = ncService.getBuildingOperNcDeviceWithPage(devname, pageNo, pageSize, buildingid, devtype, operUser.getOperid());

+                map.put("PageResult", page);

+                buildings = systemService.getBuildingOperBuildings(operUser.getOperid());

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

             }

             List<TDictionaryId> dicts = systemService.findTDictionaryByType(8);

             map.put("dicts", dicts);

@@ -146,16 +154,26 @@
                 map.put("buildingsfill", buildingsfill);

                 devices = ncService.getSystemDevByType("C");//根据设备类型获取设备

                 map.put("devices", devices);

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

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

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

                 map.put("regionsfill", regionsfill);

                 buildingsfill = systemService.getBuildingByRegionId(operUser.getRegionid());

                 map.put("buildingsfill", buildingsfill);

                 devices = ncService.getOperatorDevByType("C", operUser.getRegionid());

                 map.put("devices", devices);

+            }else if (opertype.equals("L") && !StringUtil.isEmpty(operUser.getFoperid())){

+                //楼栋管理员填充区域为其上级管理员区域

+                TOperator fOperUser = managerService.getOperatorById(operUser.getFoperid());

+                if (fOperUser.getOpertype().equals("H") && !StringUtil.isEmpty(fOperUser.getRegionid())){

+                    regionsfill = systemService.getRegionListById(fOperUser.getRegionid());

+                }

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

+                buildingsfill = systemService.getBuildingOperBuildings(operUser.getOperid());

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

+                devices = ncService.getBuildingOperDevByType("C", operUser.getOperid());

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

             }

 

-

         } 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 7828c2c..9284dfe 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -10,6 +10,8 @@
 public interface NcDeviceDao {

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

 

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

+

     public List<TBuilding> getAllBuilding();

 

     public List<TRegion> getAllRegion();

@@ -20,6 +22,8 @@
 

     public List<TNcDevice> getOperatorDevByType(String type,String regionid);

 

+    public List<TNcDevice> getBuildingOperDevByType(String type,String operid);

+

     public TNcDevice findDevById(int id);

 

     public TNcDevice validDevName(int devid,String devname);

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 19eff12..46a9e9b 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
@@ -81,7 +81,7 @@
                 +" 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 bean.devname like :devname ";

         }

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

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

@@ -97,7 +97,7 @@
                     + ") select regionid from tmp  )";

         }

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

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

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

         }

         Query query = entityManager.createNativeQuery(sql);

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

@@ -120,6 +120,83 @@
         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"

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

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

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

+        }

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

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

+        }

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

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

+        }

+        sql+="order by devtype";

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

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

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

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

+        }

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

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

+        }

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

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

+        }

+

+        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 = getBuildingOperNcDeviceCount(devname, buildingid, devtype,operid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getBuildingOperNcDeviceCount(String devname,String buildingid,String devtype,String operid){

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

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

+        }

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

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

+        }

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

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

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

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

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

+        }

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

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

+        }

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

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

+        }

+        List list = query.getResultList();

+        int cnt = 0;

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

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

+        }

+        return cnt;

+    }

+

 

     @Transactional

     @Override

@@ -182,6 +259,20 @@
 

     @Transactional

     @Override

+    public List<TNcDevice> getBuildingOperDevByType(String type, String operid) {

+        String sql = "select bean.deviceid,bean.devphyid,bean.devname,bean.ip,bean.operflag,bean.syncflag,bean.synctime," +

+                "bean.updtime,bean.fdevid,bean.devtype,bean.devno,bean.usetype,bean.buildingid,bean.buildingname,bean.regionid " +

+                " from T_NC_DEVICE bean where bean.devtype=?1 and bean.operflag='A' "+

+                " and bean.buildingid in (select a.buildingid from t_operbuilding a where a.operid = ?2)";

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

+        query.setParameter(1, type);

+        query.setParameter(2, operid);

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

+        return list;

+    }

+

+    @Transactional

+    @Override

     public TNcDevice findDevById(int id) {

         String sql = " select r from TNcDevice r where  r.deviceid=:deviceid";

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

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 3ff8f95..923d2ad 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -14,6 +14,9 @@
     //根据查询条件分页获取管理员设备--- 实际与管理员dao层方法一致,只是regionid传入管理员权限区域id

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

 

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

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

+

     //获取所有楼栋信息

     public List<TBuilding> getAllBuilding();

 

@@ -29,6 +32,9 @@
     //根据设备类型获取操作员权限设备

     public List<TNcDevice> getOperatorDevByType(String type,String regionid);

 

+    //根据设备类型获取楼栋管理员权限设备

+    public List<TNcDevice> getBuildingOperDevByType(String type,String operid);

+

     //根据设备id获取设备

     public TNcDevice findDevById(int id);

 

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 29aa751..495474c 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
@@ -40,6 +40,11 @@
     }

 

     @Override

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

+        return ncDeviceDao.getBuildingOperNcDeviceWithPage(devname, pageNo, pageSize, buildingid, devtype, operid);

+    }

+

+    @Override

     public List<TBuilding> getAllBuilding() {

         return ncDeviceDao.getAllBuilding();

     }

@@ -65,6 +70,11 @@
     }

 

     @Override

+    public List<TNcDevice> getBuildingOperDevByType(String type, String operid) {

+        return ncDeviceDao.getBuildingOperDevByType(type, operid);

+    }

+

+    @Override

     public TNcDevice findDevById(int id) {

         return ncDeviceDao.findDevById(id);

     }

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 5066fd6..44981c8 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -424,11 +424,13 @@
                 regionList = systemService.getAllRegions();

                 page = systemService.getSystemBuildingList(regionid, buildingname, pageNo, pageSize);

                 map.put("pageResult", page);

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

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

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

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

                 map.put("pageResult", page);

-

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

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

+                map.put("pageResult", page);

             }

             map.put("regionList", regionList);

 

@@ -648,7 +650,7 @@
         } catch (Exception e) {

             e.printStackTrace();

             map.put("result", "管理员:" + operid + ",分配楼栋失败");

-            logger.error("分配设备失败:" + e.getMessage());

+            logger.error("分配楼栋失败:" + e.getMessage());

         }

         map.put("okFlag", okFlag);

         return map;

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 19c40e0..e351e45 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 getBuildingOperBuildingList(String regionid,String buildingname,String operid,int pageNo,int pageSize);

+

     public TBuilding getBuildingById(String buildingid);

 

     public TBuilding getBuildingByName(String buildingname);

@@ -33,4 +35,6 @@
     public boolean deleteOperBuildingByOperid(String operid);

 

     public boolean saveOperBuilding(TOperbuilding bean);

+

+    public List<TBuilding> getBuildingOperBuildings(String operid);

 }

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 9a75308..307f3c4 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
@@ -76,6 +76,7 @@
         return page;

     }

 

+

     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)){

@@ -105,6 +106,52 @@
 

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

+                " from T_Building bean left join T_operbuilding a on a.buildingid=bean.buildingid " +

+                " where 1>0 and bean.flag='A' and a.operid= :operid";

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

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

+        }

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

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

+        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 = getBuildingOperBuildingListCount(operid,buildingname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getBuildingOperBuildingListCount(String operid,String buildingname){

+        String sql = "select count(*) from T_BUILDING bean left join T_operbuilding a on a.buildingid=bean.buildingid "+

+                "where 1>0 and bean.flag='A' and a.operid= :operid";

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

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

+        }

+        Query query = entityManager.createNativeQuery(sql);

+        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 TBuilding getBuildingById(String buildingid) {

         String sql = "select bean from TBuilding bean where bean.flag='A' and bean.buildingid=:buildingid";

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

@@ -250,4 +297,16 @@
         }

         return flag;

     }

+

+    @Transactional

+    @Override

+    public List<TBuilding> getBuildingOperBuildings(String operid) {

+        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' and bean.buildingid in (select a.buildingid from t_operbuilding a where a.operid =?1)";

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

+        query.setParameter(1, operid);

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

+        return list;

+    }

 }

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 0f1f65f..1cf4ced 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -74,6 +74,9 @@
     //根据查询条件分页获取所有楼栋

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

 

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

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

+

     //根据id获取楼栋信息

     public TBuilding getBuildingById(String buildingid);

 

@@ -106,4 +109,7 @@
 

     //保存操作员分配的楼栋

     public boolean saveOperBuilding(TOperbuilding bean);

+

+    //获取楼栋管理员权限下的楼栋

+    public List<TBuilding> getBuildingOperBuildings(String 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 359c8e1..44c31e5 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
@@ -140,6 +140,11 @@
     }

 

     @Override

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

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

+    }

+

+    @Override

     public TBuilding getBuildingById(String buildingid) {

         return buildingDao.getBuildingById(buildingid);

     }

@@ -194,4 +199,9 @@
         return buildingDao.saveOperBuilding(bean);

     }

 

+    @Override

+    public List<TBuilding> getBuildingOperBuildings(String operid) {

+        return buildingDao.getBuildingOperBuildings(operid);

+    }

+

 }

diff --git a/src/main/resources/templates/ncmgr/nc_dev.html b/src/main/resources/templates/ncmgr/nc_dev.html
index bc9d804..52157b7 100644
--- a/src/main/resources/templates/ncmgr/nc_dev.html
+++ b/src/main/resources/templates/ncmgr/nc_dev.html
@@ -570,14 +570,16 @@
                         value:'',
                         label:''
                     });
-                    if (rt.length==1){
-                        vue.devform.regionid = rt[0].regionid;
-                    }
-                    for (var j=0;j<rt.length;j++){
-                        uows.push({
-                            value: rt[j].regionid,
-                            label: rt[j].regionname
-                        });
+                    if (rt!=null) {
+                        if (rt.length == 1) {
+                            vue.devform.regionid = rt[0].regionid;
+                        }
+                        for (var j = 0; j < rt.length; j++) {
+                            uows.push({
+                                value: rt[j].regionid,
+                                label: rt[j].regionname
+                            });
+                        }
                     }
 
 
@@ -675,11 +677,13 @@
                 }
                 var regionlist=[];
                 var regiondata = ret.regionsfill;
-                for (var i = 0; i < regiondata.length; i++) {
-                    regionlist.push({
-                        label: regiondata[i].regionname,
-                        value: regiondata[i].regionid
-                    });
+                if (regiondata!=null) {
+                    for (var i = 0; i < regiondata.length; i++) {
+                        regionlist.push({
+                            label: regiondata[i].regionname,
+                            value: regiondata[i].regionid
+                        });
+                    }
                 }
 
                 var buildinglist=[];
diff --git a/src/main/resources/templates/system/operator.html b/src/main/resources/templates/system/operator.html
index c4a30ca..2a05b42 100644
--- a/src/main/resources/templates/system/operator.html
+++ b/src/main/resources/templates/system/operator.html
@@ -450,7 +450,7 @@
                     success: function (data) {
                         if (data.okFlag==1){
                             _that.dlgAllotBuildingVisible=false;
-                            layer.msg('分配设备成功', {icon: 1,time:2000});
+                            layer.msg(data.result, {icon: 1,time:2000});
                             _that.selectBuildingList=[];
                         }else{
                             layer.msg(data.result, {icon: 2,time:2000});