区域管理和楼栋管理功能完善
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index c5c4872..76433cf 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -48,6 +48,9 @@
 
   @Column(name = "CLOSEDATE", length = 8)
   private String closedate;
+
+  @Column(name = "REGIONID",length = 32)
+  private String regionid;
   @Transient
   private String roleids;
 
@@ -222,4 +225,12 @@
   public void setFather(TOperator father) {
     this.father = father;
   }
+
+  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 f52684a..df099ce 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/controller/NcMgrController.java
@@ -30,7 +30,7 @@
     private NcService ncService;

     @Autowired

     private SystemService systemService;

-    

+

     @RequestMapping("/devindex")

     public String devindex(ModelMap model) {

         return "ncmgr/nc_dev";

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 ba92967..91196b9 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/dao/NcDeviceDao.java
@@ -2,11 +2,10 @@
 

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

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

-import com.supwisdom.dlpay.ncmgr.domain.TRegion;

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

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

 

 import java.util.List;

-import java.util.Map;

 

 public interface NcDeviceDao {

     public Pagination getNcDeviceWithPage(String devname, int pageNo, int pageSize, String buildingname,String regionname, String devtype);

@@ -38,4 +37,6 @@
     public boolean delDevById(int devid);

 

     public List<TNcDevice> findAllNcDevices();

+

+    public TNcDevice getDevByBuildingid(String buildingid);

 }

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 becafab..5a2f752 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
@@ -3,7 +3,7 @@
 import com.supwisdom.dlpay.ncmgr.dao.NcDeviceDao;

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

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

-import com.supwisdom.dlpay.ncmgr.domain.TRegion;

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

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

 import org.springframework.stereotype.Repository;

 import org.springframework.transaction.annotation.Transactional;

@@ -13,7 +13,6 @@
 import javax.persistence.Query;

 import javax.persistence.TypedQuery;

 import java.util.List;

-import java.util.Map;

 

 @Repository

 public class NcDeviceDaoImpl implements NcDeviceDao {

@@ -227,7 +226,7 @@
         if (devid==0){

             sql="select d from TNcDevice d where d.fdevid=:fdevid and d.devno=:devno ";

         }else {

-            sql="select d from TNcDevice d where d.fdevid=:fdevid and d.devno=:devno and d.deviceid!=:devid ";

+            sql="select d from TNcDevice d where d.fdevid=:fdevid and d.devno=:devno and d.deviceid<>:devid ";

         }

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

         if (devid>0){

@@ -319,4 +318,17 @@
         List<TNcDevice> list = query.getResultList();

         return list;

     }

+

+    @Transactional

+    @Override

+    public TNcDevice getDevByBuildingid(String buildingid) {

+        String sql = "select bean from TNcDevice bean where bean.operflag='A' and bean.buildingid=:buildingid";

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

 }

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
index 26c89bc..2552c41 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TBuilding.java
@@ -13,7 +13,6 @@
 public class TBuilding implements java.io.Serializable {
 
 	// Fields
-
 	private String buildingid;
 	private String buildingname;
 	private String synctime;
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 e2ceb63..2df3d9d 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TNcDevice.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TNcDevice.java
@@ -23,7 +23,7 @@
 	@Excel(name = "IP地址")
 	private String ip;
 	private String operflag;
-	private String syncfalg;
+	private String syncflag;
 	private String synctime;
 	private String updtime;
 	@Excel(name = "上级设备编号")
@@ -59,7 +59,7 @@
 		this.devname = devname;
 		this.ip = ip;
 		this.operflag = operflag;
-		this.syncfalg = syncfalg;
+		this.syncflag = syncfalg;
 		this.synctime = synctime;
 		this.updtime = updtime;
 		this.fdevid = fdevid;
@@ -117,11 +117,11 @@
 
 	@Column(name = "SYNCFALG", length = 3)
 	public String getSyncfalg() {
-		return this.syncfalg;
+		return this.syncflag;
 	}
 
 	public void setSyncfalg(String syncfalg) {
-		this.syncfalg = syncfalg;
+		this.syncflag = syncfalg;
 	}
 
 	@Column(name = "SYNCTIME", length = 20)
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 378138d..6c09ff9 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
+++ b/src/main/java/com/supwisdom/dlpay/ncmgr/service/NcService.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.ncmgr.service;

 

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

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

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

 

 import java.util.List;

@@ -58,6 +59,9 @@
     //设备名单重下(修改该设备已同步名单为未同步)

     public void updateForListReload(String devid);

 

+    //根据楼栋id获取设备

+    public TNcDevice getDevByBuildingid(String buildingid);

+

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

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

 

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java b/src/main/java/com/supwisdom/dlpay/ncmgr/service/impl/NcServiceImpl.java
index 9aea87b..551fdfb 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
@@ -3,6 +3,7 @@
 import com.supwisdom.dlpay.ncmgr.dao.*;

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

 import com.supwisdom.dlpay.ncmgr.service.NcService;

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

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

 import org.springframework.beans.factory.annotation.Autowired;

 import org.springframework.stereotype.Service;

@@ -110,7 +111,12 @@
 

     @Override

     public void updateForListReload(String devid) {

+        ncCardListDao.updateForListReload(devid);

+    }

 

+    @Override

+    public TNcDevice getDevByBuildingid(String buildingid) {

+        return ncDeviceDao.getDevByBuildingid(buildingid);

     }

 

     @Override

diff --git a/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java b/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
index f152630..1895d87 100644
--- a/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
+++ b/src/main/java/com/supwisdom/dlpay/query/controller/QueryController.java
@@ -8,8 +8,6 @@
 import com.supwisdom.dlpay.mainservice.bean.TDoordtlInfo;

 import com.supwisdom.dlpay.mainservice.domain.TKey;

 import com.supwisdom.dlpay.mainservice.service.WebInterfaceService;

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

-import com.supwisdom.dlpay.ncmgr.domain.TRegion;

 import com.supwisdom.dlpay.ncmgr.service.NcService;

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

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

@@ -131,7 +129,6 @@
 

     /**

      * 获取流水信息

-     * @param map

      * @param request

      * @param startTranDate

      * @param endTranDate

diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/BuildingBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/BuildingBean.java
new file mode 100644
index 0000000..a5bd29d
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/bean/BuildingBean.java
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.system.bean;

+

+public class BuildingBean {

+    private String buildingid;

+    private String buildingname;

+    private String buildingdesc;

+    private String regionid;

+

+    public String getBuildingid() {

+        return buildingid;

+    }

+

+    public void setBuildingid(String buildingid) {

+        this.buildingid = buildingid;

+    }

+

+    public String getBuildingname() {

+        return buildingname;

+    }

+

+    public void setBuildingname(String buildingname) {

+        this.buildingname = buildingname;

+    }

+

+    public String getBuildingdesc() {

+        return buildingdesc;

+    }

+

+    public void setBuildingdesc(String buildingdesc) {

+        this.buildingdesc = buildingdesc;

+    }

+

+    public String getRegionid() {

+        return regionid;

+    }

+

+    public void setRegionid(String regionid) {

+        this.regionid = regionid;

+    }

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/bean/RegionBean.java b/src/main/java/com/supwisdom/dlpay/system/bean/RegionBean.java
new file mode 100644
index 0000000..7b0eabf
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/bean/RegionBean.java
@@ -0,0 +1,58 @@
+package com.supwisdom.dlpay.system.bean;

+

+public class RegionBean {

+    private String regionid;

+    private String regionname;

+    private Integer level;

+    private String parentid;

+    private String address;

+    private String remarks;

+

+    public String getRegionid() {

+        return regionid;

+    }

+

+    public void setRegionid(String regionid) {

+        this.regionid = regionid;

+    }

+

+    public String getRegionname() {

+        return regionname;

+    }

+

+    public void setRegionname(String regionname) {

+        this.regionname = regionname;

+    }

+

+    public Integer getLevel() {

+        return level;

+    }

+

+    public void setLevel(Integer level) {

+        this.level = level;

+    }

+

+    public String getParentid() {

+        return parentid;

+    }

+

+    public void setParentid(String parentid) {

+        this.parentid = parentid;

+    }

+

+    public String getAddress() {

+        return address;

+    }

+

+    public void setAddress(String address) {

+        this.address = address;

+    }

+

+    public String getRemarks() {

+        return remarks;

+    }

+

+    public void setRemarks(String remarks) {

+        this.remarks = remarks;

+    }

+}

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 a12b97d..3fa49bf 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/SystemController.java
@@ -1,19 +1,28 @@
 package com.supwisdom.dlpay.system.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.domain.TBuilding;

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

+import com.supwisdom.dlpay.ncmgr.service.NcService;

+import com.supwisdom.dlpay.system.bean.BuildingBean;

+import com.supwisdom.dlpay.system.bean.RegionBean;

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

 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.RequestMapping;

-import org.springframework.web.bind.annotation.RequestParam;

-import org.springframework.web.bind.annotation.ResponseBody;

+import org.springframework.web.bind.annotation.*;

 

 import javax.servlet.http.HttpServletRequest;

+import javax.servlet.http.HttpServletResponse;

 import java.util.HashMap;

 import java.util.List;

 import java.util.Map;

@@ -25,6 +34,8 @@
 

     @Autowired

     private SystemService systemService;

+    @Autowired

+    private NcService ncService;

 

     @RequestMapping("/dictionary")

     public String dictionary(ModelMap model){

@@ -186,4 +197,376 @@
         }

         return map;

     }

+

+    /**

+     * 分页获取区域类别

+     * @param request

+     * @param response

+     * @param pageNo

+     * @param pageSize

+     * @param regionname

+     * @param operUser

+     * @return

+     */

+    @RequestMapping("/loadRegionList")

+    @ResponseBody

+    public Map loadRegionList(HttpServletRequest request,

+                               HttpServletResponse response,

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

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

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

+                               @AuthenticationPrincipal TOperator operUser){

+        Map map = new HashMap();

+        try{

+            String opertype = operUser.getOpertype();

+            Pagination page = null;

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

+                page = systemService.getSystemRegionList(regionname, pageNo, pageSize);

+            }else {

+                page = systemService.getOperatorRegionList(regionname, operUser.getRegionid(), pageNo, pageSize);

+            }

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

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+

+    /**

+     * 删除区域

+     * @param regionid

+     * @param request

+     * @param response

+     * @return

+     */

+    @RequestMapping("/deleteRegion")

+    @ResponseBody

+    public Map deleteRegion(@RequestParam(value = "regionid") String regionid,

+                            HttpServletRequest request, HttpServletResponse response){

+        //TODO 返回无权限删除此区域

+        Map map = new HashMap();

+        String message="";

+        try{

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

+            List<TRegion> regionByParentId = systemService.getRegionByParentId(regionid);

+            if (building!=null && regionByParentId!=null){

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

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

+                return map;

+            }

+            boolean flag = systemService.deleteRegionById(regionid);

+            if (flag==false){

+                message="删除区域失败!";

+            }

+

+        }catch (Exception e){

+            e.printStackTrace();

+            message="删除区域出错!";

+        }

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

+        return map;

+    }

+

+    /**

+     * 获取指定区域信息

+     * @param regionid

+     * @param operUser

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping("/loadRegionForUpdate")

+    public Map loadRegionForUpdate(@RequestParam(value = "regionid") String regionid,

+                                   @AuthenticationPrincipal TOperator operUser){

+        Map map = new HashMap();

+        try {

+            TRegion region = systemService.getRegionById(regionid);

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

+            List<TDictionaryId> dicts = systemService.findTDictionaryByType(6);//区域级别

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

+            if (region!=null) {

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

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

+            }else {

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

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

+            }

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+    /**

+     * 保存区域

+     * @param postData

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping(value = "/addRegion", method = {RequestMethod.POST})

+    public Map addRegion (@RequestBody RegionBean postData){

+        Map map = new HashMap();

+        try{

+            TRegion regionById = systemService.getRegionById(postData.getRegionid());

+            if (regionById!=null){

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

+                return map;

+            }

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

+            if (regionByName!=null){

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

+                return map;

+            }

+            TRegion region= new TRegion();

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

+            region.setAddress(postData.getAddress());

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

+            region.setParentid(postData.getParentid());

+            region.setRegionname(postData.getRegionname());

+            region.setRemarks(postData.getRemarks());

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

+            region.setParentname(tRegion.getRegionname());

+            region.setFlag(1);

+

+            systemService.saveRegion(region);

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

+        }catch (Exception e){

+            e.printStackTrace();

+            map.put("errStr", "保存区域失败!"+e.getMessage());

+        }

+        return map;

+    }

+

+    /**

+     * 修改区域

+     * @param postData

+     * @return

+     */

+    @RequestMapping(value = "/updateRegion", method = {RequestMethod.POST})

+    @ResponseBody

+    public Map updateRegion(@RequestBody RegionBean postData){

+        Map map = new HashMap();

+        try {

+            if (postData == null) {

+                map.put("errStr", "请先选择区域,然后再修改!");

+                return map;

+            }

+            TRegion regionByName = systemService.getRegionByNameAndId(postData.getRegionname(), postData.getRegionid());

+            if (regionByName!=null){

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

+                return map;

+            }

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

+            region.setAddress(postData.getAddress());

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

+            region.setParentid(postData.getParentid());

+            region.setRegionname(postData.getRegionname());

+            region.setRemarks(postData.getRemarks());

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

+            region.setParentname(tRegion.getParentname());

+            region.setFlag(1);

+

+            systemService.updateRegion(region);

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

+        }catch (Exception e){

+            e.printStackTrace();

+            map.put("errStr", "区域修改失败!"+e.getMessage());

+        }

+        return map;

+    }

+

+    /**

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

+     * @param level

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping("/getFregion")

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

+        Map map = new HashMap();

+        try{

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

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

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+    /**

+     * 根据查询条件分页获取楼栋

+     * @param request

+     * @param response

+     * @param pageNo

+     * @param pageSize

+     * @param regionid

+     * @param buildingname

+     * @param operUser

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping("/loadBuildingList")

+    public Map loadBuildingList(HttpServletRequest request,

+                                HttpServletResponse response,

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

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

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

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

+                                @AuthenticationPrincipal TOperator operUser){

+        Map map = new HashMap();

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

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

+                TRegion region = systemService.getRegionById(operUser.getRegionid());

+                regionList.add(region);

+            }

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

+

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+    /**

+     * 根据楼栋id获取楼栋信息填充

+     * @param buildingid

+     * @param operUser

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping(value = "/loadBuildingForUpdate" )

+    public Map loadBuildingForUpdate(@RequestParam(value = "buildingid") String buildingid,

+                                     @AuthenticationPrincipal TOperator operUser){

+        Map map = new HashMap();

+        try{

+            String opertype = operUser.getOpertype();

+            TBuilding building = systemService.getBuildingById(buildingid);

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

+            List<TRegion> regionList = null;

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

+                regionList = systemService.getAllRegions();

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

+                TRegion region = systemService.getRegionById(operUser.getRegionid());

+                regionList.add(region);

+            }

+            map.put("regionslist", regionList);

+

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return map;

+    }

+

+    /**

+     * 保存楼栋

+     * @param postData

+     * @return

+     */

+    @ResponseBody

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

+    public Map addBuilding(@RequestBody BuildingBean postData){

+        Map map = new HashMap();

+        try {

+            TBuilding buildingById = systemService.getBuildingById(postData.getBuildingid());

+            if (buildingById!=null){

+                map.put("errStr", "楼栋编号已经存在,请修改!");

+                return map;

+            }

+            TBuilding buildingByName = systemService.getBuildingByName(postData.getBuildingname());

+            if (buildingByName!=null){

+                map.put("errStr", "楼栋名称已经存在,请修改!");

+                return map;

+            }

+            String now = DateUtil.getNow();

+            TBuilding tBuilding = new TBuilding();

+            tBuilding.setBuildingid(postData.getBuildingid());

+            tBuilding.setBuildingname(postData.getBuildingname());

+            tBuilding.setBuildingdesc(postData.getBuildingdesc());

+            tBuilding.setRegionid(postData.getRegionid());

+            tBuilding.setSynctime(now);

+            tBuilding.setUpdtime(now);

+            tBuilding.setFlag("A");

+

+            systemService.saveBuilding(tBuilding);

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

+        }catch (Exception e){

+            e.printStackTrace();

+            map.put("errStr", "保存楼栋失败");

+        }

+        return map;

+    }

+

+    /**

+     * 修改楼栋

+     * @param postData

+     * @return

+     */

+    @ResponseBody

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

+    public Map updateBuilding(@RequestBody BuildingBean postData){

+        Map map = new HashMap();

+        try{

+            if (postData==null){

+                map.put("errStr", "请先选择楼栋再修改!");

+            }

+            TBuilding buildingByNameAndId = systemService.getBuildingByNameAndId(postData.getBuildingname(), postData.getBuildingid());

+            if (buildingByNameAndId!=null){

+                map.put("errStr", "楼栋名称已经存在,请修改!");

+                return map;

+            }

+            String now = DateUtil.getNow();

+            TBuilding building = systemService.getBuildingById(postData.getBuildingid());

+            building.setBuildingname(postData.getBuildingname());

+            building.setBuildingdesc(postData.getBuildingdesc());

+            building.setRegionid(postData.getRegionid());

+            building.setSynctime(now);

+            building.setUpdtime(now);

+            building.setFlag("A");

+

+            systemService.updateBuilding(building);

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

+        }catch (Exception e){

+            e.printStackTrace();

+            map.put("errStr", "楼栋修改失败"+e.getMessage());

+        }

+        return map;

+    }

+

+    /**

+     * 删除楼栋

+     * @param buildingid

+     * @return

+     */

+    @ResponseBody

+    @RequestMapping("/deleteBuilding")

+    public Map deleteBuilding(@RequestParam(value = "buildingid") String buildingid){

+        Map map = new HashMap();

+        String message="";

+        try{

+            TNcDevice devByBuildingid = ncService.getDevByBuildingid(buildingid);

+            if (devByBuildingid!=null){

+                message="该楼栋已被绑定!";

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

+                return map;

+            }

+            boolean b = systemService.delBuilding(buildingid);

+            if (b==false){

+                message="删除楼栋失败!";

+            }

+

+        }catch (Exception e){

+            e.printStackTrace();

+            message="删除楼栋错误"+e.getMessage();

+        }

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

+        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
new file mode 100644
index 0000000..ab897e2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/BuildingDao.java
@@ -0,0 +1,24 @@
+package com.supwisdom.dlpay.system.dao;

+

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

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

+

+import java.util.List;

+

+public interface BuildingDao {

+    public List<TBuilding> getBuildingByRegionId(String regionid);

+

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

+

+    public TBuilding getBuildingById(String buildingid);

+

+    public TBuilding getBuildingByName(String buildingname);

+

+    public boolean saveBuilding(TBuilding bean);

+

+    public TBuilding getBuildingByNameAndId(String buildingname,String buildingid);

+

+    public boolean updateBuilding(TBuilding bean);

+

+    public boolean updateBuildingFlag(String buildingid);

+}

diff --git a/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
new file mode 100644
index 0000000..5c39b62
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/RegionDao.java
@@ -0,0 +1,31 @@
+package com.supwisdom.dlpay.system.dao;

+

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

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

+

+import java.util.List;

+

+public interface RegionDao {

+    public Pagination getSystemRegionList(String regionname, int pageNo, int pageSize);

+

+    public Pagination getOperatorRegionList(String regionname,String regionid,int pageNo,int pageSize);

+

+    //根据id修改指定区域状态flag为0

+    public boolean updateRegionFlag(String regionid);

+

+    public TRegion getRegionById(String regionid);

+

+    public List<TRegion> getRegionListByLevel(int level);

+

+    public List<TRegion> getAllRegions();

+

+    public TRegion getRegionByName(String regionname);

+

+    public boolean saveRegion(TRegion bean);

+

+    public TRegion getRegionByNameAndId(String regionname,String regionid);

+

+    public boolean updateRegion(TRegion bean);

+

+    public List<TRegion> getRegionByParentId(String parentid);

+}

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
new file mode 100644
index 0000000..90c93f2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/BuildingDaoImpl.java
@@ -0,0 +1,179 @@
+package com.supwisdom.dlpay.system.dao.impl;

+

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

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

+import com.supwisdom.dlpay.system.dao.BuildingDao;

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

+import org.springframework.stereotype.Repository;

+import org.springframework.transaction.annotation.Transactional;

+

+import javax.persistence.EntityManager;

+import javax.persistence.PersistenceContext;

+import javax.persistence.Query;

+import javax.persistence.TypedQuery;

+import java.util.List;

+@Repository

+public class BuildingDaoImpl implements BuildingDao {

+    @PersistenceContext

+    EntityManager entityManager;

+

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

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

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

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

+            return list;

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public Pagination getSystemBuildingList(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' ";

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

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

+        }

+        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 = getSystemBuildingListCount(regionid,buildingname);

+        page.setTotalCount(totalCount);

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

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

+        }

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public TBuilding getBuildingByName(String buildingname) {

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

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean saveBuilding(TBuilding bean) {

+        boolean flag=false;

+        try {

+            entityManager.persist(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public TBuilding getBuildingByNameAndId(String buildingname, String buildingid) {

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

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

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean updateBuilding(TBuilding bean) {

+        boolean flag = false;

+        try {

+            entityManager.merge(bean);

+            flag = true;

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public boolean updateBuildingFlag(String buildingid) {

+        boolean flag = false;

+        try {

+            String sql = "update t_building set flag = 'D' where buildingid = ?1 ";

+            Query query = entityManager.createNativeQuery(sql);

+            query.setParameter(1, buildingid);

+            query.executeUpdate();

+            flag = true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+}

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
new file mode 100644
index 0000000..fe077a8
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/system/dao/impl/RegionDaoImpl.java
@@ -0,0 +1,242 @@
+package com.supwisdom.dlpay.system.dao.impl;

+

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

+import com.supwisdom.dlpay.system.dao.RegionDao;

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

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

+import org.springframework.stereotype.Repository;

+import org.springframework.transaction.annotation.Transactional;

+

+import javax.persistence.EntityManager;

+import javax.persistence.PersistenceContext;

+import javax.persistence.Query;

+import javax.persistence.TypedQuery;

+import java.util.List;

+

+@Repository

+public class RegionDaoImpl implements RegionDao {

+

+    @PersistenceContext

+    EntityManager entityManager;

+

+    @Transactional

+    @Override

+    public Pagination getSystemRegionList(String regionname, int pageNo, int pageSize) {

+        String sql = "select bean from TRegion bean where 1>0 and bean.flag=1 ";

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

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

+        }

+

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

+

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

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

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

+        }

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getSystemRegionListCount(regionname);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+    private int getSystemRegionListCount(String regionname){

+        String sql = "select count(*) from TB_Region where 1>0 and flag=1 ";

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

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

+        }

+        Query query = entityManager.createNativeQuery(sql);

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

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

+        }

+        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 getOperatorRegionList(String regionname, String regionid, int pageNo, int pageSize) {

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

+                " from Tb_Region bean where 1>0 and bean.flag=1 ";

+        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(regionname)){

+            sql += " and tmp.regionname like :regionname ";

+        }

+        sql += ") order by bean.level";

+

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

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

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

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

+        }

+

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

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

+        query.setMaxResults(pageSize);

+        Pagination page = new Pagination();

+        page.setPageNo(pageNo);

+        page.setPageSize(pageSize);

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

+        page.setList(list);

+        int totalCount = getOperatorRegionListCount(regionname,regionid);

+        page.setTotalCount(totalCount);

+        return page;

+    }

+

+

+    private int getOperatorRegionListCount(String regionname,String regionid){

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

+        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(regionname)){

+            sql += " and tmp.regionname like :regionname";

+        }

+        sql += ") order by level";

+        Query query = entityManager.createNativeQuery(sql);

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

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

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

+        }

+        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 boolean updateRegionFlag(String regionid) {

+        boolean flag = false;

+        try {

+            String sql = "update tb_region set flag = 0 where regionid = ?1 ";

+            Query query = entityManager.createNativeQuery(sql);

+            query.setParameter(1, regionid);

+            query.executeUpdate();

+            flag = true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public TRegion getRegionById(String regionid) {

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

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public List<TRegion> getRegionListByLevel(int level) {

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

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

+        query.setParameter("level" , level-1);

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

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

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

+            return list;

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public TRegion getRegionByName(String regionname) {

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

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean saveRegion(TRegion bean) {

+        boolean flag=false;

+        try {

+            entityManager.persist(bean);

+            flag=true;

+        }catch (Exception e){

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public TRegion getRegionByNameAndId(String regionname, String regionid) {

+        String sql = "select bean from TRegion bean where bean.regionname = :regionname and bean.flag=1 and bean.regionid <>:regionid";

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

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

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

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

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

+            return list.get(0);

+        }

+        return null;

+    }

+

+    @Transactional

+    @Override

+    public boolean updateRegion(TRegion bean) {

+        boolean flag = false;

+        try {

+            entityManager.merge(bean);

+            flag = true;

+        } catch (Exception e) {

+            e.printStackTrace();

+        }

+        return flag;

+    }

+

+    @Transactional

+    @Override

+    public List<TRegion> getRegionByParentId(String parentid) {

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

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

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

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

+        return list;

+    }

+

+}

diff --git a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java b/src/main/java/com/supwisdom/dlpay/system/domain/TRegion.java
similarity index 67%
rename from src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java
rename to src/main/java/com/supwisdom/dlpay/system/domain/TRegion.java
index 66edb0f..7513f94 100644
--- a/src/main/java/com/supwisdom/dlpay/ncmgr/domain/TRegion.java
+++ b/src/main/java/com/supwisdom/dlpay/system/domain/TRegion.java
@@ -1,15 +1,13 @@
-package com.supwisdom.dlpay.ncmgr.domain;

+package com.supwisdom.dlpay.system.domain;

 

 import javax.persistence.Column;

 import javax.persistence.Entity;

 import javax.persistence.Id;

 import javax.persistence.Table;

-import java.io.Serializable;

 

 @Entity

 @Table(name = "TB_REGION")

-public class TRegion implements Serializable {

-

+public class TRegion {

     private String regionid;

     private String address;

     private Integer level;

@@ -20,7 +18,7 @@
     private Integer flag;

 

     @Id

-    @Column(name = "REGIONID", unique = true, nullable = false, length = 32)

+    @Column(name = "REGIONID", unique = true, nullable = false, scale = 0)

     public String getRegionid() {

         return regionid;

     }

@@ -29,7 +27,7 @@
         this.regionid = regionid;

     }

 

-    @Column(name = "ADDRESS", length = 255)

+    @Column(name = "ADDRESS",length = 255)

     public String getAddress() {

         return address;

     }

@@ -38,7 +36,7 @@
         this.address = address;

     }

 

-    @Column(name = "LEVEL", length = 32)

+    @Column(name = "LEVEL")

     public Integer getLevel() {

         return level;

     }

@@ -47,7 +45,7 @@
         this.level = level;

     }

 

-    @Column(name = "PARENTID", length = 32)

+    @Column(name = "PARENTID",length = 32)

     public String getParentid() {

         return parentid;

     }

@@ -56,7 +54,7 @@
         this.parentid = parentid;

     }

 

-    @Column(name = "REGIONNAME", length = 200)

+    @Column(name = "REGIONNAME",length = 200)

     public String getRegionname() {

         return regionname;

     }

@@ -65,7 +63,7 @@
         this.regionname = regionname;

     }

 

-    @Column(name = "REMARKS", length = 255)

+    @Column(name = "REMARKS",length = 255)

     public String getRemarks() {

         return remarks;

     }

@@ -74,7 +72,7 @@
         this.remarks = remarks;

     }

 

-    @Column(name = "PARENTNAME", length = 200)

+    @Column(name = "PARENTNAME",length = 200)

     public String getParentname() {

         return parentname;

     }

@@ -83,7 +81,7 @@
         this.parentname = parentname;

     }

 

-    @Column(name = "FLAG", length = 32)

+    @Column(name = "FLAG")

     public Integer getFlag() {

         return flag;

     }

@@ -91,4 +89,18 @@
     public void setFlag(Integer flag) {

         this.flag = flag;

     }

+

+    public TRegion(String regionid, String address, Integer level, String parentid, String regionname, String remarks, String parentname, Integer flag) {

+        this.regionid = regionid;

+        this.address = address;

+        this.level = level;

+        this.parentid = parentid;

+        this.regionname = regionname;

+        this.remarks = remarks;

+        this.parentname = parentname;

+        this.flag = flag;

+    }

+

+    public TRegion() {

+    }

 }

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 24ec522..8adf9ed 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/SystemService.java
@@ -1,9 +1,11 @@
 package com.supwisdom.dlpay.system.service;

 

 

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

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

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

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

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

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

 

 import java.util.List;

@@ -31,5 +33,61 @@
     //根据操作员id获取有权限的操作员

     public List<String> findOperatorsByFopercode(String operid);

 

+    //根据查询条件分页获取所有区域

+    public Pagination getSystemRegionList(String regionname,int pageNo,int pageSize);

+

+    //根据查询条件以及管理员区域分页获取区域

+    public Pagination getOperatorRegionList(String regionname,String regionid,int pageNo,int pageSize);

+

+    //根据区域id查询楼栋

+    public List<TBuilding> getBuildingByRegionId(String regionid);

+

+    //根据id删除区域--修改状态flag为0

+    public boolean deleteRegionById(String regionid);

+

+    //根据id获取区域

+    public TRegion getRegionById(String regionid);

+

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

+    public List<TRegion> getRegionListByLevel(int level);

+

+    //获取所有区域

+    public List<TRegion> getAllRegions();

+

+    //根据名称获取区域

+    public TRegion getRegionByName(String regionname);

+

+    //保存区域

+    public boolean saveRegion(TRegion bean);

+

+    //根据id和名称获取非本id的相同名称区域

+    public TRegion getRegionByNameAndId(String regionname,String regionid);

+

+    //修改区域

+    public boolean updateRegion(TRegion bean);

+

+    //根据parentid获取区域

+    public List<TRegion> getRegionByParentId(String parentid);

+

+    //根据查询条件分页获取所有楼栋

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

+

+    //根据id获取楼栋信息

+    public TBuilding getBuildingById(String buildingid);

+

+    //根据名称获取楼栋信息

+    public TBuilding getBuildingByName(String buildingname);

+

+    //保存楼栋

+    public boolean saveBuilding(TBuilding bean);

+

+    //根据id和名称获取非本id的相同名称楼栋

+    public TBuilding getBuildingByNameAndId(String buildingname,String buildingid);

+

+    //修改楼栋

+    public boolean updateBuilding(TBuilding bean);

+

+    //根据id删除楼栋---修改flag为D

+    public boolean delBuilding(String buildingid);

 

 }

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 6b47410..1f48e88 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
@@ -1,10 +1,14 @@
 package com.supwisdom.dlpay.system.service.impl;

 

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

+import com.supwisdom.dlpay.system.dao.BuildingDao;

 import com.supwisdom.dlpay.system.dao.DictionaryDao;

 import com.supwisdom.dlpay.system.dao.OperatorDao;

+import com.supwisdom.dlpay.system.dao.RegionDao;

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

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

 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 org.springframework.beans.factory.annotation.Autowired;

@@ -18,6 +22,10 @@
     private DictionaryDao dictionaryDao;

     @Autowired

     private OperatorDao operatorDao;

+    @Autowired

+    private RegionDao regionDao;

+    @Autowired

+    private BuildingDao buildingDao;

 

     @Override

     public Pagination findDictionary(String dicttype, String dictcaption, Integer pageNo, Integer pageSize) {

@@ -62,4 +70,99 @@
         return operatorDao.findOperatorsByFopercode(operid);

     }

 

+    @Override

+    public Pagination getSystemRegionList(String regionname, int pageNo, int pageSize) {

+        return regionDao.getSystemRegionList(regionname, pageNo, pageSize);

+    }

+

+    @Override

+    public Pagination getOperatorRegionList(String regionname, String regionid, int pageNo, int pageSize) {

+        return regionDao.getOperatorRegionList(regionname, regionid, pageNo, pageSize);

+    }

+

+    @Override

+    public List<TBuilding> getBuildingByRegionId(String regionid) {

+        return buildingDao.getBuildingByRegionId(regionid);

+    }

+

+    @Override

+    public boolean deleteRegionById(String regionid) {

+        return regionDao.updateRegionFlag(regionid);

+    }

+

+    @Override

+    public TRegion getRegionById(String regionid) {

+        return regionDao.getRegionById(regionid);

+    }

+

+    @Override

+    public List<TRegion> getRegionListByLevel(int level) {

+        return regionDao.getRegionListByLevel(level);

+    }

+

+    @Override

+    public List<TRegion> getAllRegions() {

+        return regionDao.getAllRegions();

+    }

+

+    @Override

+    public TRegion getRegionByName(String regionname) {

+        return regionDao.getRegionByName(regionname);

+    }

+

+    @Override

+    public boolean saveRegion(TRegion bean) {

+        return regionDao.saveRegion(bean);

+    }

+

+    @Override

+    public TRegion getRegionByNameAndId(String regionname, String regionid) {

+        return regionDao.getRegionByNameAndId(regionname, regionid);

+    }

+

+    @Override

+    public boolean updateRegion(TRegion bean) {

+        return regionDao.updateRegion(bean);

+    }

+

+    @Override

+    public List<TRegion> getRegionByParentId(String parentid) {

+        return regionDao.getRegionByParentId(parentid);

+    }

+

+    @Override

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

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

+    }

+

+    @Override

+    public TBuilding getBuildingById(String buildingid) {

+        return buildingDao.getBuildingById(buildingid);

+    }

+

+    @Override

+    public TBuilding getBuildingByName(String buildingname) {

+        return buildingDao.getBuildingByName(buildingname);

+    }

+

+    @Override

+    public boolean saveBuilding(TBuilding bean) {

+        return buildingDao.saveBuilding(bean);

+    }

+

+    @Override

+    public TBuilding getBuildingByNameAndId(String buildingname, String buildingid) {

+        return buildingDao.getBuildingByNameAndId(buildingname, buildingid);

+    }

+

+    @Override

+    public boolean updateBuilding(TBuilding bean) {

+        return buildingDao.updateBuilding(bean);

+    }

+

+    @Override

+    public boolean delBuilding(String buildingid) {

+        return buildingDao.updateBuildingFlag(buildingid);

+    }

+

 }

diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html
index 637e8f2..848e8a7 100755
--- a/src/main/resources/templates/index.html
+++ b/src/main/resources/templates/index.html
@@ -22,11 +22,12 @@
 

 

     <!--<script type="text/javascript" th:src="@{/static/libs/jquery/jquery-3.2.1.min.js}"></script>-->

+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>

     <script type="text/javascript" th:src="@{/static/libs/q.js}"></script>

     <script type="text/javascript" th:src="@{/static/libs/layui/layui.js}"></script>

-    <!--<script type="text/javascript" th:src="@{/static/libs/zTree/js/jquery.ztree.all-3.5.min.js}"></script>-->

+    <script type="text/javascript" th:src="@{/static/libs/zTree/js/jquery.ztree.all-3.5.min.js}"></script>

     <script type="text/javascript" th:src="@{/static/libs/custom.js}"></script>

-    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>

+

     <script type="text/javascript" th:src="@{/static/res/assets/plugins/bootstrap/js/bootstrap.min.js}"></script>

     <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.form.js}"></script>

     <script type="text/javascript" th:src="@{/static/res/assets/plugins/validator/validator.js}"></script>

diff --git a/src/main/resources/templates/system/building.html b/src/main/resources/templates/system/building.html
new file mode 100644
index 0000000..01bdd0f
--- /dev/null
+++ b/src/main/resources/templates/system/building.html
@@ -0,0 +1,380 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">楼栋管理</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">集控中心</a>
+          <a><cite>楼栋管理</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div id="buildingApp">
+            <el-form :inline="true" ref="buildingform" :model="buildingform" data-parsley-validate class="form-horizontal form-label-left">
+                <div class="col-md-3" >
+                    <div class="form-group">
+                        <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="请选择"
+                            > <el-option v-for="item in regionlist"
+                                         :key="item.value" :label="item.label" :value="item.value">
+                            </el-option> </el-select>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="col-md-4">
+                    <div class="form-group">
+                        <label class="control-label col-md-5 col-sm-12 col-xs-12"
+                               style="font-size: 14px;">楼栋名称:</span>
+                        </label>
+                        <div class="col-md-7 col-sm-12 col-xs-12">
+                            <el-input v-model="buildingform.buildingname" id="buildingname"></el-input>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="col-md-3">
+                    <div class="form-group">
+                        <button type="button" class="btn btn-info" @click="query" id="qrybtn">查 询</button>
+                        <button class="btn btn-primary" type="button" @click="addBuilding">添加楼栋</button>
+                    </div>
+                </div>
+            </el-form>
+
+            <template>
+                <el-table
+                        ref="singleTable"
+                        :data="tableData"
+                        highlight-current-row
+                        @current-change="currRowChange"
+                        stripe
+                        max-height="2000"
+                        border
+                        style="width: 100%;">
+                    <el-table-column
+                            prop="buildingid"
+                            label="楼栋编号"
+                            sortable
+                            width="120">
+                    </el-table-column>
+                    <el-table-column
+                            prop="buildingname"
+                            label="楼栋名称"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            prop="buildingdesc"
+                            label="楼栋描述"
+                            width="150">
+                    </el-table-column>
+                    <el-table-column
+                            prop="updtime"
+                            label="更新时间"
+                            min-width="180"
+                            :formatter="updform">
+                    </el-table-column>
+                    <el-table-column
+                            prop="regionid"
+                            label="区域编号"
+                            width="100">
+                    </el-table-column>
+                    <el-table-column
+                            fixed="right"
+                            label="操作"
+                            width="213">
+                        <template scope="scope">
+                            <button type="button" class="btn btn-info btn-xs" title="编辑"
+                                    @click="editBuilding(scope.row.buildingid)">编辑
+                            </button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除"
+                                    @click="delBuilding(scope.row.buildingid)">删除
+                            </button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="clearfix"></div>
+                <el-pagination
+                        @size-change="handleSizeChange"
+                        @current-change="currPageChange"
+                        :current-page="currPage"
+                        :page-sizes="[10, 20, 50, 100]"
+                        :page-size="pageSize"
+                        layout="prev, pager, next,sizes, jumper,total"
+                        :total="totSize">
+                </el-pagination>
+            </template>
+
+            <el-dialog :title="buildingtitle" :visible.sync="dialogFormVisible" size="tiny">
+                <el-form ref="buildingDiaForm" :model="buildingDiaForm" :rules="rules" label-width="120px">
+                    <el-form-item label="楼栋编号:" prop="buildingid">
+                        <el-col :span="22">
+                            <el-input v-model="buildingDiaForm.buildingid" ></el-input>
+                        </el-col>
+                    </el-form-item>
+                    <el-form-item label="楼栋名称:" prop="buildingname">
+                        <el-col :span="22">
+                            <el-input v-model="buildingDiaForm.buildingname" ></el-input>
+                        </el-col>
+                    </el-form-item>
+                    <el-form-item label="信息描述:" prop="buildingdesc">
+                        <el-col :span="22">
+                            <el-input v-model="buildingDiaForm.buildingdesc"></el-input>
+                        </el-col>
+                    </el-form-item>
+                    <el-form-item label="所在区域:" prop="regionid">
+                        <el-col :span="22">
+                            <el-col :span="18">
+                                <el-select v-model="buildingDiaForm.regionid" style="width: 187px;"
+                                           filterable
+                                           placeholder="请选择">
+                                    <el-option
+                                            v-for="regionid in regions"
+                                            :key="regionid.value"
+                                            :label="regionid.label"
+                                            :value="regionid.value">
+                                    </el-option>
+                                </el-select>
+                            </el-col>
+                        </el-col>
+                    </el-form-item>
+
+
+                </el-form>
+                <div slot="footer" class="dialog-footer">
+                    <el-button @click="resetForm('buildingDiaForm') ">取 消</el-button>
+                    <el-button type="primary" @click="saveBuilding('buildingDiaForm')">确 定</el-button>
+                </div>
+            </el-dialog>
+        </div>
+    </div>
+</div>
+
+<script>
+    var vue = new Vue({
+        el: '#buildingApp',
+        data:{
+            tableData: [],
+            currPage: 1,
+            pageSize:10,
+            totSize:0,
+            currentRow: null,
+            regionlist:[],
+            regions:[],
+            dialogFormVisible: false,
+            buildingtitle:'',
+            buildingDiaForm:{
+                buildingid:'',
+                buildingname:'',
+                buildingdesc:'',
+                regionid:'',
+            },
+            buildingform:{
+                regionid:'',
+                buildingname:'',
+            },
+
+            rules: {
+                buildingid: [
+                    { required: true, message: '楼栋编号不能为空', trigger: 'blur' },
+                ],
+                buildingname:[
+                    { required: true, message: '楼栋名称不能为空', trigger: 'blur' },
+                ],
+                regionid:[
+                    { required: true, message: '所在区域不能为空', trigger: 'blur' },
+                ]
+            },
+
+        },
+        methods: {
+            handleSizeChange:function(val) {
+                this.pageSize=val;
+                commonQuery(this,this.buildingform.regionid,this.buildingform.buildingname,this.currPage,val);
+            },
+            currPageChange:function(val) {
+                this.currPage=val;
+                commonQuery(this,this.buildingform.regionid,this.buildingform.buildingname,this.currPage,this.pageSize);
+            },
+            currRowChange:function(val) {
+                this.currentRow = val;
+            },
+            query:function () {
+                this.pagesize=10;
+                this.currPage=1;
+                commonQuery(this,this.buildingform.regionid,this.buildingform.buildingname,this.currPage,this.pageSize);
+            },
+            addBuilding:function () {
+                getFillData(this,"-1");
+                this.dialogFormVisible = true;
+                this.buildingtitile="添加楼栋";
+            },
+            resetForm:function() {
+                this.$refs[formName].resetFields();
+                this.dialogFormVisible = false;
+            },
+            saveBuilding:function (formName) {
+                var _that=this;
+                var vali = false;
+                this.$refs[formName].validate(
+                    function(valid){
+                        if (valid){
+                            vali = true;
+                        }else{
+                            vali=false;
+                        }
+                    });
+                if (vali==true){
+                    saveData(_that,_that.buildingDiaForm,formName);
+                }
+            },
+            delBuilding:function(buildingid){
+                deletedata(buildingid);
+            },
+
+            editBuilding:function (buildingid) {
+                getFillData(this,buildingid);
+                this.dialogFormVisible = true;
+                this.buildingtitile="修改楼栋"
+            },
+            updform: function (row, column, cellValue) {
+                if (row.updtime != null) {
+                    return timeformatter(row.updtime);
+                }
+            }
+        },
+        created:function(){
+            var _self=this;
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:"/system/loadBuildingList",
+                success:function(ret){
+                    _self.totSize=ret.pageResult.totalCount;
+                    _self.tableData=ret.pageResult.list;
+                    
+                    if (ret.regionList!=null) {
+                        var rlist = ret.regionList;
+                        var rows = [];
+                        for (var i=0;i<rlist.length;i++){
+                            rows.push({
+                                value: rlist[i].regionid,
+                                label: rlist[i].regionname
+                            });
+                        }
+                        vue.regionlist = rows;
+                    }
+                }
+            })
+        }
+    })
+
+    function commonQuery(_self,regionid,buildingname,pageno,pagesize) {
+        $.ajax({
+            type:"get",
+            dataType:"json",
+            url:encodeURI("/system/loadBuildingList?regionid="
+                +regionid+"&buildingname="+buildingname
+                +"&pageNo="+pageno+"&pageSize="+pagesize),
+            success:function(ret){
+                _self.totSize=ret.pageResult.totalCount;
+                _self.tableData=ret.pageResult.list;
+            }
+        })
+    }
+
+    function getFillData(_self, id) {
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/system/loadBuildingForUpdate?buildingid=" + id),
+            success: function (ret) {
+                var regionslist = [];
+                var rl = ret.regionslist;
+                for (var j = 0; j < rl.length; j++) {
+                    regionslist.push({
+                        value: rl[j]["regionid"],
+                        label: rl[j]["regionname"]
+                    });
+                }
+
+                if (ret.building != null) {
+                    _self.buildingDiaForm.buildingid = ret.building.buildingid;
+                    _self.buildingDiaForm.buildingname = ret.building.buildingname;
+                    _self.buildingDiaForm.buildingdesc = ret.building.buildingdesc;
+                    _self.buildingDiaForm.regionid = ret.region.regionid;
+                }
+
+                _self.regions = regionslist;
+            }
+        })
+    }
+
+    function saveData(_that,formdata,formName) {
+        var url = null;
+        if(vue.buildingtitile == "添加楼栋"){
+            url = encodeURI("/system/addBuilding");
+        }
+        if(vue.buildingtitile == "修改楼栋"){
+            url = encodeURI("/system/updateBuilding")
+        }
+        var token=$("meta[name='_csrf_token']").attr("value");
+        $.ajax({
+            type: "POST",
+            url: url,
+            dataType: "json",
+            contentType: "application/json",
+            headers: {
+                'Accept': 'application/json',
+                'Content-Type': 'application/json',
+                'X-CSRF-TOKEN':token,
+            },
+            data: JSON.stringify(formdata),
+            success: function (data) {
+                if (data.errStr != "") {
+                    layer.msg(data.errStr, {icon: 2,time:1000});
+                } else {
+                    layer.msg('保存信息成功!', {icon: 1,time:1000});
+                    refreshThisTable();
+                    _that.$refs[formName].resetFields();
+                    _that.dialogFormVisible = false;
+                }
+            }
+        });
+    }
+
+    function deletedata(buildingid){
+        layer.confirm('是否删除该楼栋', {icon: 3, title:'请确认',offset:'30%'},function(index){
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:"/system/deleteBuilding?buildingid="+buildingid,
+                success:function(ret){
+                    if(ret.message == undefined){
+                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
+                        window.location="login";
+                        return;
+                    }
+                    if (ret.message != "") {
+                        layer.msg(ret.message, {icon: 2, time: 1000});
+                    } else {
+                        layer.msg('删除成功', {icon: 1, time: 1000});
+                        refreshThisTable();
+                    }
+                }
+            })
+        })
+    }
+
+
+    function refreshThisTable(){
+        $("#qrybtn").click();
+    };
+
+    function timeformatter(time) {
+
+        return time.substr(0, 4) + '-' + time.substr(4, 2) + '-' + time.substr(6, 2) + ' '
+            + time.substr(8, 2) + ':' + time.substr(10, 2) + ':' + time.substr(12, 2);
+
+    }
+
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/dictionary.html b/src/main/resources/templates/system/dictionary.html
index 62fd7ed..9c77518 100644
--- a/src/main/resources/templates/system/dictionary.html
+++ b/src/main/resources/templates/system/dictionary.html
@@ -1,6 +1,6 @@
 <div class="layui-card">
     <div class="layui-card-header">
-        <h2 class="header-title">设备管理</h2>
+        <h2 class="header-title">数据字典管理</h2>
         <span class="layui-breadcrumb pull-right">
           <a href="#">集控中心</a>
           <a><cite>数据字典管理</cite></a>
diff --git a/src/main/resources/templates/system/queue.html b/src/main/resources/templates/system/queue.html
index e07ac0f..59ef6d8 100644
--- a/src/main/resources/templates/system/queue.html
+++ b/src/main/resources/templates/system/queue.html
@@ -1,6 +1,6 @@
 <div class="layui-card">
     <div class="layui-card-header">
-        <h2 class="header-title">设备管理</h2>
+        <h2 class="header-title">任务调度管理</h2>
         <span class="layui-breadcrumb pull-right">
           <a href="#">集控中心</a>
           <a><cite>任务调度管理</cite></a>
diff --git a/src/main/resources/templates/system/region.html b/src/main/resources/templates/system/region.html
new file mode 100644
index 0000000..1588b6f
--- /dev/null
+++ b/src/main/resources/templates/system/region.html
@@ -0,0 +1,445 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">区域管理</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">集控中心</a>
+          <a><cite>区域管理</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div id="regionapp">
+            <el-form :inline="true" ref="regionform" :model="regionform" data-parsley-validate class="form-horizontal form-label-left">
+
+                <div class="col-md-4">
+                    <div class="form-group">
+                        <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="regionform.regionname" id="regionname"></el-input>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-md-3">
+                    <div class="form-group">
+                        <button type="button" class="btn btn-info" @click="query" id="qrybtn">查 询</button>
+                        <button class="btn btn-primary" type="button" @click="addRegion">添加区域</button>
+                        <!--<button class="btn btn-info" type="button" @click="lookTree">查看区域树形图</button>-->
+                    </div>
+                </div>
+            </el-form>
+
+            <template>
+                <el-table
+                        ref="singletable"
+                        :data="tableData"
+                        highlight-current-row
+                        @current-change="currRowChange"
+                        stripe
+                        max-height="2000"
+                        border
+                        style="width: 100%">
+                    <el-table-column
+                            prop="regionid"
+                            label="区域编号"
+                            width="140">
+                    </el-table-column>
+                    <el-table-column
+                            prop="regionname"
+                            label="区域名称"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            prop="level"
+                            label="区域级别"
+                            sortable
+                            :formatter="levelform"
+                            width="120">
+                    </el-table-column>
+                    <el-table-column
+                            prop="parentname"
+                            label="父区域"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            prop="address"
+                            label="详细地址"
+                            width="200">
+                    </el-table-column>
+                    <el-table-column
+                            prop="remarks"
+                            label="备注"
+                            width="180">
+                    </el-table-column>
+                    <el-table-column
+                            label="操作"
+                            width="130">
+                        <template scope="scope">
+                            <button type="button" class="btn btn-info btn-xs" title="编辑" @click="editRegion(scope.row.regionid)">编辑</button>
+                            <button type="button" class="btn btn-danger btn-xs" title="删除" @click="delRegion(scope.row.regionid)">删除</button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="clearfix"></div>
+                <el-pagination
+                        @size-change="handleSizeChange"
+                        @current-change="currPageChange"
+                        :current-page="currPage"
+                        :page-sizes="[10, 20, 50, 100]"
+                        :page-size="pageSize"
+                        layout="prev, pager, next,sizes, jumper,total"
+                        :total="totSize">
+                </el-pagination>
+            </template>
+
+            <el-dialog :title="regiontitile" :visible.sync="dialogFormVisible"  >
+                <el-form ref="regionDiaForm" :model="regionDiaForm" :rules="rules" label-width="36%" >
+                    <el-form-item label="区域编号:" prop="regionid">
+                        <div class="el-col el-col-15">
+                            <div class="el-input" style="width: 187px;">
+                                <el-input v-model="regionDiaForm.regionid">
+                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                </el-input>
+                            </div>
+                        </div>
+                    </el-form-item>
+
+                    <el-form-item label="区域名称:" prop="regionname">
+                        <div class="el-col el-col-18">
+                            <div class="el-input" style="width: 187px;">
+                                <el-input v-model="regionDiaForm.regionname">
+                                    <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                                </el-input>
+                            </div>
+                        </div>
+                    </el-form-item>
+
+                    <el-form-item label="区域级别:" prop="level">
+                        <el-col :span="18">
+                            <el-select v-model="regionDiaForm.level" style="width: 187px;"
+                                       filterable
+                                       @Change="levelChange"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="level in levels"
+                                        :key="level.value"
+                                        :label="level.label"
+                                        :value="level.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="父区域:" prop="parentid">
+                        <el-col :span="18">
+                            <el-select v-model="regionDiaForm.parentid"
+                                       style="width: 187px;" clearable
+                                       filterable
+                                       :disabled="parentRegionDis"
+                                       placeholder="请选择">
+                                <el-option
+                                        v-for="parentid in parentRegions"
+                                        :key="parentid.value"
+                                        :label="parentid.label"
+                                        :value="parentid.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="详细地址:" prop="address">
+                        <el-col :span="18">
+                            <el-input v-model.number="regionDiaForm.address"  style="width: 187px;">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </el-col>
+                    </el-form-item>
+
+                    <el-form-item label="备注:" prop="remarks">
+                        <el-col :span="18">
+                            <el-input v-model.number="regionDiaForm.remarks"  style="width: 187px;">
+                                <i class="el-icon-edit el-input__icon" slot="icon" ></i>
+                            </el-input>
+                        </el-col>
+                    </el-form-item>
+
+                </el-form>
+                <div slot="footer" class="dialog-footer">
+                    <el-button @click="resetForm('regionDiaForm') ">取 消</el-button>
+                    <el-button type="primary" @click="saveRegion('regionDiaForm')">确 定</el-button>
+                </div>
+            </el-dialog>
+        </div>
+    </div>
+</div>
+
+<script>
+    var vue = new Vue({
+        el:'#regionapp',
+        data:{
+            tableData:[],
+            currPage: 1,
+            pageSize:10,
+            totSize:0,
+            currentRow: null,
+            parentRegionDis:false,
+            regionform:{
+                regionname:''
+            },
+            dialogFormVisible: false,
+            dlgAllotDevVisible:false,
+            parentRegions:[],
+            levels:[],
+            regionDiaForm:{
+                regionid:'',
+                regionname:'',
+                level:'',
+                parentid:'',
+                address:'',
+                remarks:''
+            },
+            rules:{
+                regionid:[
+                    {required:true,message:'请输入区域编号',trigger:'blur'},
+                ],
+                regionname:[
+                    {required:true,message:'请输入区域名称',trigger:'blur'},
+                ],
+                level: [
+                    {required: true, message: '请选择区域级别', trigger: 'blur'}
+                ],
+                parentid: [
+                    {required: true, message: '请选择父区域', trigger: 'blur'}
+                ],
+                address: [
+                    {required: true, message: '请输入详细地址', trigger: 'blur'}
+                ]
+            },
+            regiontitile:'添加区域',
+        },
+        methods:{
+            handleSizeChange:function(val) {
+                this.pageSize=val;
+                commonQuery(this,this.regionform.regionname,this.currPage,val);
+                //console.log('每页条'+val);
+            },
+            currPageChange:function(val) {
+                this.currPage=val;
+                commonQuery(this,this.regionform.regionname,this.currPage,this.pageSize);
+                //console.log('当前页:'+val);
+            },
+            currRowChange:function(val) {
+                this.currentRow = val;
+            },
+            query:function(){
+                this.pagesize=10;
+                this.currPage=1;
+                commonQuery(this,this.regionform.regionname,this.currPage,this.pageSize);
+            },
+            addRegion:function () {
+                getFillData(this,"-1");
+                this.dialogFormVisible = true;
+                this.regiontitle="添加区域"
+            },
+            delRegion:function(regionid){
+                deletedata(regionid);
+            },
+            editRegion:function(regionid){
+                this.parentRegionDis=false;
+                getFillData(this,regionid);
+                this.dialogFormVisible = true;
+                this.regiontitile="修改区域"
+            },
+            resetForm: function (formName) {
+                this.$refs[formName].resetFields();
+                this.dialogFormVisible = false;
+            },
+            saveRegion:function (formName) {
+                var _that=this;
+                var vali = false;
+                this.$refs[formName].validate(
+                    function(valid){
+                        if (valid){
+                            vali = true;
+                        }else{
+                            vali=false;
+                        }
+                    });
+                if (vali==true){
+                    saveData(_that,_that.regionDiaForm,formName);
+                }
+            },
+            levelChange: function (value) {
+                if (value == 0) {
+                    this.parentRegionDis = true;
+                } else  {
+                    this.parentRegionDis = false;
+                    getFregion(this,value);
+                }
+            },
+            levelform: function (row, column, cellValue) {
+                return row.level+"级";
+            }
+        },
+        created:function(){
+            var _self=this;
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:encodeURI("/system/loadRegionList?regionname="),
+                success:function(ret){
+                    //console.log(ret);
+                    _self.totSize=ret.PageResult.totalCount;
+                    _self.tableData=ret.PageResult.list;
+                }
+            })
+        }
+    })
+
+    function refreshThisTable(){
+        $("#qrybtn").click();
+    };
+
+    function commonQuery(_self,regionname,pageno,pagesize){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/system/loadRegionList?regionname=" + regionname + "&pageNo=" + pageno + "&pageSize=" + pagesize),
+            success: function (ret) {
+                _self.totSize = ret.PageResult.totalCount;
+                _self.tableData = ret.PageResult.list;
+                if (_self.totSize == 0) {
+                    layer.msg("暂无数据", {icon: 2, time: 1000});
+                }
+            }
+        })
+    }
+
+    function deletedata(regionid){
+        layer.confirm('是否删除该区域', {icon: 3, title:'请确认',offset:'30%'},function(index){
+            $.ajax({
+                type:"get",
+                dataType:"json",
+                url:"/system/deleteRegion?regionid="+regionid,
+                success:function(ret){
+                    if(ret.message == undefined){
+                        layer.msg('用户认证已过期,请重新登录', {icon:2,time:1000});
+                        window.location="login";
+                        return;
+                    }
+                    if (ret.message != "") {
+                        layer.msg(ret.message, {icon: 2, time: 1000});
+                    } else {
+                        layer.msg('删除成功', {icon: 1, time: 1000});
+                        refreshThisTable();
+                    }
+                }
+            })
+        })
+    }
+
+
+    function getFillData(_self, id) {
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/system/loadRegionForUpdate?regionid=" + id),
+            success: function (ret) {
+                var dictlist = [];
+                var parentlist = [];
+                var dict = ret.dicts;
+                for (var i = 0; i < dict.length; i++) {
+                    dictlist.push({
+                        value: dict[i]["dictval"],
+                        label: dict[i]["dictcaption"]
+
+                    });
+                }
+                _self.levels = dictlist;
+
+                if (ret.region != null) {
+                    _self.regionDiaForm.regionid = ret.region.regionid;
+                    _self.regionDiaForm.regionname = ret.region.regionname;
+                    _self.regionDiaForm.level = ret.region.level;
+                    _self.regionDiaForm.parentid = ret.region.parentid;
+                    _self.regionDiaForm.address = ret.region.address;
+                    if (ret.region.level == 0) {
+                        _self.parentRegionDis = true;
+                    }
+                    _self.regionDiaForm.remarks = ret.region.remarks;
+
+                }
+
+
+                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;
+            }
+        })
+    }
+
+   /* function lookTree(){
+        alert(tree);
+    }*/
+
+
+    function saveData(_that,formdata,formName){
+        var url = null;
+        if(vue.regiontitile == "添加区域"){
+            url = encodeURI("/system/addRegion");
+        }
+        if(vue.regiontitile == "修改区域"){
+            url = encodeURI("/system/updateRegion")
+        }
+        var token=$("meta[name='_csrf_token']").attr("value");
+        $.ajax({
+            type: "POST",
+            url: url,
+            dataType: "json",
+            contentType: "application/json",
+            headers: {
+                'Accept': 'application/json',
+                'Content-Type': 'application/json',
+                'X-CSRF-TOKEN':token,
+            },
+            data: JSON.stringify(formdata),
+            success: function (data) {
+                if (data.errStr != "") {
+                    layer.msg(data.errStr, {icon: 2,time:1000});
+                } else {
+                    layer.msg('保存信息成功!', {icon: 1,time:1000});
+                    refreshThisTable();
+                    _that.$refs[formName].resetFields();
+                    _that.dialogFormVisible = false;
+                }
+            }
+        });
+    }
+
+
+    function getFregion(_self,value){
+        $.ajax({
+            type: "get",
+            dataType: "json",
+            url: encodeURI("/system/getFregion?level=" + value),
+            success: function (ret) {
+                var fList = [];
+                var parentRegion = ret.parentRegion;
+                for (var j=0;j<parentRegion.length;j++){
+                    fList.push({
+                        value:parentRegion[j]["regionid"],
+                        label:parentRegion[j]["regionname"]
+                    });
+                }
+
+                _self.parentRegions = fList;
+            }
+        })
+    }
+
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html
index 61cc1b1..48d1ecc 100755
--- a/src/main/resources/templates/system/role/func.html
+++ b/src/main/resources/templates/system/role/func.html
@@ -34,6 +34,7 @@
         admin.dgo('/role/func', {

             roleId: func,

         }, function (data) {

+            debugger

             layer.closeAll('loading');

             if (data.code == 200) {

                 initTree(data.node);