设备区域权限调整修改
diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/bean/NcDevBean.java b/src/main/java/com/supwisdom/dlpay/ncmgr/bean/NcDevBean.java
index 107133c..bbfb2e8 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/bean/NcDevBean.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/bean/NcDevBean.java
@@ -10,6 +10,7 @@
private int devno;
private String usetype;
private String buildingid;
+ private String regionid;
public int getDeviceid() {
return deviceid;
@@ -82,4 +83,12 @@
public void setUsetype(String usetype) {
this.usetype = usetype;
}
+
+ public String getRegionid() {
+ return regionid;
+ }
+
+ public void setRegionid(String regionid) {
+ this.regionid = regionid;
+ }
}
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 df099ce..1053c3c 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -1,16 +1,20 @@
package com.supwisdom.dlpay.ncmgr.controller;
+import com.supwisdom.dlpay.framework.domain.TOperator;
import com.supwisdom.dlpay.framework.util.DateUtil;
+import com.supwisdom.dlpay.framework.util.StringUtil;
import com.supwisdom.dlpay.ncmgr.bean.NcDevBean;
import com.supwisdom.dlpay.ncmgr.bean.NcTimeBean;
import com.supwisdom.dlpay.ncmgr.domain.*;
import com.supwisdom.dlpay.ncmgr.service.NcService;
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.SystemService;
import com.supwisdom.dlpay.util.RedisUtil;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
@@ -63,8 +67,8 @@
* @param pageNo
* @param pageSize
* @param devname
- * @param buildingname
- * @param regionname
+ * @param buildingid
+ * @param regionid
* @param devtype
* @return
*/
@@ -75,20 +79,37 @@
@RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,
@RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,
@RequestParam(value = "devname", required = false, defaultValue = "") String devname,
- @RequestParam(value = "buildingname", required = false, defaultValue = "") String buildingname,
- @RequestParam(value = "regionname",required = false,defaultValue = "") String regionname,
- @RequestParam(value = "devtype", required = false, defaultValue = "") String devtype){
+ @RequestParam(value = "buildingid", required = false, defaultValue = "") String buildingid,
+ @RequestParam(value = "regionid",required = false,defaultValue = "") String regionid,
+ @RequestParam(value = "devtype", required = false, defaultValue = "") String devtype,
+ @AuthenticationPrincipal TOperator operUser){
Map map = new HashMap();
try{
+ String opertype = operUser.getOpertype();
Pagination page = null;
- page = ncService.getNcDeviceWithPage(devname, pageNo, pageSize, map, buildingname,regionname, devtype);
- map.put("PageResult", page);
+ List<TRegion> regions = null;
+ List<TBuilding> buildings = null;
+ if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))) {
+ page = ncService.getSystemNcDeviceWithPage(devname, pageNo, pageSize, map, buildingid, regionid, devtype);
+ map.put("PageResult", page);
+ regions = systemService.getAllRegions();
+ map.put("regions", regions);
+ buildings = ncService.getAllBuilding();
+ map.put("buildings", buildings);
+
+ }else if (!StringUtil.isEmpty(operUser.getRegionid())){
+ page = ncService.getOperatorNcDeviceWithPage(devname, pageNo, pageSize, buildingid, operUser.getRegionid(), devtype);
+ map.put("PageResult", page);
+ TRegion regionById = systemService.getRegionById(operUser.getRegionid());
+ regions.add(regionById);
+ map.put("regions", regions);
+ buildings = systemService.getBuildingByRegionId(operUser.getRegionid());
+ map.put("buildings", buildings);
+ }
List<TDictionaryId> dicts = systemService.findTDictionaryByType(8);
map.put("dicts", dicts);
- List<TBuilding> buildings = ncService.getAllBuilding();
- map.put("buildings", buildings);
- List<TNcDevice> devices = ncService.getDevByType("C");
- map.put("devices", devices);
+
+
}catch (Exception e){
e.printStackTrace();
logger.error("查询设备失败:" + e.getMessage());
@@ -103,19 +124,39 @@
*/
@RequestMapping("/loadNcDevForUpdate")
@ResponseBody
- public Map loadNcDevForUpdate(@RequestParam(value = "deviceid") int deviceid){
+ public Map loadNcDevForUpdate(@RequestParam(value = "deviceid") int deviceid,
+ @AuthenticationPrincipal TOperator operUser){
Map map = new HashMap();
try {
TNcDevice device = ncService.findDevById(deviceid);
map.put("device", device);
List<TDictionaryId> dicts = systemService.findTDictionaryByType(8);//设备类型 C:控制器 R:读头
map.put("dicts", dicts);
- List<TBuilding> buildings = ncService.getAllBuilding();
- map.put("buildings", buildings);
- List<TNcDevice> devices = ncService.getDevByType("C");//根据设备类型获取设备
- map.put("devices", devices);
List<TDictionaryId> devUseType = systemService.findTDictionaryByType(16);//获取设备使用类别
map.put("devUseType", devUseType);
+
+ String opertype = operUser.getOpertype();
+ List<TRegion> regionsfill = null;
+ List<TBuilding> buildingsfill = null;
+ List<TNcDevice> devices = null;
+ if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
+ regionsfill = systemService.getAllRegions();
+ map.put("regionsfill", regionsfill);
+ buildingsfill = ncService.getAllBuilding();
+ map.put("buildingsfill", buildingsfill);
+ devices = ncService.getSystemDevByType("C");//根据设备类型获取设备
+ map.put("devices", devices);
+ }else if (!StringUtil.isEmpty(operUser.getRegionid())){
+ TRegion regionById = systemService.getRegionById(operUser.getRegionid());
+ regionsfill.add(regionById);
+ map.put("regionsfill", regionsfill);
+ buildingsfill = systemService.getBuildingByRegionId(operUser.getRegionid());
+ map.put("buildingsfill", buildingsfill);
+ devices = ncService.getOperatorDevByType("C", operUser.getRegionid());
+ map.put("devices", devices);
+ }
+
+
} catch (Exception e) {
e.printStackTrace();
}
@@ -123,6 +164,25 @@
}
/**
+ * 根据区域id填充可选楼栋列表
+ * @param regionid
+ * @return
+ */
+ @ResponseBody
+ @RequestMapping("/getRegionBuilding")
+ public Map getRegionBuilding(@RequestParam(value = "regionid") String regionid){
+ Map map = new HashMap();
+ try{
+ List<TBuilding> regionBuildings = systemService.getBuildingByRegionId(regionid);
+ map.put("reBuilding", regionBuildings);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ return map;
+ }
+
+
+ /**
* 添加或修改设备
* @param postData
* @param request
@@ -171,10 +231,11 @@
devUpdate.setDevno(postData.getDevno());
devUpdate.setIp(postData.getIp());
devUpdate.setOperflag("A");
- devUpdate.setSyncfalg("S");
+ devUpdate.setSyncflag("S");
devUpdate.setUpdtime(DateUtil.getNow());
devUpdate.setSynctime(DateUtil.getNow());
devUpdate.setBuildingid(postData.getBuildingid());
+ devUpdate.setRegionid(postData.getRegionid());
TBuilding buiding = ncService.getBuidingById(postData.getBuildingid());
devUpdate.setBuildingname(buiding.getBuildingname());
@@ -223,8 +284,9 @@
devAdd.setBuildingid(postData.getBuildingid());
TBuilding buiding = ncService.getBuidingById(postData.getBuildingid());
devAdd.setBuildingname(buiding.getBuildingname());
+ devAdd.setRegionid(postData.getRegionid());
devAdd.setOperflag("A");
- devAdd.setSyncfalg("S");
+ devAdd.setSyncflag("S");
devAdd.setUpdtime(DateUtil.getNow());
devAdd.setSynctime(DateUtil.getNow());
devAdd.setUsetype(postData.getUsetype());
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 91196b9..df2a07b 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -8,7 +8,7 @@
import java.util.List;
public interface NcDeviceDao {
- public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingname,String regionname, String devtype);
+ public Pagination getSystemNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid,String regionid, String devtype);
public List<TBuilding> getAllBuilding();
@@ -16,7 +16,9 @@
public TBuilding getBuidingById(String id);
- public List<TNcDevice> getDevByType(String type);
+ public List<TNcDevice> getSystemDevByType(String type);
+
+ public List<TNcDevice> getOperatorDevByType(String type,String regionid);
public TNcDevice findDevById(int id);
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 5a2f752..f0ff557 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
@@ -22,7 +22,7 @@
@Transactional
@Override
- public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingname,String regionname, String devtype) {
+ public Pagination getSystemNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingid,String regionid, String devtype) {
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"
@@ -30,15 +30,15 @@
if(!devname.equals("")){
sql+="and devname like :devname ";
}
- if(!buildingname.equals("")){
- sql+="and buildingname like :buildingname ";
+ if(!buildingid.equals("")){
+ sql+="and buildingid = :buildingid ";
}
- if (!regionname.equals("")){
+ if (!regionid.equals("")){
sql += "and tr.regionid in "
+"("
+ "with recursive tmp as "
+ "("
- + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionname like :regionname "
+ + "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 )";
@@ -52,14 +52,14 @@
if(!devname.equals("")){
query.setParameter("devname", "%"+devname+"%");
}
- if(!buildingname.equals("")){
- query.setParameter("buildingname", "%"+buildingname+"%");
+ if(!buildingid.equals("")){
+ query.setParameter("buildingid", buildingid);
}
if(!devtype.equals("")){
query.setParameter("devtype", devtype);
}
- if (!("").equals(regionname)){
- query.setParameter("regionname", "%"+regionname+"%");
+ if (!("").equals(regionid)){
+ query.setParameter("regionid", regionid);
}
pageNo = pageNo <= 0 ? 1 : pageNo;
query.setFirstResult((pageNo - 1) * pageSize);
@@ -69,12 +69,13 @@
page.setPageSize(pageSize);
List<TNcDevice> list = query.getResultList();
page.setList(list);
- int totalCount = getNcDeviceCount(devname, buildingname, regionname, devtype);
+ int totalCount = getSystemNcDeviceCount(devname, buildingid, regionid, devtype);
page.setTotalCount(totalCount);
return page;
}
- private int getNcDeviceCount(String devname, String buildingname,String regionname, String devtype){
+
+ private int getSystemNcDeviceCount(String devname, String buildingid,String regionid, String devtype){
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"
@@ -82,15 +83,15 @@
if(!devname.equals("")){
sql+="and devname like :devname ";
}
- if(!buildingname.equals("")){
- sql+="and buildingname like :buildingname ";
+ if(!buildingid.equals("")){
+ sql+="and buildingid = :buildingid ";
}
- if (!regionname.equals("")){
+ if (!regionid.equals("")){
sql += "and tr.regionid in "
+"("
+ "with recursive tmp as "
+ "("
- + "select tbr.regionid,tbr.parentid,tbr.regionname from tb_region tbr where regionname like :regionname "
+ + "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 )";
@@ -102,14 +103,14 @@
if(!devname.equals("")){
query.setParameter("devname", "%"+devname+"%");
}
- if(!buildingname.equals("")){
- query.setParameter("buildingname", "%"+buildingname+"%");
+ if(!buildingid.equals("")){
+ query.setParameter("buildingid", buildingid);
}
if(!devtype.equals("")){
query.setParameter("devtype", devtype);
}
- if (!("").equals(regionname)){
- query.setParameter("regionname", "%"+regionname+"%");
+ if (!("").equals(regionid)){
+ query.setParameter("regionid", regionid);
}
List list = query.getResultList();
int cnt = 0;
@@ -120,7 +121,6 @@
}
-
@Transactional
@Override
public List<TBuilding> getAllBuilding() {
@@ -154,7 +154,7 @@
@Transactional
@Override
- public List<TNcDevice> getDevByType(String type) {
+ public List<TNcDevice> getSystemDevByType(String type) {
String sql = "select r from TNcDevice r where r.devtype=?1 and r.operflag='A' order by r.devname";
Query query = entityManager.createQuery(sql);
query.setParameter(1, type);
@@ -164,6 +164,24 @@
@Transactional
@Override
+ public List<TNcDevice> getOperatorDevByType(String type, String regionid) {
+ 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 devtype=:devtype and operflag='A' "+
+ "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, TNcDevice.class);
+ query.setParameter("devtype", type);
+ query.setParameter(regionid, regionid);
+ 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/domain/TNcDevice.java b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TNcDevice.java
index 2df3d9d..807d168 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TNcDevice.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TNcDevice.java
@@ -38,6 +38,8 @@
private String buildingid;
@Excel(name = "设备所在楼栋名称")
private String buildingname;
+ @Excel(name = "设备所在区域编号")
+ private String regionid;
// Constructors
@@ -51,21 +53,22 @@
}
/** full constructor */
- public TNcDevice(Integer deviceid, String devphyid, String devname,
- String ip, String operflag, String syncfalg, String synctime,
- String updtime, Integer fdevid, String devtype, Integer devno, String usetype) {
+ public TNcDevice(Integer deviceid, String devphyid, String devname, String ip, String operflag, String syncflag, String synctime, String updtime, Integer fdevid, String devtype, Integer devno, String usetype, String buildingid, String buildingname, String regionid) {
this.deviceid = deviceid;
this.devphyid = devphyid;
this.devname = devname;
this.ip = ip;
this.operflag = operflag;
- this.syncflag = syncfalg;
+ this.syncflag = syncflag;
this.synctime = synctime;
this.updtime = updtime;
this.fdevid = fdevid;
this.devtype = devtype;
this.devno = devno;
this.usetype = usetype;
+ this.buildingid = buildingid;
+ this.buildingname = buildingname;
+ this.regionid = regionid;
}
// Property accessors
@@ -115,15 +118,6 @@
this.operflag = operflag;
}
- @Column(name = "SYNCFALG", length = 3)
- public String getSyncfalg() {
- return this.syncflag;
- }
-
- public void setSyncfalg(String syncfalg) {
- this.syncflag = syncfalg;
- }
-
@Column(name = "SYNCTIME", length = 20)
public String getSynctime() {
return this.synctime;
@@ -195,4 +189,22 @@
public void setBuildingname(String buildingname) {
this.buildingname = buildingname;
}
+
+ @Column(name = "SYNCFLAG",length = 3)
+ public String getSyncflag() {
+ return syncflag;
+ }
+
+ public void setSyncflag(String syncflag) {
+ this.syncflag = syncflag;
+ }
+
+ @Column(name = "REGIONID",length = 32)
+ public String getRegionid() {
+ return regionid;
+ }
+
+ public void setRegionid(String regionid) {
+ this.regionid = regionid;
+ }
}
\ No newline at end of file
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 6c09ff9..de45972 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -9,7 +9,10 @@
public interface NcService {
//根据查询条件分页获取所有设备
- public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingname,String regionname, String devtype);
+ 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 List<TBuilding> getAllBuilding();
@@ -21,7 +24,10 @@
public TBuilding getBuidingById(String id);
//根据设备类型获取所有设备
- public List<TNcDevice> getDevByType(String type);
+ public List<TNcDevice> getSystemDevByType(String type);
+
+ //根据设备类型获取操作员权限设备
+ public List<TNcDevice> getOperatorDevByType(String type,String regionid);
//根据设备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 551fdfb..c76c9e7 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
@@ -28,13 +28,18 @@
@Override
- public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingname,String regionname, String devtype) {
- Pagination page = ncDeviceDao.getNcDeviceWithPage(devname, pageNo, pageSize, buildingname,regionname, devtype);
+ public Pagination getSystemNcDeviceWithPage(String devname, int pageNo, int pageSize, Map map, String buildingid,String regionid, String devtype) {
+ Pagination page = ncDeviceDao.getSystemNcDeviceWithPage(devname, pageNo, pageSize, buildingid,regionid, devtype);
map.put("devPage", page);
return page;
}
@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);
+ }
+
+ @Override
public List<TBuilding> getAllBuilding() {
return ncDeviceDao.getAllBuilding();
}
@@ -50,8 +55,13 @@
}
@Override
- public List<TNcDevice> getDevByType(String type) {
- return ncDeviceDao.getDevByType(type);
+ public List<TNcDevice> getSystemDevByType(String type) {
+ return ncDeviceDao.getSystemDevByType(type);
+ }
+
+ @Override
+ public List<TNcDevice> getOperatorDevByType(String type,String regionid) {
+ return ncDeviceDao.getOperatorDevByType(type,regionid);
}
@Override
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 3fa49bf..ffff38f 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -417,15 +417,19 @@
try {
String opertype = operUser.getOpertype();
Pagination page = null;
- page = systemService.getSystemBuildingList(regionid, buildingname, pageNo, pageSize);
- map.put("pageResult", page);
+
List<TRegion> regionList = null;
if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
regionList = systemService.getAllRegions();
+ page = systemService.getSystemBuildingList(regionid, buildingname, pageNo, pageSize);
+ map.put("pageResult", page);
}else if (!StringUtil.isEmpty(operUser.getRegionid())){
TRegion region = systemService.getRegionById(operUser.getRegionid());
regionList.add(region);
+ page = systemService.getSystemBuildingList(operUser.getRegionid(), buildingname, pageNo, pageSize);//regionid固定为管理员的权限区域id
+ map.put("pageResult", page);
+
}
map.put("regionList", regionList);
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 90c93f2..0bebeeb 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
@@ -20,8 +20,14 @@
@Transactional
@Override
public List<TBuilding> getBuildingByRegionId(String regionid) {
- String sql = "select bean from TBuilding bean where bean.flag='A' and bean.regionid=:regionid ";
- TypedQuery<TBuilding> query = entityManager.createQuery(sql, TBuilding.class);
+ String sql = "select bean.buildingid,bean.buildingname,bean.synctime,bean.updtime,bean.flag,bean.buildingdesc,bean.regionid" +
+ " from T_Building bean where bean.flag='A' "+
+ "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, TBuilding.class);
query.setParameter("regionid", regionid);
List<TBuilding> list = query.getResultList();
if (list!=null && list.size()>0){
diff --git a/src/main/resources/templates/ncmgr/nc_dev.html b/src/main/resources/templates/ncmgr/nc_dev.html
index b94c176..b4521e3 100644
--- a/src/main/resources/templates/ncmgr/nc_dev.html
+++ b/src/main/resources/templates/ncmgr/nc_dev.html
@@ -27,6 +27,7 @@
<div class="col-md-8 col-sm-12 col-xs-12">
<el-select v-model="devform.devtype"
filterable
+ clearable
@Change="devtypeChange"
placeholder="请选择">
<el-option
@@ -44,7 +45,18 @@
<label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">所在区域:</span>
</label>
<div class="col-md-8 col-sm-12 col-xs-12">
- <el-input v-model="devform.regionname" id="regionname"></el-input>
+ <el-select v-model="devform.regionid"
+ filterable
+ clearable
+ @Change="regionChange"
+ placeholder="请选择">
+ <el-option
+ v-for="regionid in regions"
+ :key="regionid.value"
+ :label="regionid.label"
+ :value="regionid.value">
+ </el-option>
+ </el-select>
</div>
</div>
</div>
@@ -54,7 +66,17 @@
<label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">所在楼栋:</span>
</label>
<div class="col-md-8 col-sm-12 col-xs-12">
- <el-input v-model="devform.buildingname" id="buildingname"></el-input>
+ <el-select v-model="devform.buildingid"
+ filterable
+ clearable
+ placeholder="请选择">
+ <el-option
+ v-for="buildingid in buildings"
+ :key="buildingid.value"
+ :label="buildingid.label"
+ :value="buildingid.value">
+ </el-option>
+ </el-select>
</div>
</div>
</div>
@@ -93,7 +115,7 @@
<el-table-column
prop="devno"
label="读头号"
- width="120">
+ width="100">
</el-table-column>
<el-table-column
prop="devname"
@@ -112,9 +134,9 @@
width="140">
</el-table-column>
<el-table-column
- prop="regionname"
- label="设备所属区域"
- width="140">
+ prop="regionid"
+ label="区域编号"
+ width="100">
</el-table-column>
<el-table-column
prop="ip"
@@ -247,15 +269,30 @@
</el-input>
</el-col>
</el-form-item>
+ <el-form-item label="所在区域:" prop="regionid">
+ <el-col :span="18">
+ <el-select v-model="devUpform.regionid"
+ style="width: 187px;" clearable
+ filterable
+ @Change="regionfillChange"
+ placeholder="请选择">
+ <el-option
+ v-for="regionid in regionsfill"
+ :key="regionid.value"
+ :label="regionid.label"
+ :value="regionid.value">
+ </el-option>
+ </el-select>
+ </el-col>
+ </el-form-item>
<el-form-item label="所在楼栋:" prop="buildingid">
<el-col :span="18">
<el-select v-model="devUpform.buildingid"
style="width: 187px;" clearable
filterable
- :disabled="buildingDis"
placeholder="请选择">
<el-option
- v-for="buildingid in buildings"
+ v-for="buildingid in buildingsfill"
:key="buildingid.value"
:label="buildingid.label"
:value="buildingid.value">
@@ -316,15 +353,18 @@
phyDis: false,
devform: {
devname: '',
- buildingname: '',
+ buildingid: '',
devtype: '',
- regionname:''
+ regionid:''
},
+ regions:[],
+ regionsfill:[],
+ buildings:[],
+ buildingsfill:[],
checkvisible: true,
continueadd: true,
devtypes: [],
fdevs: [],
- buildings:[],
devusetypes: [],
dialogFormVisible: false,
dlgAllotDevVisible: false,
@@ -339,6 +379,7 @@
devno: '',
ip: '',
buildingid:'',
+ regionid:''
},
rules: {
@@ -357,7 +398,13 @@
],
devno: [
{validator: validatePass, trigger: 'blur'}
- ]
+ ],
+ regionid: [
+ {required: true, message: '请选择设备所在区域', trigger: 'blur'}
+ ],
+ buildingid: [
+ {required: true, message: '请选择设备所在楼栋', trigger: 'blur'}
+ ],
},
usetypeVals: [],
usetypeNames: []
@@ -439,6 +486,14 @@
//this.checkvisible=false;
}
},
+ regionChange:function(value){
+ this.buildings=[];
+ getRegionBuilding(this,value);
+ },
+ regionfillChange:function(value){
+ this.buildingsfill=[];
+ getRegionBuildingfill(this,value);
+ },
editDev: function (deviceid) {
this.devnoDis = false;
this.fdevDis = false;
@@ -498,16 +553,35 @@
$.ajax({
type: "get",
dataType: "json",
- url: "/ncmgr/loadDevList?devname=",
+ url: "/ncmgr/loadDevList",
success: function (ret) {
//console.log(ret);
_self.totSize = ret.PageResult.totalCount;
_self.tableData = ret.PageResult.list;
+
+ var rt = ret.regions;
+ var uows = [];
+ uows.push({
+ 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
+ });
+ }
+
+
+
var ut = ret.buildings;
var rows = [];
rows.push({
value: '',
- label: ""
+ label: ''
});
for (var i = 0; i < ut.length; i++) {
rows.push({
@@ -531,8 +605,9 @@
});
}
vue.devtypes = dictlist;
+ vue.regions = uows;
vue.buildings = rows;
- vue.devform.builddingname = '';
+
}
})
}
@@ -550,7 +625,7 @@
$.ajax({
type: "get",
dataType: "json",
- url: encodeURI("/ncmgr/loadDevList?devname=" + rolename.devname + "&pageNo=" + pageno + "&pageSize=" + pagesize + "&buildingname=" + rolename.buildingname + "&devtype=" + rolename.devtype+"®ionname="+rolename.regionname),
+ url: encodeURI("/ncmgr/loadDevList?devname=" + rolename.devname + "&pageNo=" + pageno + "&pageSize=" + pagesize + "&buildingid=" + rolename.buildingid + "&devtype=" + rolename.devtype+"®ionid="+rolename.regionid),
success: function (ret) {
_self.totSize = ret.PageResult.totalCount;
_self.tableData = ret.PageResult.list;
@@ -593,8 +668,17 @@
value: dev[i].deviceid
});
}
+ var regionlist=[];
+ var regiondata = ret.regionsfill;
+ for (var i = 0; i < regiondata.length; i++) {
+ regionlist.push({
+ label: regiondata[i].regionname,
+ value: regiondata[i].regionid
+ });
+ }
+
var buildinglist=[];
- var buildingdata = ret.buildings;
+ var buildingdata = ret.buildingsfill;
for (var i = 0; i < buildingdata.length; i++) {
buildinglist.push({
label: buildingdata[i].buildingname,
@@ -618,11 +702,14 @@
_self.devUpform.usetype = ret.device.usetype;
_self.devUpform.fdevid = ret.device.fdevid;
_self.devUpform.ip = ret.device.ip;
+ _self.devUpform.regionid = ret.device.regionid;
+ _self.devUpform.buildingid = ret.device.buildingid;
}
_self.devtypes = dictlist;
_self.fdevs = devlist;
- _self.buildings = buildinglist;
+ _self.regionsfill = regionlist;
+ _self.buildingsfill = buildinglist;
_self.devusetypes = devUseType;
}
})
@@ -754,4 +841,48 @@
});
}
+ function getRegionBuilding(_self,value){
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url: encodeURI("/ncmgr/getRegionBuilding?regionid=" + value),
+ success: function (ret) {
+ var bList = [];
+ var rB = ret.reBuilding;
+ if (rB!=null) {
+ for (var j = 0; j < rB.length; j++) {
+ bList.push({
+ value: rB[j]["buildingid"],
+ label: rB[j]["buildingname"]
+ });
+ }
+ }
+
+ _self.buildings = bList;
+ }
+ })
+ }
+
+ function getRegionBuildingfill(_self,value) {
+ $.ajax({
+ type: "get",
+ dataType: "json",
+ url: encodeURI("/ncmgr/getRegionBuilding?regionid=" + value),
+ success: function (ret) {
+ var bfList = [];
+ var rBf = ret.reBuilding;
+ if (rBf != null) {
+ for (var j = 0; j < rBf.length; j++) {
+ bfList.push({
+ value: rBf[j]["buildingid"],
+ label: rBf[j]["buildingname"]
+ });
+ }
+ }
+
+ _self.buildingsfill = bfList;
+ }
+ })
+ }
+
</script>
\ No newline at end of file