设备管理,设备组管理
diff --git a/build.gradle b/build.gradle
index 464e7cf..a747702 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,6 +25,13 @@
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
+ compile group: 'org.apache.poi', name: 'poi', version: '3.10.1'
+ compile group: 'org.apache.poi', name: 'poi-examples', version: '3.10.1'
+ compile group: 'org.apache.poi', name: 'poi-excelant', version: '3.10.1'
+ compile group: 'org.apache.poi',name: 'poi-ooxml', version:'3.10.1'
+ compile group: 'org.apache.poi',name: 'poi-ooxml-schemas', version:'3.10.1'
+ compile group: 'org.apache.poi',name: 'poi-scratchpad', version:'3.10.1'
+
implementation 'org.springframework.boot:spring-boot-starter-tomcat'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-web'
diff --git a/src/main/java/com/supwisdom/dlpay/device/bean/DeviceSearchBean.java b/src/main/java/com/supwisdom/dlpay/device/bean/DeviceSearchBean.java
index a4e6bfa..7b03fa2 100644
--- a/src/main/java/com/supwisdom/dlpay/device/bean/DeviceSearchBean.java
+++ b/src/main/java/com/supwisdom/dlpay/device/bean/DeviceSearchBean.java
@@ -6,7 +6,24 @@
private Integer id;
private String devicename;
private String factoryid;
+ private Integer devgroupid;
+ private String devphyid;
+ public String getDevphyid() {
+ return devphyid;
+ }
+
+ public void setDevphyid(String devphyid) {
+ this.devphyid = devphyid;
+ }
+
+ public Integer getDevgroupid() {
+ return devgroupid;
+ }
+
+ public void setDevgroupid(Integer devgroupid) {
+ this.devgroupid = devgroupid;
+ }
public Integer getId() {
return id;
diff --git a/src/main/java/com/supwisdom/dlpay/device/controller/DeviceController.java b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceController.java
index 1128e8b..61d958d 100644
--- a/src/main/java/com/supwisdom/dlpay/device/controller/DeviceController.java
+++ b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceController.java
@@ -2,6 +2,7 @@
import com.google.gson.Gson;
+import com.supwisdom.dlpay.api.bean.BaseResp;
import com.supwisdom.dlpay.api.bean.JsonResult;
import com.supwisdom.dlpay.area.bean.AreaSearchBean;
import com.supwisdom.dlpay.area.domain.TArea;
@@ -9,6 +10,7 @@
import com.supwisdom.dlpay.device.bean.DeviceSearchBean;
import com.supwisdom.dlpay.device.domain.TDevice;
import com.supwisdom.dlpay.device.service.DeviceService;
+import com.supwisdom.dlpay.framework.util.ExportExcel;
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.framework.util.WebConstant;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,7 +19,10 @@
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -83,4 +88,40 @@
return JsonResult.error("操作失败");
}
}
+
+ @GetMapping("/loadimport")
+ /* @PreAuthorize("hasPermission('/device/loadimport','')")*/
+ public String loadimport(Model model) {
+ return "device/import";
+ }
+
+
+ @RequestMapping("/download")
+ @PreAuthorize("hasPermission('/device/download','')")
+ @ResponseBody
+ public JsonResult downloadfile(HttpServletRequest request, HttpServletResponse response) throws Exception{
+ String[] titles0 = {"设备物理ID", "设备厂商", "所属商户ID"
+ }; //表头
+ String[][] info0 = {{"30F32B1C", "XKP", "3000000"
+ }}; // 示例内容
+ String fileName0 = "设备导入模板";// 保存数据
+
+ try {
+ ExportExcel.queryexcel(fileName0, titles0,info0,request, response);
+ return JsonResult.ok("操作成功");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return JsonResult.error("操作失败");
+ }
+
+ @PostMapping("/import")
+ @PreAuthorize("hasPermission('/device/import','')")
+ @ResponseBody
+ public JsonResult importFile(@RequestParam(value = "file",required = false) MultipartFile file, HttpServletRequest request) throws Exception{
+// System.out.println("---------under the upload file:"+file);
+ return deviceService.importFile(file,request);
+ }
+
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/controller/DeviceGroupController.java b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceGroupController.java
index cecb0f7..1b1923c 100644
--- a/src/main/java/com/supwisdom/dlpay/device/controller/DeviceGroupController.java
+++ b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceGroupController.java
@@ -4,9 +4,12 @@
import com.supwisdom.dlpay.api.bean.JsonResult;
import com.supwisdom.dlpay.device.bean.DeviceSearchBean;
import com.supwisdom.dlpay.device.domain.TDevice;
+import com.supwisdom.dlpay.device.domain.TDeviceGroup;
+import com.supwisdom.dlpay.device.service.DeviceGroupService;
import com.supwisdom.dlpay.device.service.DeviceService;
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.framework.util.WebConstant;
+import com.supwisdom.dlpay.system.bean.ZTreeNode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
@@ -14,12 +17,16 @@
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
@Controller
@RequestMapping("/devicegroup")
public class DeviceGroupController {
@Autowired
private DeviceService deviceService;
+ @Autowired
+ private DeviceGroupService groupService;
@RequestMapping("/index")
public String indexView(ModelMap model) {
@@ -27,8 +34,8 @@
return "devicegroup/index";
}
- @RequestMapping("/list")
- @PreAuthorize("hasPermission('/devicegroup/index','')")
+ @RequestMapping("/listDevice")
+ @PreAuthorize("hasPermission('/devicegroup/listDevice','')")
@ResponseBody
public PageResult<TDevice> getDataList(@RequestParam("page") Integer pageNo,
@RequestParam("limit") Integer pageSize,
@@ -38,9 +45,22 @@
if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
DeviceSearchBean searchBean = new DeviceSearchBean();
searchBean.setPageNo(pageNo);
- searchBean.setId(searchKey);
+ searchBean.setDevgroupid(searchKey);
searchBean.setPageSize(pageSize);
- return deviceService.getDeviceByKey(searchBean);
+ System.out.println(searchKey+"&&&&");
+ return deviceService.getDeviceByGroupId(searchBean);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new PageResult<>(99, "系统查询错误");
+ }
+ }
+
+ @RequestMapping("/listTree")
+ @PreAuthorize("hasPermission('/devicegroup/listTree','')")
+ @ResponseBody
+ public PageResult<ZTreeNode> listTree() {
+ try {
+ return groupService.getDeviceGroupTree();
} catch (Exception e) {
e.printStackTrace();
return new PageResult<>(99, "系统查询错误");
@@ -51,19 +71,28 @@
@GetMapping("/loadadd")
@PreAuthorize("hasPermission('/devicegroup/loadadd','')")
public String loadadd(Model model) {
+ List<TDeviceGroup> list=groupService.findAll();
+ model.addAttribute("grouplist",list);
+
return "devicegroup/form";
}
@PostMapping("/add")
@PreAuthorize("hasPermission('/devicegroup/add','')")
@ResponseBody
- public JsonResult add(@RequestBody TDevice device) {
- if (device != null) {
- return deviceService.saveDevice(device);
+ public JsonResult add(@RequestBody TDeviceGroup group) {
+ if (group != null) {
+ return groupService.saveGroup(group);
} else {
- return JsonResult.error("添加失败");
+ return JsonResult.error("失败");
}
}
+ @PostMapping("/delete")
+ @PreAuthorize("hasPermission('/devicegroup/delete','')")
+ @ResponseBody
+ public JsonResult delete(@RequestParam("id") Integer id) {
+ return groupService.delete(id);
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/controller/DeviceManageController.java b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceManageController.java
new file mode 100644
index 0000000..d166494
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/device/controller/DeviceManageController.java
@@ -0,0 +1,76 @@
+package com.supwisdom.dlpay.device.controller;
+
+
+import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.device.bean.DeviceSearchBean;
+import com.supwisdom.dlpay.device.domain.TDevice;
+import com.supwisdom.dlpay.device.service.DeviceService;
+import com.supwisdom.dlpay.framework.util.ExportExcel;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.framework.util.WebConstant;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+@RequestMapping("/devicemanage")
+public class DeviceManageController {
+
+ @Autowired
+ private DeviceService deviceService;
+
+ @RequestMapping("/index")
+ public String indexView(ModelMap model) {
+
+ return "devicemanage/index";
+ }
+
+ @RequestMapping("/list")
+ @PreAuthorize("hasPermission('/devicemanage/index','')")
+ @ResponseBody
+ public PageResult<TDevice> getDataList(@RequestParam("page") Integer pageNo,
+ @RequestParam("limit") Integer pageSize,
+ @RequestParam(value = "searchkey", required = false) Integer searchKey) {
+ try {
+ if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
+ if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
+ DeviceSearchBean searchBean = new DeviceSearchBean();
+ searchBean.setPageNo(pageNo);
+ searchBean.setId(searchKey);
+ searchBean.setPageSize(pageSize);
+ return deviceService.getDeviceByKey(searchBean);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return new PageResult<>(99, "系统查询错误");
+ }
+ }
+
+
+ @GetMapping("/loadupdate")
+ @PreAuthorize("hasPermission('/devicemanage/loadupdate','')")
+ public String loadadd(Model model) {
+ return "device/form";
+ }
+
+
+
+ @PostMapping("/update")
+ @PreAuthorize("hasPermission('/devicemanage/update','')")
+ @ResponseBody
+ public JsonResult updatestate(@RequestBody TDevice device) {
+ if (device != null) {
+ return deviceService.saveDevice(device);
+ } else {
+ return JsonResult.error("失败");
+ }
+ }
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/device/dao/DeviceDao.java b/src/main/java/com/supwisdom/dlpay/device/dao/DeviceDao.java
index 4765033..5af40fb 100644
--- a/src/main/java/com/supwisdom/dlpay/device/dao/DeviceDao.java
+++ b/src/main/java/com/supwisdom/dlpay/device/dao/DeviceDao.java
@@ -6,6 +6,7 @@
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;
@Repository
@@ -13,7 +14,13 @@
Page<TDevice> findAllByIdContaining(Integer id, Pageable pageable);
+ Page<TDevice> findAllByDevgroupid(Integer devgroupid, Pageable pageable);
+ @Query("select count(*) from TDevice t where t.devgroupid =:id and t.state=0")
+ Integer countByDevgroupid(Integer Devgroupid);
+
+ Integer countByDevphyid(String devphyid);
+
TDevice findByDevicename(String devicename);
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/dao/DeviceGroupDao.java b/src/main/java/com/supwisdom/dlpay/device/dao/DeviceGroupDao.java
index 2171bbd..446deda 100644
--- a/src/main/java/com/supwisdom/dlpay/device/dao/DeviceGroupDao.java
+++ b/src/main/java/com/supwisdom/dlpay/device/dao/DeviceGroupDao.java
@@ -2,6 +2,21 @@
import com.supwisdom.dlpay.device.domain.TDeviceGroup;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+import org.springframework.transaction.annotation.Transactional;
+
public interface DeviceGroupDao extends JpaRepository<TDeviceGroup, Integer> {
+
+/* @Modifying
+ @Transactional
+ @Query("delete from TDeviceGroup where devgroupid =:id or pid=:id")
+ int deleteByQuery(@Param("id") Integer id);*/
+
+ int deleteByDevgroupid(Integer Devgroupid);
+
+
+ Integer countByPid(Integer Devgroupid);
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/dao/impl/DeviceDaoImpl.java b/src/main/java/com/supwisdom/dlpay/device/dao/impl/DeviceDaoImpl.java
new file mode 100644
index 0000000..9dea9d7
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/device/dao/impl/DeviceDaoImpl.java
@@ -0,0 +1,12 @@
+package com.supwisdom.dlpay.device.dao.impl;
+
+import com.supwisdom.dlpay.device.dao.DeviceDao;
+
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+public class DeviceDaoImpl {
+ @PersistenceContext
+ EntityManager manager;
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/device/domain/TDevice.java b/src/main/java/com/supwisdom/dlpay/device/domain/TDevice.java
index 4f74f73..fd23fcb 100644
--- a/src/main/java/com/supwisdom/dlpay/device/domain/TDevice.java
+++ b/src/main/java/com/supwisdom/dlpay/device/domain/TDevice.java
@@ -9,12 +9,11 @@
private Integer id;
private String devicename;
private String devphyid;
- // private String termid;
private Integer shopid;
private String factoryid;
private Integer state;
private String operid;
- private String devgroupid;
+ private Integer devgroupid;
private String lastsaved;
@Id
@@ -89,11 +88,11 @@
}
@Column(name = "devgroupid", length = 30)
- public String getDevgroupid() {
+ public Integer getDevgroupid() {
return devgroupid;
}
- public void setDevgroupid(String devgroupid) {
+ public void setDevgroupid(Integer devgroupid) {
this.devgroupid = devgroupid;
}
@Column(name = "lastsaved", length = 14)
diff --git a/src/main/java/com/supwisdom/dlpay/device/domain/TDeviceGroup.java b/src/main/java/com/supwisdom/dlpay/device/domain/TDeviceGroup.java
index 172ca1f..4218ffd 100644
--- a/src/main/java/com/supwisdom/dlpay/device/domain/TDeviceGroup.java
+++ b/src/main/java/com/supwisdom/dlpay/device/domain/TDeviceGroup.java
@@ -5,13 +5,14 @@
@Entity
@Table(name = "TB_DEVICEGROUP")
-@SequenceGenerator(name="SEQ_DEVGROUP",sequenceName="SEQ_DEVGROUP",allocationSize=1)
+@SequenceGenerator(name = "SEQ_DEVGROUP", sequenceName = "SEQ_DEVGROUP", allocationSize = 1)
public class TDeviceGroup {
private Integer devgroupid;
private String groupname;
+ private Integer pid;
@Id
- @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_DEVGROUP")
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_DEVGROUP")
@Column(name = "devgroupid", unique = true, nullable = false, length = 8)
public Integer getDevgroupid() {
return devgroupid;
@@ -20,6 +21,7 @@
public void setDevgroupid(Integer devgroupid) {
this.devgroupid = devgroupid;
}
+
@Column(name = "groupname", length = 60)
public String getGroupname() {
return groupname;
@@ -28,4 +30,13 @@
public void setGroupname(String groupname) {
this.groupname = groupname;
}
+
+ @Column(name = "pid", length = 8)
+ public Integer getPid() {
+ return pid;
+ }
+
+ public void setPid(Integer pid) {
+ this.pid = pid;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/service/DeviceGroupService.java b/src/main/java/com/supwisdom/dlpay/device/service/DeviceGroupService.java
new file mode 100644
index 0000000..5d914eb
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/device/service/DeviceGroupService.java
@@ -0,0 +1,26 @@
+package com.supwisdom.dlpay.device.service;
+
+import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.device.domain.TDeviceGroup;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.system.bean.ZTreeNode;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+public interface DeviceGroupService {
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+ PageResult<ZTreeNode> getDeviceGroupTree( );
+
+ List<TDeviceGroup> findAll();
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ JsonResult saveGroup(TDeviceGroup device);
+
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ JsonResult delete(Integer id);
+
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/device/service/DeviceService.java b/src/main/java/com/supwisdom/dlpay/device/service/DeviceService.java
index 7673b73..5a15d0a 100644
--- a/src/main/java/com/supwisdom/dlpay/device/service/DeviceService.java
+++ b/src/main/java/com/supwisdom/dlpay/device/service/DeviceService.java
@@ -7,7 +7,9 @@
import com.supwisdom.dlpay.framework.util.PageResult;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletRequest;
import java.util.List;
public interface DeviceService {
@@ -15,6 +17,14 @@
PageResult<TDevice> getDeviceByKey(DeviceSearchBean param);
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+ PageResult<TDevice> getDeviceByParam(DeviceSearchBean param);
+
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
+ PageResult<TDevice> getDeviceByGroupId(DeviceSearchBean param);
+
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
List<TDevice> findAll();
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
@@ -22,4 +32,8 @@
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
boolean updateState(Integer id,Integer state);
+
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
+ JsonResult importFile(MultipartFile file, HttpServletRequest request) throws Exception;
}
diff --git a/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceGroupServiceImpl.java b/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceGroupServiceImpl.java
new file mode 100644
index 0000000..b8770b7
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceGroupServiceImpl.java
@@ -0,0 +1,71 @@
+package com.supwisdom.dlpay.device.service.impl;
+
+import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.device.dao.DeviceDao;
+import com.supwisdom.dlpay.device.dao.DeviceGroupDao;
+import com.supwisdom.dlpay.device.domain.TDeviceGroup;
+import com.supwisdom.dlpay.device.service.DeviceGroupService;
+import com.supwisdom.dlpay.framework.util.PageResult;
+import com.supwisdom.dlpay.system.bean.ZTreeNode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class DeviceGroupServiceImpl implements DeviceGroupService {
+ @Autowired
+ private DeviceGroupDao groupDao;
+ @Autowired
+ private DeviceDao deviceDao;
+
+ @Override
+ public PageResult<ZTreeNode> getDeviceGroupTree() {
+ List<TDeviceGroup> groups=groupDao.findAll();
+ List<ZTreeNode> zlist=new ArrayList<>();
+ for(TDeviceGroup g:groups){
+ ZTreeNode z=new ZTreeNode();
+ z.setId(g.getDevgroupid().toString());
+ z.setName(g.getGroupname());
+ if(g.getPid()==null){
+ z.setpId("0");
+ }else{
+ z.setpId(g.getPid().toString());
+ }
+
+ z.setChecked(false);
+ z.setOpen(true);
+ zlist.add(z);
+ }
+ PageResult<ZTreeNode> p=new PageResult<>(zlist);
+ p.setCode(0);
+ return p;
+ }
+
+ @Override
+ public List<TDeviceGroup> findAll(){
+ return groupDao.findAll();
+ }
+
+ @Override
+ public JsonResult saveGroup(TDeviceGroup device){
+ groupDao.save(device);
+ return JsonResult.ok("成功");
+ }
+
+ @Override
+ public JsonResult delete(Integer id) {
+ if(deviceDao.countByDevgroupid(id)>0){
+ return JsonResult.error("不能删除有正常设备的设备组");
+ }
+ if(groupDao.countByPid(id)>0){
+ return JsonResult.error("不能删除含有子节点的设备组");
+ }
+ if(groupDao.deleteByDevgroupid(id)<=0){
+ return JsonResult.error("删除失败");
+ }
+ return JsonResult.ok("删除成功");
+ }
+
+}
diff --git a/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceServiceImpl.java
index efef7b0..b2104a6 100644
--- a/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/device/service/impl/DeviceServiceImpl.java
@@ -7,17 +7,25 @@
import com.supwisdom.dlpay.device.domain.TDevice;
import com.supwisdom.dlpay.device.domain.TShopDevice;
import com.supwisdom.dlpay.device.service.DeviceService;
-import com.supwisdom.dlpay.framework.domain.TOperator;
+import com.supwisdom.dlpay.framework.dao.ShopSettlementDao;
import com.supwisdom.dlpay.framework.security.OperUtil;
+import com.supwisdom.dlpay.framework.util.ImportExcelUtil;
import com.supwisdom.dlpay.framework.util.PageResult;
import com.supwisdom.dlpay.framework.util.StringUtil;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.multipart.MultipartFile;
+import javax.persistence.criteria.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.Optional;
@Service
@@ -26,9 +34,11 @@
private DeviceDao deviceDao;
@Autowired
private ShopDeviceDao shopDeviceDao;
+ @Autowired
+ private ShopSettlementDao shopSettlementDao;
- /* @Override
- public PageResult<TDevice> getDeviceByKey(DeviceSearchBean param) {
+ @Override
+ public PageResult<TDevice> getDeviceByParam(DeviceSearchBean param) {
Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()
, Sort.by("id"));
@@ -40,29 +50,42 @@
if (!StringUtil.isEmpty(param.getDevicename())) {
list.add(cb.like(root.get("devicename").as(String.class), "%" + param.getDevicename() + "%"));
}
-
+ if (!StringUtil.isEmpty(param.getDevphyid())) {
+ list.add(cb.like(root.get("devphyid").as(String.class), "%" + param.getDevphyid() + "%"));
+ }
if (!StringUtil.isEmpty(param.getFactoryid())) {
list.add(cb.equal(root.get("factoryid").as(String.class), param.getFactoryid()));
}
- if (!StringUtil.isEmpty(param.getTermid())) {
- list.add(cb.like(root.get("termid").as(String.class), param.getTermid()));
+ if (null!=param.getId()) {
+ list.add(cb.like(root.get("id").as(String.class), param.getId().toString()));
}
+
return cb.and(list.toArray(new Predicate[list.size()]));
}
};
return new PageResult<>(deviceDao.findAll(spec, pageable));
- }*/
+ }
@Override
public PageResult<TDevice> getDeviceByKey(DeviceSearchBean param) {
Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()
, Sort.by("id"));
- if (null !=param.getId()) {
+ if (null != param.getId()) {
return new PageResult<>(deviceDao.findAllByIdContaining(param.getId(), pageable));
}
return new PageResult<>(deviceDao.findAll(pageable));
}
+ @Override
+ public PageResult<TDevice> getDeviceByGroupId(DeviceSearchBean param) {
+ Pageable pageable = PageRequest.of(param.getPageNo() - 1, param.getPageSize()
+ , Sort.by("id"));
+ if (null != param.getDevgroupid()) {
+ return new PageResult<>(deviceDao.findAllByDevgroupid(param.getDevgroupid(), pageable));
+ }
+ return new PageResult<>(deviceDao.findAll(pageable));
+ }
+
@Override
public List<TDevice> findAll() {
@@ -71,11 +94,15 @@
@Override
public JsonResult saveDevice(TDevice device) {
- if(null==device.getState()){
+ if(shopSettlementDao.countByShopid(device.getShopid())==0){
+ return JsonResult.error("商户不存在");
+ }
+ if (null == device.getState()) {
device.setState(1);
}
- TDevice d=deviceDao.save(device);
- TShopDevice shopDevice=new TShopDevice();
+
+ TDevice d = deviceDao.save(device);
+ TShopDevice shopDevice = new TShopDevice();
shopDevice.setDeviceid(d.getId());
shopDevice.setShopid(d.getShopid());
shopDevice.setOperid(OperUtil.getCurrentOperid());
@@ -97,4 +124,58 @@
}
+ @Override
+ public JsonResult importFile(MultipartFile file, HttpServletRequest request) throws Exception {
+ String fname = file.getOriginalFilename();
+ if (!fname.endsWith(".xls") && !fname.endsWith(".xlsx")) {
+
+ return JsonResult.error("文件格式错误,请选择excel文件格式(.xls/.xlsx)");
+ }
+
+ List<TDevice> sList = new ArrayList<>();
+// InputStream excelstream = new FileInputStream(savePath+"/"+fname);
+ InputStream excelstream = file.getInputStream();
+ List<Object[][]> oList = null;
+ if (fname.endsWith(".xls")) {
+ oList = ImportExcelUtil.getIntegralData(excelstream);//2003版本
+ } else {
+ oList = ImportExcelUtil.getIntegralData07(excelstream);//2007版本以上
+ }
+
+ String msg = "";
+ for (Object[][] data : oList) {
+ for (int i = 1; i < data.length; i++) {
+
+ if (StringUtil.isEmpty((String) data[i][0]) || StringUtil.isEmpty((String) data[i][1]) || StringUtil.isEmpty((String) data[i][2])) {
+ msg = msg + "第" + i + "行,关键字段缺失。<br/>";
+ } else if (deviceDao.countByDevphyid((String) data[i][0]) >0) {
+ msg = msg + "第" + i + "行,设备已存在。<br/>";
+ } else if (shopSettlementDao.countByShopid(Integer.parseInt((String) data[i][2]))==0){
+ msg = msg + "第" + i + "行,商户不存在。<br/>";
+ }
+ else{
+ TDevice d=new TDevice();
+ d.setDevicename((String) data[i][0]);
+ d.setDevphyid((String) data[i][0]);
+ d.setFactoryid((String) data[i][1]);
+ d.setShopid(Integer.parseInt((String) data[i][2]));
+ sList.add(d);
+ }
+ }
+ }
+ /*resp.setCode(Code.SUCCESS);
+ // resp.setMsg("成功导入了"+sList.size()+"条信息");
+ resp.setMsg(String.format(Locale.CHINESE, msg));
+ return resp;*/
+ if(StringUtil.isEmpty(msg)){
+ for(TDevice d:sList){
+ saveDevice(d);
+ }
+
+ return JsonResult.ok("成功导入"+sList.size()+"条信息");
+ }
+ return JsonResult.error(String.format(Locale.CHINESE, msg));
+ }
+
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/ShopSettlementDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopSettlementDao.java
new file mode 100644
index 0000000..aa132f1
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/ShopSettlementDao.java
@@ -0,0 +1,11 @@
+package com.supwisdom.dlpay.framework.dao;
+
+import com.supwisdom.dlpay.framework.domain.TShopSettlement;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+
+@Repository
+public interface ShopSettlementDao extends JpaRepository<TShopSettlement, String> {
+ int countByShopid(Integer shopid);
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopSettlement.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopSettlement.java
new file mode 100644
index 0000000..03a0faf
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopSettlement.java
@@ -0,0 +1,54 @@
+package com.supwisdom.dlpay.framework.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_SHOPSettlement")
+public class TShopSettlement {
+ @Id
+ @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_SETTLEMENT")
+ @Column(name="SHOPSettlementno",unique = true, nullable = false, length = 9)
+ private String SHOPSettlementno;
+
+ @Column(name="SHOPID", precision = 9)
+ private Integer shopid;
+
+ @Column(name="SHOPNAME", length = 200)
+ private String shopname;
+
+ @Column(name="operno", length = 40)
+ private String operno;
+
+
+ public String getSHOPSettlementno() {
+ return SHOPSettlementno;
+ }
+
+ public void setSHOPSettlementno(String SHOPSettlementno) {
+ this.SHOPSettlementno = SHOPSettlementno;
+ }
+
+ public Integer getShopid() {
+ return shopid;
+ }
+
+ public void setShopid(Integer shopid) {
+ this.shopid = shopid;
+ }
+
+ public String getShopname() {
+ return shopname;
+ }
+
+ public void setShopname(String shopname) {
+ this.shopname = shopname;
+ }
+
+ public String getOperno() {
+ return operno;
+ }
+
+ public void setOperno(String operno) {
+ this.operno = operno;
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/ExportExcel.java b/src/main/java/com/supwisdom/dlpay/framework/util/ExportExcel.java
new file mode 100644
index 0000000..02a1604
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ExportExcel.java
@@ -0,0 +1,216 @@
+package com.supwisdom.dlpay.framework.util;
+
+import org.apache.poi.hssf.usermodel.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.OutputStream;
+
+public class ExportExcel {
+
+ /**
+ * Excel导出数据
+ */
+ public static void queryexcel(String filename, String[] titles, String[][] info, HttpServletRequest request, HttpServletResponse response)
+ throws Exception {
+// String path = KSConfiguration.getInstance().getClass().getResource("/").getPath();
+ String path= Thread.currentThread().getContextClassLoader().getResource("").getPath();
+ path=path+"download/";
+// System.out.println("----excel path:"+path);
+ File inFile=new File(path+filename+".xls");
+ if(inFile.exists()){
+// System.out.println("---file exist---");
+ try {
+ response.setContentType("application/x-msdownload");
+ response.setHeader("Content-Disposition", "attachment;" + " filename="
+ + new String(filename.getBytes(), "ISO-8859-1") + ".xls");
+ OutputStream out = response.getOutputStream();
+ FileInputStream inStream = new FileInputStream(inFile);
+ byte[] inOutb = new byte[inStream.available()];
+ inStream.read(inOutb);
+ out.write(inOutb);
+ out.flush();
+ inStream.close();
+ out.close();
+// System.out.println("---before return---");
+ return;
+ } catch (Exception e) {
+// System.out.println("---输出失败---");
+ e.printStackTrace();
+ }
+ }
+// System.out.println("---file not exist---");
+
+ HSSFWorkbook workbook = null;
+ // 读取表头(表字段名)
+// String[] titles = (String[]) request.getAttribute("titles");
+// // 读取数据库数据
+// String[][] info = (String[][]) request.getAttribute("info");
+ // 创建工作簿实例
+ workbook = new HSSFWorkbook();
+ HSSFSheet sheet = workbook.createSheet("sheet1");
+ workbook.getSheet(null);
+
+ HSSFFont font = workbook.createFont();
+ font.setFontName(HSSFFont.FONT_ARIAL);
+ font.setFontHeightInPoints((short) 11);
+ //font.setBold(true);
+ HSSFCellStyle style = workbook.createCellStyle();
+ style.setFont(font);
+ style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 居中
+// style.setWrapText(true);
+ // 加载表头数据
+
+ HSSFRow titleRow = sheet.createRow(0);
+ for (int i = 0; i < titles.length; i++) {
+ HSSFCell cell = titleRow.createCell(i);
+ cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+ cell.setCellValue(titles[i]);
+ cell.setCellStyle(style);
+ }
+ if (info != null) {
+ for (int i = 0; i < info.length; i++) {
+ HSSFRow dataRow = sheet.createRow(i + 1);
+ for (int j = 0; j < info[i].length; j++) {
+ HSSFCell cell = dataRow.createCell(j);
+ sheet.setColumnWidth(j, 3500);
+ if(j==7){
+ sheet.setColumnWidth(j, 10000);
+ }
+ cell.setCellType(HSSFCell.CELL_TYPE_STRING);
+ cell.setCellValue(info[i][j]);
+ }
+ }
+ }
+// System.out.println("---下载之前---");
+ // 通过数据流下载工作簿
+ try {
+ response.setContentType("application/x-msdownload");
+ response.setHeader("Content-Disposition", "attachment;" + " filename="
+ + new String(filename.getBytes(), "ISO-8859-1") + ".xls");
+ OutputStream out = response.getOutputStream();
+ workbook.write(out);
+ out.flush();
+ out.close();
+// System.out.println("---下载成功---");
+ } catch (Exception e) {
+// System.out.println("---下载失败---");
+ e.printStackTrace();
+ }
+ }
+
+ // 中文名
+ public static String toUtf8String(String s) {
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if (c >= 0 && c <= 255) {
+ sb.append(c);
+ } else {
+ byte[] b;
+ try {
+ b = Character.toString(c).getBytes("UTF-8");
+ } catch (Exception ex) {
+ System.out.println(ex);
+ b = new byte[0];
+ }
+ for (int j = 0; j < b.length; j++) {
+ int k = b[j];
+ if (k < 0)
+ k += 256;
+ sb.append("%" + Integer.toHexString(k).toUpperCase());
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+// public static void writeDBF(String filename, HttpServletRequest request, HttpServletResponse response)
+// throws Exception {
+//
+// // 读取表头(表字段名)
+// String[] dbf_titles = (String[]) request.getAttribute("dbf_titles");
+//
+// // 读取数据库数据
+// String[][] info = (String[][]) request.getAttribute("info");
+// // 创建工作簿实例
+// DBFField[] fields = new DBFField[dbf_titles.length];
+//
+// for (int i = 0; i < dbf_titles.length; i++) {
+// fields[i] = new DBFField();
+// fields[i].setName(dbf_titles[i]);
+// fields[i].setDataType(DBFField.FIELD_TYPE_C);
+// fields[i].setFieldLength(255);
+// }
+//
+// // 定义DBFWriter实例用来写DBF文件
+// DBFWriter writer = new DBFWriter();
+// writer.setCharactersetName("GBK");
+// // 把字段信息写入DBFWriter实例,即定义表结构
+// writer.setFields(fields);
+//
+// if (info != null) {
+// for (int i = 0; i < info.length; i++) {
+// Object[] rowData = new Object[dbf_titles.length];
+// for (int j = 0; j < info[i].length; j++) {
+// rowData[j] = info[i][j];
+// }
+// writer.addRecord(rowData);
+//
+// }
+// }
+//
+//
+// OutputStream out = response.getOutputStream();
+// try {
+// response.setContentType("applicationnd.ms-excel");
+// response.setHeader("Content-Disposition", "attachment;" + " filename="
+// + new String(filename.getBytes(), "ISO-8859-1") + ".dbf");
+//
+// writer.write(out);
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// }finally{
+// out.flush();
+// out.close();
+//
+// }
+//
+// }
+
+
+ /**
+ * 检验结果Excel导出数据
+ */
+ public static void queryCheckExcel(String filename, String path, HttpServletRequest request,
+ HttpServletResponse response) throws Exception {
+ if (StringUtil.isEmpty(filename)) {
+ throw new Exception("Excel file name is null!");
+ }
+
+ File inFile = new File(path, filename + ".xls");
+ if (inFile.exists()) {
+ try {
+ response.setContentType("application/x-msdownload");
+ response.setHeader("Content-Disposition", "attachment;" + " filename="
+ + new String(filename.getBytes(), "ISO-8859-1") + ".xls");
+ OutputStream out = response.getOutputStream();
+ FileInputStream inStream = new FileInputStream(inFile);
+ byte[] inOutb = new byte[inStream.available()];
+ inStream.read(inOutb);
+ out.write(inOutb);
+ out.flush();
+ inStream.close();
+ out.close();
+ return;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ throw new Exception("Excel file not exist!");
+ }
+ }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/ImportExcelUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/ImportExcelUtil.java
new file mode 100644
index 0000000..eb601d2
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ImportExcelUtil.java
@@ -0,0 +1,376 @@
+/**
+ *
+ */
+package com.supwisdom.dlpay.framework.util;
+
+import org.apache.poi.POIXMLDocument;
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PushbackInputStream;
+import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+
+public class ImportExcelUtil {
+ static SimpleDateFormat sFormat = new SimpleDateFormat("yyyyMMdd");
+ /**
+ * @param excelFile
+ * @return
+ * @throws IOException
+ * @throws InvalidFormatException
+ */
+ public static Workbook createCommonWb(InputStream excelFile) throws Exception {
+
+ if (excelFile.markSupported()) {
+ excelFile = new PushbackInputStream(excelFile, 8);
+ }
+ if (POIFSFileSystem.hasPOIFSHeader(excelFile)) {//2003
+ return (Workbook) new HSSFWorkbook(excelFile);
+ }
+ else
+ if (POIXMLDocument.hasOOXMLHeader(excelFile)) {//2007
+ return new XSSFWorkbook(OPCPackage.open(excelFile));
+ }
+ else {
+ System.out.println("其他版本");
+ return null;
+ }
+
+ }
+
+ /**
+ *
+ * @param inp
+ * @return
+ * @throws InvalidFormatException
+ * @throws IOException
+ */
+ public static Object[][] getBackWbData(InputStream inp)
+ throws Exception, IOException {
+
+ Workbook wb = createCommonWb(inp);
+ return getBackWbData(wb);
+
+ }
+
+ /**
+ * ͨ��sheetName
+ *
+ * @param wb
+ * @param column
+ * @param sheetName
+ * @return
+ */
+
+ public static Object[][] getBackWbData(Workbook wb, int column,
+ String sheetName) {
+
+ Sheet sheet = wb.getSheet(sheetName);
+ return getData(column, sheet);
+ }
+
+ /**
+ *
+ * @param wb
+ * @param column
+ * @param sheetNum
+ * @return
+ */
+ public static Object[][] getBackWbData(Workbook wb, int column, int sheetNum) {
+
+ Sheet sheet = wb.getSheetAt(sheetNum);
+ return getData(column, sheet);
+ }
+
+ /**
+ * sheet
+ *
+ * @param wb
+ * @param column
+ * @return
+ */
+
+ public static Object[][] getBackWbData(Workbook wb, int column) {
+
+ return getBackWbData(wb, column, 0);
+ }
+
+ /**
+ * sheet
+ *
+ * @param wb
+ * @return
+ */
+ public static Object[][] getBackWbData(Workbook wb) {
+
+ return getBackWbData(wb, wb.getSheetAt(0).getRow(0).getLastCellNum());
+
+ }
+
+ /**
+ * @param column
+ * @param sheet
+ * @return
+ */
+ private static Object[][] getData(int column, Sheet sheet) {
+ Object data[][] = new String[sheet.getLastRowNum()][column];
+ for (int i = 0; i < sheet.getLastRowNum(); i++) {
+ Row row = sheet.getRow(i);
+ for (int j = 0; j < row.getLastCellNum(); j++) {
+ data[i][j] = getCellFormatValue(row.getCell(j));
+ }
+ }
+ return data;
+ }
+
+ /**
+ * Cell
+ *
+ * @param cell
+ * @return
+ */
+ private static String getCellFormatValue(Cell cell) {
+ String cellvalue = "";
+ if (cell != null) {
+ switch (cell.getCellType()) {
+ case Cell.CELL_TYPE_NUMERIC:
+ case Cell.CELL_TYPE_FORMULA: {
+
+ if ( cell instanceof Date) {
+ // cellvalue = cell.getDateCellValue().toLocaleString();
+ Date date = cell.getDateCellValue();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ cellvalue = sdf.format(date);
+ }
+ else {
+ cellvalue = String.valueOf(cell.getNumericCellValue());
+ }
+ break;
+ }
+ case Cell.CELL_TYPE_STRING:
+ cellvalue = cell.getRichStringCellValue().getString();
+ break;
+ default:
+ cellvalue = " ";
+ }
+ } else {
+ cellvalue = "";
+ }
+ return cellvalue;
+
+ }
+
+ /**
+ *
+ * @param inp
+ * @return
+ * @throws InvalidFormatException
+ * @throws IOException
+ */
+ //@SuppressWarnings("deprecation")
+ public static Object[][] getWbData(InputStream inp)
+ throws Exception, IOException {
+ POIFSFileSystem fs = new POIFSFileSystem(inp);
+ HSSFWorkbook wb = new HSSFWorkbook(fs);
+ HSSFSheet sheet = wb.getSheetAt(0);
+ Iterator<Row> rows = sheet.rowIterator();
+ int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();// ���������
+ Object data[][] = new Object[sheet.getLastRowNum() + 1][coloumNum];
+ while (rows.hasNext()) {
+ HSSFRow row = (HSSFRow) rows.next();
+ Iterator<Cell> cells = row.cellIterator();
+ while (cells.hasNext()) {
+ HSSFCell cell = (HSSFCell) cells.next();
+ switch (cell.getCellType()) {
+ case HSSFCell.CELL_TYPE_NUMERIC:
+ DecimalFormat df = new DecimalFormat("0");
+ String numberCode = df.format(cell.getNumericCellValue());
+ data[row.getRowNum()][cell.getCellNum()] = numberCode;
+ break;
+ case HSSFCell.CELL_TYPE_STRING:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getStringCellValue();
+ break;
+ case HSSFCell.CELL_TYPE_BOOLEAN:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getBooleanCellValue();
+ break;
+ case HSSFCell.CELL_TYPE_FORMULA:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getCellFormula();
+ break;
+ default:
+ data[row.getRowNum()][cell.getCellNum()] = "";
+ break;
+ }
+ }
+ }
+ return data;
+ }
+
+ /**
+ * @return��List<Object[][]> oList
+ * @param��InputStream excelFile
+ * @Description:check Input Stream
+ */
+ public static List<Object[][]> checkInputStream(InputStream excelFile) {
+
+ try{
+ if (!excelFile.markSupported()) {//������Ĵ�
+ excelFile = new PushbackInputStream(excelFile, 8);
+ }
+// if (POIFSFileSystem.hasPOIFSHeader(excelFile)) {
+// List<Object[][]> oList= ImportExcelUtil.getIntegralData(excelFile);
+// return oList;
+// } else
+ if (POIXMLDocument.hasOOXMLHeader(excelFile)) {
+ List<Object[][]> oList=ImportExcelUtil.getIntegralData07(excelFile);
+ return oList;
+ }
+ }catch(IOException e){
+// System.out.print("999999999 The error is::::");
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ System.out.print("999999999 The error is::::");
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ /**
+ * @return�� List<Object[][]> oList
+ * @param��InputStream excelFile
+ * @Description:excel03 import
+ */
+ @SuppressWarnings({ "rawtypes", "deprecation" })
+ public static List<Object[][]> getIntegralData(InputStream excelFile)throws Exception {
+
+ POIFSFileSystem fs = new POIFSFileSystem(excelFile);
+ HSSFWorkbook wb = new HSSFWorkbook(fs);
+ List<Object[][]> oList = new ArrayList<Object[][]>();
+
+ HSSFSheet sheet = wb.getSheetAt(0);
+ Iterator rows = sheet.rowIterator();
+ int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();
+// System.out.println("66666 coloumNum:::"+coloumNum);
+ Object data[][] = new Object[sheet.getLastRowNum() + 1][coloumNum];
+ while (rows.hasNext()) {
+ HSSFRow row = (HSSFRow) rows.next();
+ Iterator cells = row.cellIterator();
+
+ while (cells.hasNext()) {
+ HSSFCell cell = (HSSFCell) cells.next();
+
+ //默认设置前三个字段为string类型
+ for(int i=0;i<=2;i++){
+ HSSFCell cell1 = row.getCell(i);
+ cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
+ }
+
+ switch (cell.getCellType()) {
+ case HSSFCell.CELL_TYPE_NUMERIC:
+ data[row.getRowNum()][cell.getCellNum()] = (long)cell.
+ getNumericCellValue();
+ break;
+ case HSSFCell.CELL_TYPE_STRING:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getStringCellValue();
+ break;
+ case HSSFCell.CELL_TYPE_BOOLEAN:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getBooleanCellValue();
+ break;
+ case HSSFCell.CELL_TYPE_FORMULA:
+ data[row.getRowNum()][cell.getCellNum()] = cell
+ .getCellFormula();
+ break;
+ }
+ }
+ }
+
+ oList.add(data);
+
+ return oList;
+ }
+
+
+ /**
+ * 2007-xlsx格式
+ * @return�� List<Object[][]> oList
+ * @param��InputStream excelFile
+ * @Description:excel07 import
+ */
+ public static List<Object[][]> getIntegralData07(InputStream excelFile)throws Exception, IOException {
+ OPCPackage op=OPCPackage.open(excelFile);
+ XSSFWorkbook xwb = new XSSFWorkbook(op);
+ List<Object[][]> oList = new ArrayList<Object[][]>();
+ for (int k = 0; k < xwb.getNumberOfSheets(); k++){
+ XSSFSheet sheet = xwb.getSheetAt(k);
+ Iterator<Row> rows = sheet.rowIterator();
+ int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();// get number of columns
+ Object data[][] = new Object[sheet.getLastRowNum() + 1][coloumNum];
+ while (rows.hasNext()) {
+ XSSFRow row = (XSSFRow) rows.next();
+ Iterator<Cell> cells = row.cellIterator();
+ while (cells.hasNext()) {
+ XSSFCell cell = (XSSFCell) cells.next();
+ for (int i=0;i<3;i++){
+ cell.setCellType(XSSFCell.CELL_TYPE_STRING);
+ }
+ switch (cell.getCellType()) {
+ case XSSFCell.CELL_TYPE_NUMERIC:
+ if (100000000 < cell.getNumericCellValue()) {
+ double d = cell.getNumericCellValue();
+ Date date = HSSFDateUtil.getJavaDate(d);
+ data[row.getRowNum()][cell.getColumnIndex()] = sFormat
+ .format(date);
+ } else {
+ DecimalFormat df = new DecimalFormat("0");
+ String numberCode = df.format(cell
+ .getNumericCellValue());
+ data[row.getRowNum()][cell.getColumnIndex()] = numberCode;
+ }
+ break;
+ case XSSFCell.CELL_TYPE_STRING:
+ data[row.getRowNum()][cell.getColumnIndex()] = cell
+ .getStringCellValue();
+ break;
+ case XSSFCell.CELL_TYPE_BOOLEAN:
+ data[row.getRowNum()][cell.getColumnIndex()] = cell
+ .getBooleanCellValue();
+ break;
+ case XSSFCell.CELL_TYPE_FORMULA:
+ data[row.getRowNum()][cell.getColumnIndex()] = cell
+ .getCellFormula();
+ break;
+ default:
+ data[row.getRowNum()][cell.getColumnIndex()] = "";
+ break;
+ }
+ }
+ }
+ oList.add(data);
+ }
+ return oList;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt
index cc262cb..fe3d1a6 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/notify_api_controller.kt
@@ -51,10 +51,10 @@
// 得到根元素的所有子节点
val elementList = root.elements()
// 遍历所有子节点
- for (e in elementList) {
+ /* for (e in elementList) {
map[e.name] = e.text
logger.error("*************" + e.name + "=" + e.text + "************************")
- }
+ }*/
// 释放资源
inputStream.close()
diff --git a/src/main/resources/templates/area/form.html b/src/main/resources/templates/area/form.html
index 2bcc90d..22308ab 100644
--- a/src/main/resources/templates/area/form.html
+++ b/src/main/resources/templates/area/form.html
@@ -81,7 +81,6 @@
form.on('submit(form-submit)', function (data) {
layer.load(2);
let token = $("meta[name='_csrf_token']").attr("value");
- debugger
$.ajax({
type: "POST",
dataType: "json",
diff --git a/src/main/resources/templates/device/form.html b/src/main/resources/templates/device/form.html
index 6b5265d..5540300 100644
--- a/src/main/resources/templates/device/form.html
+++ b/src/main/resources/templates/device/form.html
@@ -75,7 +75,6 @@
form.on('submit(form-submit)', function (data) {
layer.load(2);
let token = $("meta[name='_csrf_token']").attr("value");
- debugger
$.ajax({
type: "POST",
dataType: "json",
diff --git a/src/main/resources/templates/device/import.html b/src/main/resources/templates/device/import.html
new file mode 100644
index 0000000..c5a3bd0
--- /dev/null
+++ b/src/main/resources/templates/device/import.html
@@ -0,0 +1,92 @@
+<div style="color: #0c91e5" align="right">
+ <a th:href="@{/device/download}">点击此处下载导入模板</a>
+</div>
+<form lay-filter="form" class="layui-form model-form" >
+ <!-- row -->
+ <div class="layui-form-item">
+ <label class="control-label">请选择导入文件<span class="required"> * </span></label>
+ <input type="file" name="file" id="file" placeholder="请选择xls格式文件">
+ </div>
+
+ <!-- /row -->
+ <!-- row -->
+ <div class="layui-form-item" align="center">
+ <div id="importError" style="color:red">
+ </div>
+ <div id="importInfo" >
+ </div>
+ </div>
+
+ <!-- <div class="form-actions right">
+ <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
+ <button type="submit" class="btn btn-success" >保存</button>
+ </div>-->
+ <div class="layui-form-item model-form-footer">
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+ <button class="layui-btn" lay-filter="form-import" lay-submit id="importbtn">保存</button>
+ </div>
+</form>
+
+<script>
+ layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+ var layer = layui.layer;
+ var admin = layui.admin;
+ var form = layui.form;
+
+ var url = '/device/import';
+ // 回显user数据
+
+ /* let fid = admin.getTempData("fid");
+ if (fid) {
+ form.val('form', {"fid": fid});
+ }*/
+ // 表单提交事件
+ form.on('submit(form-import)', function (data) {
+ $("#importError").html("");
+ var files = $('#file').prop('files');
+ var formData = new FormData();
+ $.each(files, function (i, file) {
+
+ formData.append('file', file);
+ });
+ console.log(formData);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ debugger
+ $.ajax({
+ type: "POST",
+ url: url,
+ dataType: 'json',
+ processData:false,
+ contentType: false,
+ data: formData,
+ headers: {
+ 'Accept': 'application/json',
+ 'X-CSRF-TOKEN': token,
+ },
+ success: function (result) {
+ layer.closeAll('loading');
+ if (result.code == 200) {
+ layer.msg(result.msg, {icon: 1});
+ admin.finishPopupCenter();
+ } else if (result.code == 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ $("#importError").html("导入结束,导入失败信息:<br/>" + result.msg);
+
+ console.log('err:' + result.code);
+ /* layer.msg(result.msg, {icon: 2});*/
+ }
+ },
+ error: function () {
+ layer.closeAll('loading');
+ layer.msg("请求服务器失败!", {icon: 2});
+ }
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/device/index.html b/src/main/resources/templates/device/index.html
index 59fe5f8..45c1d12 100644
--- a/src/main/resources/templates/device/index.html
+++ b/src/main/resources/templates/device/index.html
@@ -9,10 +9,12 @@
<div class="layui-card-body">
<div class="layui-form toolbar">
搜索:
- <input id="search-value" class="layui-input search-input" type="text" placeholder="输入功能名称"/> 
+ <input id="search-value" class="layui-input search-input" type="text" placeholder="输入终端编号"/> 
<button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
</button>
<button id="btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加设备</button>
+ <button id="btn-import" class="layui-btn icon-btn" ><i class="layui-icon"></i>批量导入</button>
+
</div>
<table class="layui-table" id="table" lay-filter="table"></table>
</div>
@@ -39,9 +41,9 @@
cols: [
[
{field: 'id', title: '终端编号', sort: true},
- {field: 'devphyid', sort: true, width: 300, title: '设备物理id'},
- {field: 'shopid', sort: true, width: 300, title: '商户id'},
- {field: 'factoryid', sort: true, width: 300, title: '设备厂商'},
+ {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
+ {field: 'shopid', sort: true, width: 200, title: '商户id'},
+ {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
{field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
{
field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
@@ -59,6 +61,18 @@
$('#btn-add').click(function () {
showModel();
});
+ $('#btn-import').click(function () {
+ showDownload();
+ });
+ let showDownload = function () {
+ let title ='导入';
+ admin.popupCenter({
+ title: title,
+ path: '/device/loadimport',
+ finish: function () {
+ }
+ });
+ };
let showModel = function (data) {
let title = data ? '修改设备' : '添加设备';
admin.putTempData('t_dev', data);
diff --git a/src/main/resources/templates/devicegroup/form.html b/src/main/resources/templates/devicegroup/form.html
new file mode 100644
index 0000000..974c2e8
--- /dev/null
+++ b/src/main/resources/templates/devicegroup/form.html
@@ -0,0 +1,79 @@
+<!-- operator表单弹窗 -->
+<form id="form" lay-filter="form" class="layui-form model-form">
+ <input name="devgroupid" id="devgroupid" type="hidden"/>
+ <div class="layui-form-item">
+ <label class="layui-form-label">设备组名称</label>
+ <div class="layui-input-block">
+ <input name="groupname" type="text" class="layui-input" maxlength="20"
+ lay-verify="required|groupname" required/>
+ </div>
+ </div>
+ <div class="layui-form-item">
+ <label class="layui-form-label">上级设备组</label>
+ <div class="layui-input-block">
+ <select name="pid" id="pid" lay-verify="required">
+ <option value="0">根设备</option>
+ <option th:each="group : ${grouplist}" th:value="${group.devgroupid}">[[${group.groupname}]]</option>
+ </select>
+ </div>
+ </div>
+
+ <div class="layui-form-item model-form-footer">
+ <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
+ <button class="layui-btn" lay-filter="form-submit" lay-submit id="submitbtn">保存</button>
+ </div>
+</form>
+
+<script>
+ layui.use(['layer', 'admin', 'form', 'formSelects'], function () {
+ var layer = layui.layer;
+ var admin = layui.admin;
+ var form = layui.form;
+ form.render('select');
+
+ var url = '/devicegroup/add';
+
+ /* var group = admin.getTempData('t_devgroup');
+ if (group) {
+ $('input[name="devgroupid"]').attr('readonly', 'readonly');
+ form.val('form', group);
+ }*/
+
+ // 表单提交事件
+ form.on('submit(form-submit)', function (data) {
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: url,
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN': token,
+ },
+ data: JSON.stringify(data.field),
+ success: function (result) {
+ layer.closeAll('loading');
+ if (result.code == 200) {
+ layer.msg(result.msg, {icon: 1});
+ admin.finishPopupCenter();
+ } else if (result.code == 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ console.log('err:' + result.code);
+ layer.msg(result.msg, {icon: 2});
+ }
+ },
+ error: function () {
+ layer.closeAll('loading');
+ layer.msg("请求服务器失败!", {icon: 2});
+ }
+ });
+ return false;
+ });
+ });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/devicegroup/index.html b/src/main/resources/templates/devicegroup/index.html
new file mode 100644
index 0000000..c716fea
--- /dev/null
+++ b/src/main/resources/templates/devicegroup/index.html
@@ -0,0 +1,301 @@
+<div class="layui-card layui-col-xs3" style="padding-bottom: 40%">
+ <div class="layui-card-header">
+ <h2 class="header-title">设备组</h2>
+
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ <button id="btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon"></i>添加设备组</button>
+ </div>
+ <div id="menuContent" class="menuContent " style="position: absolute;">
+ <ul id="ztree-menu" class="ztree" style="margin-top:0;"></ul>
+ </div>
+ </div>
+</div>
+
+
+<div class="layui-card layui-col-xs8" style="margin-left:3% ">
+ <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 class="layui-form toolbar">
+ <input id="search-value" class="layui-input search-input" type="hidden"/> 
+ <!-- <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
+ </button>-->
+
+ </div>
+ <table class="layui-table" id="table" lay-filter="table"></table>
+ </div>
+</div>
+
+<script type="text/html" id="dev-tpl-state">
+ <input type="checkbox" lay-filter="dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销" disabled
+ {{d.state=='1'?'checked':''}} />
+</script>
+<script>
+
+ layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+ let form = layui.form;
+ let table = layui.table;
+ let admin = layui.admin;
+
+ form.render('select');
+
+ // 渲染表格
+ table.render({
+ elem: '#table',
+ url: '/devicegroup/listDevice',
+ page: true,
+ cols: [
+ [
+ {field: 'id', title: '终端编号', sort: true},
+ {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
+ {field: 'shopid', sort: true, width: 200, title: '商户id'},
+ {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
+ {field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
+ ]
+ ]
+ });
+ // 搜索按钮点击事件
+ $('#btn-search').click(function () {
+ let key = $('#search-value').val();
+ table.reload('table', {where: {searchkey: key}, page: {curr: 1}});
+ });
+ $('#btn-add').click(function () {
+ showModel();
+ });
+
+ let showModel = function (data) {
+ let title = data ? '修改设备组' : '添加设备组';
+ admin.putTempData('t_devgroup', data);
+ admin.popupCenter({
+ title: title,
+ path: '/devicegroup/loadadd',
+ finish: function () {
+ loadTree();
+ }
+ });
+ };
+
+
+ // 工具条点击事件
+ table.on('tool(table)', function (obj) {
+ let data = obj.data;
+ let layEvent = obj.event;
+ console.log(data);
+ if (layEvent === 'edit') {
+ showModel(data);
+ } else if (layEvent === 'del') {
+ showDelete(data);
+ }
+ });
+ let showDelete = function (data) {
+ layer.confirm('确定要删除吗?', function (i) {
+ layer.close(i);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('/device/delete', {
+ id: data.id,
+ _csrf: token
+ }, function (data) {
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ layer.msg(data.msg, {icon: 1});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ }
+ table.reload('table', {});
+ }, function (ret) {
+ console.log(ret);
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+ };
+
+ form.on('switch(dev-tpl-state)', function (obj) {
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('/device/updatestate', {
+ id: obj.elem.value,
+ _csrf: token,
+ state: obj.elem.checked ? 1 : 0
+ }, function (data) {
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ layer.msg(data.msg, {icon: 1});
+ //table.reload('table-user', {});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ $(obj.elem).prop('checked', !obj.elem.checked);
+ form.render('checkbox');
+ }
+ }, function () {
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+
+
+ function OnGrpClick(e, treeId, treeNode) {
+ console.log(treeNode.id);
+ table.reload('table', {where: {searchkey: treeNode.id}, page: {curr: 1}});
+
+ }
+
+ function loadZTree(eNodes) {
+ var menuSetting = {
+ view: {
+ dblClickExpand: true,
+ selectedMulti: false,
+ showLine: true,
+ showIcon: false
+ },
+ edit: {
+ enable: true,
+ drag: {
+ isMove: true,
+ prev: true,
+ autoOpenTime: 0
+ },
+ editNameSelectAll: true,
+ showRemoveBtn: true,
+ removeTitle: "删除节点",
+ renameTitle: "编辑节点名称",
+ showRenameBtn: true,
+ },
+ data: {
+ simpleData: {
+ enable: true
+ }
+ },
+ callback: {
+ onClick: OnGrpClick,
+ onRename: onRename,
+ beforeRemove: beforeRemove
+ }
+ };
+ $.fn.zTree.init($("#ztree-menu"), menuSetting, eNodes);
+ }
+
+ $(document).ready(function () {
+ loadTree();
+ })
+
+ function loadTree() {
+ let token = $("meta[name='_csrf_token']").attr("value");
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: "/devicegroup/listTree",
+ headers: {
+ 'Accept': 'application/json',
+ 'X-CSRF-TOKEN': token,
+ },
+ data: {},
+ success: function (result) {
+ console.log("获取返回", result.data);
+ if (result.code == 0) {
+ loadZTree(result.data);
+ } else {
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ }
+ },
+ error: function (data) {
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ }
+ })
+ }
+
+ function beforeRemove(treeId, treeNode) {
+ var flag = false;
+ layer.confirm("确认要删除当前节点(" + treeNode.name + ")吗?", {title: "删除确认"}, function (i) {
+ layer.close(i);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('/devicegroup/delete', {
+ id: treeNode.id,
+ _csrf: token
+ }, function (data) {
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ flag = true;
+ loadTree();
+ layer.msg(data.msg, {icon: 1});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ }
+ }, function (ret) {
+ console.log(ret);
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+
+ return flag;
+ }
+
+ function onRename(e, treeId, treeNode) {
+ var data = {
+ 'devgroupid': treeNode.id,
+ 'pid': treeNode.pId,
+ 'groupname': treeNode.name
+ };
+ let token = $("meta[name='_csrf_token']").attr("value");
+ var url = 'devicegroup/add';
+ $.ajax({
+ type: "POST",
+ dataType: "json",
+ url: url,
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN': token,
+ },
+ data: JSON.stringify(data),
+ success: function (result) {
+ layer.closeAll('loading');
+ if (result.code == 200) {
+ layer.msg(result.msg, {icon: 1});
+ } else if (result.code == 401) {
+ layer.msg(result.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ console.log('err:' + result.code);
+ layer.msg(result.msg, {icon: 2});
+ }
+ },
+ error: function () {
+ layer.closeAll('loading');
+ layer.msg("请求服务器失败!", {icon: 2});
+ }
+ });
+ }
+
+ });
+
+
+</script>
diff --git a/src/main/resources/templates/devicemanage/index.html b/src/main/resources/templates/devicemanage/index.html
new file mode 100644
index 0000000..1948862
--- /dev/null
+++ b/src/main/resources/templates/devicemanage/index.html
@@ -0,0 +1,156 @@
+<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 class="layui-form toolbar">
+ 搜索:
+ <input id="search-value" class="layui-input search-input" type="text" placeholder="输入终端编号"/> 
+ <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon"></i>搜索
+ </button>
+
+ </div>
+ <table class="layui-table" id="table" lay-filter="table"></table>
+ </div>
+</div>
+
+<script type="text/html" id="dev-tpl-state">
+ <input type="checkbox" lay-filter="dev-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="正常|注销"
+ {{d.state=='1'?'checked':''}} />
+</script>
+<script>
+
+ layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+ let form = layui.form;
+ let table = layui.table;
+ let admin = layui.admin;
+
+ form.render('select');
+
+ // 渲染表格
+ table.render({
+ elem: '#table',
+ url: '/device/list',
+ page: true,
+ cols: [
+ [
+ {field: 'id', title: '终端编号', sort: true},
+ {field: 'devphyid', sort: true, width: 200, title: '设备物理id'},
+ {field: 'shopid', sort: true, width: 200, title: '商户id'},
+ {field: 'factoryid', sort: true, width: 200, title: '设备厂商'},
+ {field: 'state', title: '状态', sort: true, width: 100, templet: '#dev-tpl-state'},
+ {
+ field: 'id', align: 'center', title: '操作', fixed: 'right', templet: function (item) {
+ return ' <a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a> ';
+ }
+ }
+ ]
+ ]
+ });
+ // 搜索按钮点击事件
+ $('#btn-search').click(function () {
+ let key = $('#search-value').val();
+ table.reload('table', {where: {searchkey: key}, page: {curr: 1}});
+ });
+ $('#btn-add').click(function () {
+ showModel();
+ });
+ $('#btn-import').click(function () {
+ showDownload();
+ });
+ let showDownload = function () {
+ let title ='导入';
+ admin.popupCenter({
+ title: title,
+ path: '/device/loadimport',
+ finish: function () {
+ }
+ });
+ };
+ let showModel = function (data) {
+ let title = data ? '修改设备' : '添加设备';
+ admin.putTempData('t_dev', data);
+ admin.popupCenter({
+ title: title,
+ path: '/device/loadadd',
+ finish: function () {
+ table.reload('table', {});
+ }
+ });
+ };
+
+
+ // 工具条点击事件
+ table.on('tool(table)', function (obj) {
+ let data = obj.data;
+ let layEvent = obj.event;
+ console.log(data);
+ if (layEvent === 'edit') {
+ showModel(data);
+ } else if (layEvent === 'del') {
+ showDelete(data);
+ }
+ });
+ let showDelete = function (data) {
+ layer.confirm('确定要删除吗?', function (i) {
+ layer.close(i);
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('/device/delete', {
+ id: data.id,
+ _csrf: token
+ }, function (data) {
+ console.log(data.code);
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ layer.msg(data.msg, {icon: 1});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ }
+ table.reload('table', {});
+ }, function (ret) {
+ console.log(ret);
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+ };
+
+ form.on('switch(dev-tpl-state)', function (obj) {
+ layer.load(2);
+ let token = $("meta[name='_csrf_token']").attr("value");
+ admin.go('/device/updatestate', {
+ id: obj.elem.value,
+ _csrf: token,
+ state: obj.elem.checked ? 1 : 0
+ }, function (data) {
+ layer.closeAll('loading');
+ if (data.code == 200) {
+ layer.msg(data.msg, {icon: 1});
+ //table.reload('table-user', {});
+ } else if (data.code == 401) {
+ layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+ location.replace('/login');
+ }, 1000);
+ return;
+ } else {
+ layer.msg(data.msg, {icon: 2});
+ $(obj.elem).prop('checked', !obj.elem.checked);
+ form.render('checkbox');
+ }
+ },function () {
+ layer.closeAll('loading');
+ layer.msg('请求失败了,请稍后再试', {icon: 2});
+ });
+ });
+ });
+</script>