楼栋管理,设备管理 部分功能楼栋权限添加
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});