Browse Source

备案监控

licailing 5 years ago
parent
commit
afbdcdf7a5

+ 4 - 0
src/main/java/com/izouma/wenlvju/domain/ExamRoom.java

@@ -7,6 +7,7 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.annotations.Where;
+import org.springframework.data.annotation.Transient;
 
 import javax.persistence.Entity;
 
@@ -30,4 +31,7 @@ public class ExamRoom extends BaseEntity {
 
     private String address;
 
+    @Transient
+    private String organizer;
+
 }

+ 3 - 0
src/main/java/com/izouma/wenlvju/repo/RecordExamRoomRepo.java

@@ -27,4 +27,7 @@ public interface RecordExamRoomRepo extends JpaRepository<RecordExamRoom, Long>,
 
     @Query("select examRoomId from RecordExamRoom where del = false and recordId = ?1")
     List<Long> findExamRoomIdByRecordId(Long recordId);
+
+    @Query("select examRoomId from RecordExamRoom where del = false and recordId in ?1")
+    List<Long> findExamRoomIdByRecordIdIn(Iterable<Long> recordId);
 }

+ 37 - 1
src/main/java/com/izouma/wenlvju/service/ExamRoomService.java

@@ -1,25 +1,34 @@
 package com.izouma.wenlvju.service;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.izouma.wenlvju.domain.ExamRoom;
+import com.izouma.wenlvju.domain.Organization;
+import com.izouma.wenlvju.domain.Record;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.ExamRoomRepo;
+import com.izouma.wenlvju.repo.OrganizationRepo;
 import com.izouma.wenlvju.repo.RecordExamRoomRepo;
+import com.izouma.wenlvju.repo.RecordRepo;
 import com.izouma.wenlvju.utils.JpaUtils;
+import jodd.util.StringUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
-import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
 import javax.persistence.criteria.Predicate;
+import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -29,6 +38,8 @@ public class ExamRoomService {
     private final ExamRoomRepo       examRoomRepo;
     private final EzvizTokenService  ezvizTokenService;
     private final RecordExamRoomRepo recordExamRoomRepo;
+    private final RecordService      recordService;
+    private final OrganizationRepo   organizationRepo;
 
     public Page<ExamRoom> all(PageQuery pageQuery) {
         return examRoomRepo.findAll(JpaUtils.toSpecification(pageQuery, ExamRoom.class), JpaUtils.toPageRequest(pageQuery));
@@ -159,4 +170,29 @@ public class ExamRoomService {
             return criteriaBuilder.and(and.toArray(new Predicate[0]));
         }, JpaUtils.toPageRequest(pageQuery));
     }
+
+    /*
+    展示今天备案中的所有考场信息
+     */
+    public List<ExamRoom> byToday(Long recordId, String district) {
+        List<Record> all = recordService.byToday(recordId, district);
+        List<Long> rids = all.stream().map(Record::getId).collect(Collectors.toList());
+
+        if (CollUtil.isEmpty(rids)) {
+            return null;
+        }
+
+        List<Long> ids = recordExamRoomRepo.findExamRoomIdByRecordIdIn(rids);
+        if (CollUtil.isEmpty(ids)) {
+            return null;
+        }
+        List<ExamRoom> rooms = examRoomRepo.findAllById(ids);
+        Set<Long> organizationIds = rooms.stream().map(ExamRoom::getOrganizationId).collect(Collectors.toSet());
+        Map<Long, String> organizationMap = organizationRepo.findAllById(organizationIds)
+                .stream()
+                .collect(Collectors.toMap(Organization::getId, Organization::getName));
+
+        rooms.forEach(room -> room.setOrganizer(organizationMap.get(room.getOrganizationId())));
+        return rooms;
+    }
 }

+ 20 - 0
src/main/java/com/izouma/wenlvju/service/RecordService.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Service;
 
 import javax.persistence.criteria.Predicate;
 import java.time.LocalDate;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -77,4 +78,23 @@ public class RecordService {
         record.setSupervisorUserId(userId);
         return recordRepo.save(record);
     }
+
+    /*
+    展示今天的所有备案
+     */
+    public List<Record> byToday(Long recordId, String district){
+        LocalDate now = LocalDate.now();
+        return recordRepo.findAll((root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = new ArrayList<>();
+            if (StringUtil.isNotBlank(district)) {
+                and.add(criteriaBuilder.equal(root.get("district"), district));
+            }
+            if (ObjectUtil.isNotEmpty(recordId)) {
+                and.add(criteriaBuilder.equal(root.get("recordId"), recordId));
+            }
+            and.add(criteriaBuilder.lessThanOrEqualTo(root.get("examinationStartTime"), now));
+            and.add(criteriaBuilder.greaterThanOrEqualTo(root.get("examinationEndTime"), now));
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        });
+    }
 }

+ 7 - 0
src/main/java/com/izouma/wenlvju/web/ExamRoomController.java

@@ -9,6 +9,7 @@ import com.izouma.wenlvju.repo.ExamRoomRepo;
 import com.izouma.wenlvju.service.ExamRoomService;
 import com.izouma.wenlvju.utils.ObjUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
@@ -83,5 +84,11 @@ public class ExamRoomController extends BaseController {
         query.remove("recordId");
         return examRoomService.byRecord(id, pageQuery);
     }
+
+    @PostMapping("/byToday")
+    @ApiOperation("今日所有备案的考场信息")
+    public List<ExamRoom> byToday(Long recordId, String district) {
+        return examRoomService.byToday(recordId, district);
+    }
 }
 

+ 6 - 0
src/main/java/com/izouma/wenlvju/web/RecordController.java

@@ -105,5 +105,11 @@ public class RecordController extends BaseController {
     public List<Record> supervisor() {
         return recordRepo.findAllBySupervisorUserId(SecurityUtils.getAuthenticatedUser().getId());
     }
+
+    @PostMapping("/byToday")
+    @ApiOperation("今日所有备案")
+    public List<Record> byToday() {
+        return recordService.byToday(null, null);
+    }
 }
 

+ 1 - 1
src/main/resources/application.yaml

@@ -1,5 +1,5 @@
 server:
-    port: 8080
+    port: 8090
     servlet:
         context_path: /
     compression:

+ 23 - 10
src/main/vue/src/views/record/RecordRegulationList.vue

@@ -6,11 +6,25 @@
                     <span class="span-size">考级活动名称</span>
                     <el-input placeholder="输入考级活动名称" v-model="search" clearable class="filter-item"></el-input>
                 </span>
-                <span class="span-width">
+                <span class="span-width2">
+                    <span class="span-size">考级地址</span>
+                    <el-select class="filter-item" v-model="city">
+                        <el-option value="南京市" label="南京市"></el-option>
+                    </el-select>
+                    <el-select class="filter-item" v-model="district" clearable placeholder="请选择区县">
+                        <el-option
+                            v-for="item in districts"
+                            :key="item.id"
+                            :value="item.name"
+                            :label="item.name"
+                        ></el-option>
+                    </el-select>
+                </span>
+                <!-- <span class="span-width">
                     <span class="span-size">考级机构名称</span>
                     <el-input placeholder="输入考级机构名称" v-model="agency" clearable class="filter-item"></el-input>
-                </span>
-                <span class="span-width">
+                </span> -->
+                <!-- <span class="span-width">
                     <span class="span-size">承办单位名称</span>
                     <el-input
                         placeholder="输入承办单位名称"
@@ -18,7 +32,7 @@
                         clearable
                         class="filter-item"
                     ></el-input>
-                </span>
+                </span> -->
             </div>
             <!-- <el-input placeholder="输入关键字" v-model="search" clearable class="filter-item"></el-input> -->
             <div style="padding-left: 20px">
@@ -95,7 +109,7 @@ export default {
         this.$http
             .get('/district/NJ')
             .then(res => {
-                this.district = res;
+                this.districts = res;
             })
             .catch(e => {
                 console.log(e);
@@ -110,9 +124,8 @@ export default {
             downloading: false,
             categoryOptions: [{ label: '承办单位', value: 'ORGANIZER' }],
             statusOptions: [{ label: '正常', value: 'NORMAL' }],
-            district: [],
-            districtId: '',
-            province: '江苏省',
+            districts: [],
+            district: '',
             city: '南京市',
             status: '',
             recordDateRange: '',
@@ -160,8 +173,8 @@ export default {
             if (this.search) {
                 data.search = this.search;
             }
-            if (this.districtId) {
-                data.query.district = this.districtId;
+            if (this.district) {
+                data.query.district = this.district;
             }
             if (this.agency) {
                 data.query.examinationAgency = this.agency;

+ 9 - 0
src/test/java/com/izouma/wenlvju/service/ExamRoomServiceTest.java

@@ -6,6 +6,8 @@ import com.izouma.wenlvju.repo.ExamRoomRepo;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 public class ExamRoomServiceTest extends ApplicationTests {
 
     @Autowired
@@ -37,4 +39,11 @@ public class ExamRoomServiceTest extends ApplicationTests {
         ExamRoom examRoom = examRoomRepo.findById(874L).orElseThrow(null);
         examRoomService.encryptOff(examRoom.getDeviceSerial(), examRoom.getValidateCode());
     }
+
+    @Test
+    public void showVideo() {
+        List<ExamRoom> show = examRoomService.byToday(null, null);
+        show.forEach(System.out::println);
+    }
+
 }