完成了区域和设备的后台管理
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/AreaDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/AreaDao.java
index 8691348..38330f6 100644
--- a/src/main/java/com/supwisdom/dlpay/water/dao/AreaDao.java
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/AreaDao.java
@@ -14,7 +14,7 @@
 
     List<TArea> findByParentId(Integer parentId);
 
-    List<TArea> findAllByAvailable(Integer available);
+    List<TArea> findAllByAvailableOrderByAreano(Integer available);
 
     List<TArea> findByAvailableAndLevelNot(Integer available, Integer level);
 
@@ -22,7 +22,7 @@
 
     Page<TArea> findAllByAvailable(Integer available, Pageable pageable);
 
-    Page<TArea> findByAvailableAndParentId(Integer available, Integer parentId, Pageable pageable);
+    Page<TArea> findByAvailableAndParentIdOrderByAreano(Integer available, Integer parentId, Pageable pageable);
 
     Page<TArea> findAllByAvailableAndAreaNameContaining(Integer available, String regiName, Pageable pageable);
 
diff --git a/src/main/java/com/supwisdom/dlpay/water/dao/DeviceDao.java b/src/main/java/com/supwisdom/dlpay/water/dao/DeviceDao.java
index c28dafa..96b1daa 100644
--- a/src/main/java/com/supwisdom/dlpay/water/dao/DeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/water/dao/DeviceDao.java
@@ -1,20 +1,26 @@
 package com.supwisdom.dlpay.water.dao;
 
 import com.supwisdom.dlpay.water.domain.TDevice;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 @Repository
-public interface DeviceDao extends JpaRepository<TDevice, String>, JpaSpecificationExecutor<TDevice> {
+public interface DeviceDao extends JpaRepository<TDevice, Integer>, JpaSpecificationExecutor<TDevice> {
 
   List<TDevice> findByAreano(Integer regino);
 
-  List<TDevice> findByDevicenameAndDevicenoNot(String deviname, String devino);
+  TDevice findByDevicenoAndDeviceidNot(String deviceno, Integer deviceid);
 
-  List<TDevice> findByDevicename(String deviname);
+  TDevice findByDevicenameAndDeviceidNot(String devicename, Integer deviceid);
 
+  TDevice findByDevicename(String devicename);
+
+  TDevice findByDeviceno(String deviceno);
+
+  Page<TDevice> findAll(Pageable pageable);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TDevice.java b/src/main/java/com/supwisdom/dlpay/water/domain/TDevice.java
index 2e148b2..52d4024 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TDevice.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TDevice.java
@@ -7,7 +7,7 @@
 public class TDevice {
   @Id
   @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "deviceid_seq")
-  @SequenceGenerator(name = "deviceid_seq", sequenceName = "seq_deviceid")
+  @SequenceGenerator(name = "deviceid_seq", sequenceName = "seq_deviceid", allocationSize = 1)
   private Integer deviceid;
 
   @Column(name = "deviceno", nullable = false, length = 8)
@@ -28,6 +28,17 @@
   @Column(name = "soft_verno", length = 30)
   private String softVer; // 软件版本
 
+  @Transient
+  private String areaname;
+
+  public String getAreaname() {
+    return areaname;
+  }
+
+  public void setAreaname(String areaname) {
+    this.areaname = areaname;
+  }
+
   public Integer getDeviceid() {
     return deviceid;
   }
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
index fb750c5..2d63b08 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/DeviceService.java
@@ -3,27 +3,31 @@
 import com.supwisdom.dlpay.framework.util.PageResult;
 import com.supwisdom.dlpay.water.domain.TDevice;
 import com.supwisdom.dlpay.water.system.bean.DeviceSearchBean;
+import org.springframework.data.domain.Page;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.Map;
 
 public interface DeviceService {
-
-  boolean existSubDevice(Integer regino);
-
-  PageResult<TDevice> queryDeviceList(DeviceSearchBean param);
-
-  TDevice queryDeviceById(String devino);
-
-  boolean updateDevice(TDevice device);
-
-  boolean saveDevice(TDevice device);
-
-  Map<String, Object> checkParams(TDevice device);
-
-  boolean deleteDevice(String devino);
-
-  List<String> groupStatus();
-
-  PageResult<TDevice> queryDeviceByParams(DeviceSearchBean param);
+    @Transactional
+    boolean existSubDevice(Integer areano);
+    @Transactional
+    PageResult<TDevice> queryDeviceList(DeviceSearchBean param);
+    @Transactional
+    TDevice queryDeviceById(Integer deviceid);
+    @Transactional
+    boolean updateDevice(TDevice device);
+    @Transactional
+    boolean saveDevice(TDevice device);
+    @Transactional
+    Map<String, Object> checkParams(TDevice device);
+    @Transactional
+    boolean deleteDevice(Integer deviceid);
+    @Transactional
+    List<String> groupStatus();
+    @Transactional
+    PageResult<TDevice> queryDeviceByParams(DeviceSearchBean param);
+    @Transactional
+    PageResult<TDevice> queryAreaname(Page<TDevice> devicePage);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/AreaServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/AreaServiceImpl.java
index 27d6fb2..cbb713f 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/impl/AreaServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/AreaServiceImpl.java
@@ -28,7 +28,7 @@
     @Override
     public PageResult<TArea> queryAreasByParentId(RegionSearchBean param) {
         Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize());
-        PageResult<TArea> result = new PageResult<>(regionDao.findByAvailableAndParentId(1, param.getParentId(), pageable));
+        PageResult<TArea> result = new PageResult<>(regionDao.findByAvailableAndParentIdOrderByAreano(1, param.getParentId(), pageable));
         List<TArea> data = result.getData();
         if (param.getPageNo()==1) {
             Optional<TArea> optional = regionDao.findByAvailableAndAreano(1, param.getParentId());
@@ -56,7 +56,7 @@
     }
 
     public List<TArea> queryAllAreas() {
-        List<TArea> regions = regionDao.findAllByAvailable(1);
+        List<TArea> regions = regionDao.findAllByAvailableOrderByAreano(1);
         return regions.size() != 0 ? regions : null;
     }
 
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
new file mode 100644
index 0000000..af018fa
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
@@ -0,0 +1,171 @@
+package com.supwisdom.dlpay.water.service.impl;
+
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.water.dao.AreaDao;
+import com.supwisdom.dlpay.water.dao.DeviceDao;
+import com.supwisdom.dlpay.water.domain.TDevice;
+import com.supwisdom.dlpay.water.domain.TArea;
+import com.supwisdom.dlpay.water.service.DeviceService;
+import com.supwisdom.dlpay.water.system.bean.DeviceSearchBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.Predicate;
+import java.util.*;
+
+@Service
+public class DeviceServiceImpl implements DeviceService {
+    @Autowired
+    private DeviceDao deviceDao;
+
+    @Autowired
+    private AreaDao areaDao;
+
+    @Override
+    public boolean existSubDevice(Integer areano) {
+        List<TDevice> devices = deviceDao.findByAreano(areano);
+        return devices != null && devices.size() != 0;
+    }
+
+    @Override
+    public PageResult<TDevice> queryDeviceList(DeviceSearchBean param) {
+        Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize());
+        Page<TDevice> devicePage = deviceDao.findAll(pageable);
+        return queryAreaname(devicePage);
+    }
+
+    @Override
+    public TDevice queryDeviceById(Integer deviceid) {
+        Optional<TDevice> optional = deviceDao.findById(deviceid);
+        return optional.orElse(null);
+    }
+
+    @Override
+    public boolean updateDevice(TDevice device) {
+        Optional<TDevice> deviOption = deviceDao.findById(device.getDeviceid());
+        Optional<TArea> regiOption = areaDao.findByAvailableAndAreano(1, device.getAreano());
+        if (deviOption.isPresent() && regiOption.isPresent()) {
+            TDevice oldDevice = deviOption.get();
+            TArea region = regiOption.get();
+            oldDevice.setDevicename(device.getDevicename());
+            oldDevice.setDeviceno(device.getDeviceno());
+            oldDevice.setAreano(region.getAreano());
+            deviceDao.save(oldDevice);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean saveDevice(TDevice device) {
+        Optional<TArea> regiOption = areaDao.findByAvailableAndAreano(1, device.getAreano());
+        if (regiOption.isPresent()) {
+            TArea region = regiOption.get();
+            device.setAreano(region.getAreano());
+            device.setDeviceStatus("正常");
+            deviceDao.save(device);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public Map<String, Object> checkParams(TDevice device) {
+        Map<String, Object> result = new HashMap<>();
+        if (null == device.getDevicename()) {
+            result.put("flag", false);
+            result.put("msg", "设备名称不能为空");
+            return result;
+        }
+        if (null == device.getDeviceno()) {
+            result.put("flag", false);
+            result.put("msg", "设备编号不能为空");
+            return result;
+        }
+        if (device.getDeviceno().length() != 8) {
+            result.put("flag", false);
+            result.put("msg", "请输入合法的设备编号");
+            return result;
+        }
+        TDevice queryDevicename = null;
+        TDevice queryDevicenano = null;
+        if (device.getDeviceid() != null) {
+            queryDevicename = deviceDao.findByDevicenameAndDeviceidNot(device.getDevicename(), device.getDeviceid());
+            queryDevicenano = deviceDao.findByDevicenoAndDeviceidNot(device.getDeviceno(), device.getDeviceid());
+            result.put("type", "update");
+        } else {
+            queryDevicename = deviceDao.findByDevicename(device.getDevicename());
+            queryDevicenano = deviceDao.findByDeviceno(device.getDeviceno());
+            result.put("type", "insert");
+        }
+        if (queryDevicename != null) {
+            result.put("flag", false);
+            result.put("msg", "已存在的设备名");
+            return result;
+        }
+        if (queryDevicenano != null) {
+            result.put("flag", false);
+            result.put("msg", "已存在的设备编号");
+            return result;
+        }
+        result.put("flag", true);
+        return result;
+    }
+
+    @Override
+    public boolean deleteDevice(Integer deviceid) {
+        TDevice device = queryDeviceById(deviceid);
+        if (device != null) {
+            device.setDeviceStatus("注销");
+            deviceDao.save(device);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public List<String> groupStatus() {
+        List<String> list = new ArrayList<>();
+        list.add("正常");
+        list.add("注销");
+        return list;
+    }
+
+    @Override
+    public PageResult<TDevice> queryDeviceByParams(DeviceSearchBean param) {
+        Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize());
+        Specification<TDevice> specification = (Specification<TDevice>) (root, query, cb) -> {
+            List<Predicate> predicates = new ArrayList<>();
+            if (!StringUtil.isEmpty(param.getDeviceno())) {
+                predicates.add(cb.equal(root.get("deviceno").as(Integer.class), param.getDeviceno()));
+            }
+            if (param.getAreano() != null) {
+                predicates.add(cb.equal(root.get("areano").as(Integer.class), param.getAreano()));
+            }
+            if (!StringUtil.isEmpty(param.getDeviceStatus())) {
+                predicates.add(cb.equal(root.get("deviceStatus").as(String.class), param.getDeviceStatus()));
+            }
+            if (!StringUtil.isEmpty(param.getDevicename())) {
+                predicates.add(cb.like(root.get("devicename"), "%" + param.getDevicename() + "%"));
+            }
+            Predicate[] pre = new Predicate[predicates.size()];
+            return query.where(predicates.toArray(pre)).getRestriction();
+        };
+        Page<TDevice> devicePage = deviceDao.findAll(specification, pageable);
+        return queryAreaname(devicePage);
+    }
+
+    @Override
+    public PageResult<TDevice> queryAreaname(Page<TDevice> devicePage) {
+        devicePage.get().forEach(device->{
+            Optional<TArea> optional = areaDao.findByAvailableAndAreano(1, device.getAreano());
+            optional.ifPresent(tArea -> device.setAreaname(tArea.getAreaName()));
+        });
+        return new PageResult<>(devicePage);
+    }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/water/system/bean/DeviceSearchBean.java b/src/main/java/com/supwisdom/dlpay/water/system/bean/DeviceSearchBean.java
index e2c742f..3fdd0a8 100644
--- a/src/main/java/com/supwisdom/dlpay/water/system/bean/DeviceSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/water/system/bean/DeviceSearchBean.java
@@ -3,40 +3,40 @@
 import com.supwisdom.dlpay.system.bean.PageBean;
 
 public class DeviceSearchBean extends PageBean {
-    private String deviname;
-    private Integer devino;
-    private Integer regino;
-    private String devistatus;
+    private String devicename;
+    private String deviceno;
+    private Integer areano;
+    private String deviceStatus;
 
-    public String getDeviname() {
-        return deviname;
+    public String getDevicename() {
+        return devicename;
     }
 
-    public void setDeviname(String deviname) {
-        this.deviname = deviname;
+    public void setDevicename(String devicename) {
+        this.devicename = devicename;
     }
 
-    public Integer getDevino() {
-        return devino;
+    public String getDeviceno() {
+        return deviceno;
     }
 
-    public void setDevino(Integer devino) {
-        this.devino = devino;
+    public void setDeviceno(String deviceno) {
+        this.deviceno = deviceno;
     }
 
-    public Integer getRegino() {
-        return regino;
+    public Integer getAreano() {
+        return areano;
     }
 
-    public void setRegino(Integer regino) {
-        this.regino = regino;
+    public void setAreano(Integer areano) {
+        this.areano = areano;
     }
 
-    public String getDevistatus() {
-        return devistatus;
+    public String getDeviceStatus() {
+        return deviceStatus;
     }
 
-    public void setDevistatus(String devistatus) {
-        this.devistatus = devistatus;
+    public void setDeviceStatus(String deviceStatus) {
+        this.deviceStatus = deviceStatus;
     }
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
index 717a8aa..d8fbcdd 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/water_controller.kt
@@ -2,6 +2,7 @@
 
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.util.PageResult
+import com.supwisdom.dlpay.framework.util.StringUtil
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import com.supwisdom.dlpay.framework.util.WaterErrorCode
 import com.supwisdom.dlpay.water.domain.TDevice
@@ -150,17 +151,17 @@
 
     @PostMapping("/region/del")
     @ResponseBody
-    fun del(@RequestParam("regino") regino: Int): ResponseEntity<Any> {
+    fun del(@RequestParam("areano") areano: Int): ResponseEntity<Any> {
         try {
-            if (areaService.existSubArea(regino)) {
+            if (areaService.existSubArea(areano)) {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(WaterErrorCode.REQUEST_DATA_ERROR, "该区域存在子区域,删除失败"))
             }
-            if (deviceService.existSubDevice(regino)) {
+            if (deviceService.existSubDevice(areano)) {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(WaterErrorCode.REQUEST_DATA_ERROR, "该区域有关联设备,删除失败"))
             }
-            return if (areaService.deleteArea(regino)) {
+            return if (areaService.deleteArea(areano)) {
                 ResponseEntity.ok(ResponseBodyBuilder.create()
                         .data("msg", "删除成功")
                         .success())
@@ -247,9 +248,9 @@
 
     @GetMapping("/device/devino/{devino}")
     @ResponseBody
-    fun checkDevino(@PathVariable devino: String): ResponseEntity<Any> {
+    fun checkDevino(@PathVariable deviceid: Int): ResponseEntity<Any> {
         try {
-            deviceService.queryDeviceById(devino)?.let {
+            deviceService.queryDeviceById(deviceid)?.let {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .data("flag", true)
                         .success())
@@ -265,9 +266,9 @@
 
     @PostMapping("/device/del")
     @ResponseBody
-    fun del(@RequestParam devino: String): ResponseEntity<Any> {
+    fun del(@RequestParam deviceid: Int): ResponseEntity<Any> {
         return try {
-            if (deviceService.deleteDevice(devino)) {
+            if (deviceService.deleteDevice(deviceid)) {
                 ResponseEntity.ok(ResponseBodyBuilder.create()
                         .data("msg", "删除成功")
                         .success())
@@ -300,23 +301,25 @@
 
     @GetMapping("/device/search")
     @ResponseBody
-    fun queryRegions(@RequestParam("deviname", required = false) deviname: String,
-                     @RequestParam("devino", required = false) devino: Int,
-                     @RequestParam("regino", required = false) regino: Int,
-                     @RequestParam("devistatus", required = false) devistatus: String,
+    fun queryRegions(@RequestParam("devicename", required = false) devicename: String,
+                     @RequestParam("deviceno", required = false) deviceno: String,
+                     @RequestParam("areano", required = false) areanoStr: String,
+                     @RequestParam("deviceStatus", required = false) deviceStatus: String,
                      @RequestParam("page", defaultValue = "1", required = false) pageNo: Int,
                      @RequestParam("limit", defaultValue = "10", required = false) pageSize: Int): PageResult<TDevice> {
         try {
             if (pageNo < 1 || pageSize < 1) {
                 return PageResult(WaterErrorCode.REQUEST_DATA_ERROR, "请求参数错误")
             }
+            val areano:Int?
+            areano = if (StringUtil.isEmpty(areanoStr)) { null } else { areanoStr.toInt() }
             val searchBean = DeviceSearchBean().apply {
                 this.pageNo = pageNo
                 this.pageSize = pageSize
-                this.deviname = deviname
-                this.devino = devino
-                this.regino = regino
-                this.devistatus = devistatus
+                this.devicename = devicename
+                this.deviceno = deviceno
+                this.areano = areano
+                this.deviceStatus = deviceStatus
             }
             deviceService.queryDeviceByParams(searchBean)?.let {
                 return it
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/service/device_service.kt b/src/main/kotlin/com/supwisdom/dlpay/water/service/device_service.kt
deleted file mode 100644
index de0f0aa..0000000
--- a/src/main/kotlin/com/supwisdom/dlpay/water/service/device_service.kt
+++ /dev/null
@@ -1,138 +0,0 @@
-package com.supwisdom.dlpay.water.service
-
-
-import com.supwisdom.dlpay.framework.util.PageResult
-import com.supwisdom.dlpay.water.dao.DeviceDao
-import com.supwisdom.dlpay.water.dao.AreaDao
-import com.supwisdom.dlpay.water.domain.TDevice
-import com.supwisdom.dlpay.water.system.bean.DeviceSearchBean
-import org.springframework.beans.factory.annotation.Autowired
-import org.springframework.data.domain.PageRequest
-import org.springframework.data.jpa.domain.Specification
-import org.springframework.stereotype.Service
-
-import javax.persistence.criteria.Predicate
-import java.util.*
-
-@Service
-class DeviceServiceImpl : DeviceService {
-    @Autowired
-    private lateinit var deviceDao: DeviceDao
-
-    @Autowired
-    private lateinit var areaDao: AreaDao
-
-    override fun existSubDevice(regino: Int?): Boolean {
-        val devices = deviceDao.findByAreano(regino)
-        return devices != null && devices.size != 0
-    }
-
-    override fun queryDeviceList(param: DeviceSearchBean): PageResult<TDevice> {
-        val pageable = PageRequest.of(param.pageNo - 1, param.pageSize)
-        return PageResult(deviceDao.findAll(pageable))
-    }
-
-    override fun queryDeviceById(devino: String): TDevice? {
-        val optional = deviceDao.findById(devino)
-        return optional.orElse(null)
-    }
-
-    override fun updateDevice(device: TDevice): Boolean {
-        val deviOption = deviceDao.findById(device.deviceno)
-        val regiOption = areaDao.findByAvailableAndAreano(1, device.areano)
-        if (deviOption.isPresent && regiOption.isPresent) {
-            val oldDevice = deviOption.get()
-            val region = regiOption.get()
-            oldDevice.devicename = device.devicename
-            oldDevice.areano = region.areano
-            deviceDao.save(oldDevice)
-            return true
-        }
-        return false
-    }
-
-    override fun saveDevice(device: TDevice): Boolean {
-        val regiOption = areaDao.findByAvailableAndAreano(1, device.areano)
-        if (regiOption.isPresent) {
-            val region = regiOption.get()
-            device.areano = region.areano
-            device.deviceStatus = "正常"
-            deviceDao.save(device)
-            return true
-        }
-        return false
-    }
-
-    override fun checkParams(device: TDevice): Map<String, Any> {
-        val result = HashMap<String, Any>()
-        if (null == device.devicename) {
-            result["flag"] = false
-            result["msg"] = "设备名称不能为空"
-            return result
-        }
-        if (null == device.deviceno) {
-            result["flag"] = false
-            result["msg"] = "设备编号不能为空"
-            return result
-        }
-        if (device.deviceno.toString().length != 8) {
-            result["flag"] = false
-            result["msg"] = "请输入合法的设备编号"
-            return result
-        }
-        val optional = deviceDao.findById(device.deviceno)
-        val devices: List<TDevice>?
-        if (optional.isPresent) {
-            //  更新
-            devices = deviceDao.findByDevicenameAndDevicenoNot(device.devicename, device.deviceno)
-            result["type"] = "update"
-        } else {
-            //  新增
-            devices = deviceDao.findByDevicename(device.devicename)
-            result["type"] = "insert"
-        }
-        if (devices != null && devices.isNotEmpty()) {
-            result["flag"] = false
-            result["msg"] = "已存在的设备名"
-            return result
-        }
-        result["flag"] = true
-        return result
-    }
-
-    override fun deleteDevice(devino: String): Boolean {
-        val device = queryDeviceById(devino)
-        if (device != null) {
-            device.deviceStatus = "注销"
-            deviceDao.save(device)
-            return true
-        }
-        return false
-    }
-
-    override fun groupStatus(): List<String>? {
-        return listOf("normal", "closed")
-    }
-
-    override fun queryDeviceByParams(param: DeviceSearchBean): PageResult<TDevice> {
-        val pageable = PageRequest.of(param.pageNo - 1, param.pageSize)
-        val specification = Specification<TDevice> { root, query, cb ->
-            val predicates = ArrayList<Predicate>()
-            if (param.devino != null) {
-                predicates.add(cb.equal(root.get<String>("devino"), param.devino))
-            }
-            if (param.regino != null) {
-                predicates.add(cb.equal(root.get<Int>("areano"), param.regino))
-            }
-            if (param.devistatus != null) {
-                predicates.add(cb.equal(root.get<String>("devistatus"), param.devistatus))
-            }
-            if (param.deviname != null) {
-                predicates.add(cb.like(root.get("deviname"), "%" + param.deviname + "%"))
-            }
-            val array = predicates.toTypedArray()
-            query.where(*array).restriction
-        }
-        return PageResult(deviceDao.findAll(specification, pageable))
-    }
-}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 4c33b78..e263110 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -22,7 +22,8 @@
 spring.thymeleaf.mode=HTML5
 spring.thymeleaf.cache=false
 spring.thymeleaf.enabled=true
-
+#################################################
+#server.servlet.context-path=/water
 ################################################
 # user password
 auth.password.bcrypt.length=10
diff --git a/src/main/resources/templates/system/device/form.html b/src/main/resources/templates/system/device/form.html
index fc2dc0a..ea0db7e 100644
--- a/src/main/resources/templates/system/device/form.html
+++ b/src/main/resources/templates/system/device/form.html
@@ -1,5 +1,6 @@
 <!-- operator表单弹窗 -->
 <form id="form" lay-filter="form" class="layui-form model-form">
+    <input name="deviceid" id="deviceid" type="hidden"/>
     <div class="layui-form-item">
         <label class="layui-form-label">设备名称</label>
         <div class="layui-input-block">
@@ -39,8 +40,8 @@
         //  清除admin域中的数据
         admin.putTempData('t_func', '');
         if (func) {
+            $('input[name="deviceid"]').attr('readonly', 'readonly');
             form.val('form', func);
-            $("#input-deviceno").attr('readonly', 'readonly');
             $.ajax({
                 url: "/region/all",
                 type: "GET",
@@ -88,23 +89,23 @@
                     if (!new RegExp("^\\d{8}$").test(value)) {
                         return '设备编号必须为8位数字';
                     }
-                    var msg = '';
-                    $.ajax({
-                        url: "device/deviceno/" + value,
-                        type: "GET",
-                        async: false,
-                        success: function (data) {
-                            if (data.flag) {
-                                msg = '已存在的设备编号'
-                            }
-                        },
-                        error: function (xhr) {
-                            console.log(xhr)
-                        }
-                    })
-                    if (msg !== '') {
-                        return msg;
-                    }
+                    // var msg = '';
+                    // $.ajax({
+                    //     url: "device/deviceno/" + value,
+                    //     type: "GET",
+                    //     async: false,
+                    //     success: function (data) {
+                    //         if (data.flag) {
+                    //             msg = '已存在的设备编号'
+                    //         }
+                    //     },
+                    //     error: function (xhr) {
+                    //         console.log(xhr)
+                    //     }
+                    // })
+                    // if (msg !== '') {
+                    //     return msg;
+                    // }
                 }
             }
         });
diff --git a/src/main/resources/templates/system/device/index.html b/src/main/resources/templates/system/device/index.html
index fbbd77f..7561500 100644
--- a/src/main/resources/templates/system/device/index.html
+++ b/src/main/resources/templates/system/device/index.html
@@ -15,7 +15,7 @@
                         <input id="devicename-search-value" class="layui-input search-input" type="text"/>
                     </div>
                     <div class="layui-col-md4">
-                        终端编号
+                        设备编号
                         <input id="deviceno-search-value" class="layui-input search-input" type="text"/>
                     </div>
                     <div class="layui-col-md3">
@@ -117,6 +117,8 @@
                     {field: 'deviceno', align: 'center', title: '设备编号', unresize: true},
                     {field: 'deviceStatus', align: 'center', title: '状态', unresize: true},
                     {field: 'areaname', align: 'center', title: '所在区域'},
+                    {field: 'deviceLineCheck', align: 'center', title: '心跳'},
+                    {field: 'softVer', align: 'center', title: '版本号'},
                     {
                         field: 'deviceId', align: 'center', title: '操作', unresize: true, templet: function (item) {
                             let html = ' <a class="layui-btn  layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>修改</a> ' +
@@ -138,15 +140,12 @@
             var deviceno = $('#deviceno-search-value').val();
             var areano = $('#select-region').val();
             var status = $('#select-status').val();
-            deviceno == '' ? 'null' : deviceno;
-            console.log(deviceno)
-            areano == "" ? 'null' : areano;
             table.reload('devicetable', {
                 where: {
                     devicename: devicename,
                     deviceno: deviceno,
                     areano: areano,
-                    devistatus: status
+                    deviceStatus: status
                 },
                 url: "/device/search"
             });
@@ -194,7 +193,7 @@
                 layer.load(2);
                 let token = $("meta[name='_csrf_token']").attr("value");
                 admin.go('/device/del', {
-                    deviceno: data.deviceno,
+                    deviceid: data.deviceid,
                     _csrf: token
                 }, function (data) {
                     console.log(data.code);