deason 7 سال پیش
والد
کامیت
9f59f59dc8

+ 5 - 6
src/main/java/cn/com/qmth/examcloud/app/controller/DeviceRecordController.java

@@ -15,10 +15,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 设备访问记录Controller
@@ -37,8 +34,10 @@ public class DeviceRecordController {
 
     @ResponseBody
     @RequestMapping(value = "/list", method = RequestMethod.POST)
-    public Result<Page<DeviceRecord>> list(@RequestBody(required = false) DeviceRecord params) throws Exception {
-        return deviceRecordService.getDeviceRecordList(params);
+    public Result<Page<DeviceRecord>> list(@RequestBody(required = false) DeviceRecord params,
+                                           @RequestParam(defaultValue = "1") Integer pageNo,
+                                           @RequestParam(defaultValue = "10") Integer pageSize) throws Exception {
+        return deviceRecordService.getDeviceRecordList(params, pageNo, pageSize);
     }
 
 }

+ 58 - 3
src/main/java/cn/com/qmth/examcloud/app/service/DeviceRecordService.java

@@ -10,6 +10,7 @@ package cn.com.qmth.examcloud.app.service;
 import cn.com.qmth.examcloud.app.model.DeviceRecord;
 import cn.com.qmth.examcloud.app.model.Result;
 import cn.com.qmth.examcloud.app.repository.DeviceRecordRepository;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,13 @@ import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 设备访问记录Service
  */
@@ -30,9 +38,56 @@ public class DeviceRecordService {
     @Autowired
     private DeviceRecordRepository deviceRecordRepository;
 
-    public Result<Page<DeviceRecord>> getDeviceRecordList(DeviceRecord params) {
-        Specification<DeviceRecord> spec = null;
-        Pageable pageable = new PageRequest(0, 10);
+    public Result<Page<DeviceRecord>> getDeviceRecordList(DeviceRecord params, Integer pageNo, Integer pageSize) {
+        Specification<DeviceRecord> spec = new Specification<DeviceRecord>() {
+            @Override
+            public Predicate toPredicate(Root<DeviceRecord> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                List<Predicate> predicates = new ArrayList<>();
+                if (StringUtils.isNotBlank(params.getSystem())) {
+                    predicates.add(builder.equal(root.get("system"), params.getSystem()));
+                }
+                if (StringUtils.isNotBlank(params.getDeviceId())) {
+                    predicates.add(builder.equal(root.get("deviceId"), params.getDeviceId()));
+                }
+                if (StringUtils.isNotBlank(params.getNetType())) {
+                    predicates.add(builder.equal(root.get("netType"), params.getNetType()));
+                }
+                if (StringUtils.isNotBlank(params.getBrand())) {
+                    predicates.add(builder.equal(root.get("brand"), params.getBrand()));
+                }
+                if (StringUtils.isNotBlank(params.getModel())) {
+                    predicates.add(builder.equal(root.get("model"), params.getModel()));
+                }
+                if (StringUtils.isNotBlank(params.getSysVersion())) {
+                    predicates.add(builder.equal(root.get("sysVersion"), params.getSysVersion()));
+                }
+                if (StringUtils.isNotBlank(params.getAppVersion())) {
+                    predicates.add(builder.equal(root.get("appVersion"), params.getAppVersion()));
+                }
+                if (StringUtils.isNotBlank(params.getAppCode())) {
+                    predicates.add(builder.equal(root.get("appCode"), params.getAppCode()));
+                }
+                if (StringUtils.isNotBlank(params.getPatchCode())) {
+                    predicates.add(builder.equal(root.get("patchCode"), params.getPatchCode()));
+                }
+                if (StringUtils.isNotBlank(params.getAccount())) {
+                    predicates.add(builder.equal(root.get("account"), params.getAccount()));
+                }
+                if (StringUtils.isNotBlank(params.getLoginKey())) {
+                    predicates.add(builder.equal(root.get("loginKey"), params.getLoginKey()));
+                }
+                if (StringUtils.isNotBlank(params.getLoginToken())) {
+                    predicates.add(builder.equal(root.get("loginToken"), params.getLoginToken()));
+                }
+                if (StringUtils.isNotBlank(params.getUrl())) {
+                    predicates.add(builder.equal(root.get("url"), params.getUrl()));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            }
+        };
+        if (pageNo < 1) pageNo = 1;
+        if (pageSize < 1) pageSize = 1;
+        Pageable pageable = new PageRequest(pageNo - 1, pageSize);
         Page<DeviceRecord> page = deviceRecordRepository.findAll(spec, pageable);
         return new Result<>().success(page);
     }

+ 3 - 3
src/main/resources/templates/deviceRecord/list.ftl

@@ -19,10 +19,10 @@
 
     function loadData() {
         var params = {};
-        params.loginKey = '111';
-        params.loginToken = '222';
+        var pageNo = 1;
+        var pageSize = 5;
         $.ajax({
-            url: '${base}/device/record/list',
+            url: '${base}/device/record/list?pageNo=' + pageNo + '&pageSize=' + pageSize,
             contentType: "application/json; charset=UTF-8",
             dataType: "json",
             type: "POST",