licailing před 4 roky
rodič
revize
1eac9fb2bd

+ 3 - 0
src/main/java/com/izouma/wenlvju/domain/performance/Arrange.java

@@ -62,4 +62,7 @@ public class Arrange extends BaseEntity {
 
     @Transient
     private List<String> specialtyName;
+
+    @Transient
+    private List<String> experts;
 }

+ 4 - 1
src/main/java/com/izouma/wenlvju/service/UserService.java

@@ -248,7 +248,10 @@ public class UserService {
             // 特定权限
             SetJoin<User, Authority> join = root.join(root.getModel()
                     .getSet("authorities", Authority.class), JoinType.LEFT);
-            and.add(join.in(Authority.get(AuthorityName.ROLE_EXPERT), Authority.get(AuthorityName.ROLE_DISTRICT_STAFF)));
+
+            and.add(join.in(Authority.get(AuthorityName.ROLE_EXPERT), Authority.get(AuthorityName.ROLE_DISTRICT_STAFF),
+                    Authority.get(AuthorityName.ROLE_ADMIN)));
+
             criteriaQuery.distinct(true);
             names.forEach(name -> and.add(criteriaBuilder.notLike(root.get("work"), "%" + name + "%")));
             return criteriaBuilder.and(and.toArray(new Predicate[0]));

+ 27 - 0
src/main/java/com/izouma/wenlvju/service/performance/ArrangeService.java

@@ -4,12 +4,15 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.izouma.wenlvju.domain.ArtType;
+import com.izouma.wenlvju.domain.User;
 import com.izouma.wenlvju.domain.performance.Arrange;
+import com.izouma.wenlvju.domain.performance.ArrangeJudge;
 import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.dto.ArrangeDTO;
 import com.izouma.wenlvju.dto.PageQuery;
 import com.izouma.wenlvju.exception.BusinessException;
 import com.izouma.wenlvju.repo.ArtTypeRepo;
+import com.izouma.wenlvju.repo.UserRepo;
 import com.izouma.wenlvju.repo.performance.ArrangeJudgeRepo;
 import com.izouma.wenlvju.repo.performance.ArrangeRepo;
 import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
@@ -25,6 +28,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
@@ -36,6 +40,7 @@ public class ArrangeService {
     private ArtTypeRepo      artTypeRepo;
     private ProgrammeRepo    programmeRepo;
     private ArrangeJudgeRepo arrangeJudgeRepo;
+    private UserRepo         userRepo;
 
     public Page<Arrange> all(PageQuery pageQuery) {
         Map<Long, String> artMap = artTypeRepo.findAll()
@@ -51,6 +56,28 @@ public class ArrangeService {
                 });
     }
 
+    public Page<Arrange> all2(PageQuery pageQuery) {
+        Map<Long, String> artMap = artTypeRepo.findAll()
+                .stream()
+                .collect(Collectors.toMap(ArtType::getId, ArtType::getName));
+        List<ArrangeJudge> ajs = arrangeJudgeRepo.findAll();
+        Set<Long> userIds = ajs.stream().map(ArrangeJudge::getExpertId).collect(Collectors.toSet());
+        Map<Long, List<ArrangeJudge>> judgeMap = ajs
+                .stream()
+                .collect(Collectors.groupingBy(ArrangeJudge::getArrangeId));
+        Map<Long, String> userMap = userRepo.findAllById(userIds)
+                .stream()
+                .collect(Collectors.toMap(User::getId, User::getNickname));
+        return arrangeRepo.findAll(JpaUtils.toSpecification(pageQuery, Arrange.class), JpaUtils.toPageRequest(pageQuery))
+                .map(arrange -> {
+                    arrange.setSpecialtyName(arrange.getSpecialtyId()
+                            .stream()
+                            .map(artMap::get)
+                            .collect(Collectors.toList()));
+                    return arrange;
+                });
+    }
+
     /*
     分组
      */

+ 8 - 6
src/main/vue/src/views/performance/ProgrammeScoreList.vue

@@ -1,15 +1,15 @@
 <template>
     <div class="list-view">
         <div class="filters-container">
-            <el-form :model="form" inline label-width="100px">
+            <el-form :model="form" size="mini" inline label-width="100px">
                 <el-row>
-                    <el-form-item label="展演活动名称">
+                    <el-form-item label="活动名称">
                         <el-select
                             v-model="performanceId"
                             clearable
                             filterable
-                            placeholder="展演活动名称"
-                            style="width: 100%"
+                            placeholder="活动名称"
+                            style="width: 300px"
                         >
                             <el-option
                                 v-for="item in performances"
@@ -29,6 +29,7 @@
                         >
                         </el-date-picker>
                     </el-form-item>
+                    <el-form-item label="时间"></el-form-item>
                     <el-form-item label="活动地点">
                         <el-select v-model="form.address">
                             <el-option
@@ -39,6 +40,7 @@
                             ></el-option>
                         </el-select>
                     </el-form-item>
+                    <el-form-item label="评审专家"></el-form-item>
                 </el-row>
                 <el-form-item>
                     <el-button @click="getData" type="primary" icon="el-icon-search">搜索 </el-button>
@@ -66,11 +68,11 @@
             <el-table-column prop="score" label="成绩"> </el-table-column>
             <el-table-column prop="myScore" label="评分"> </el-table-column>
             <el-table-column prop="remark" label="备注"> </el-table-column>
-            <el-table-column label="操作" align="left" fixed="right" min-width="100">
+            <!-- <el-table-column label="操作" align="left" fixed="right" min-width="100">
                 <template slot-scope="{ row }">
                     <el-button @click="showSign(row)" size="mini" plain type="primary">签到处理</el-button>
                 </template>
-            </el-table-column>
+            </el-table-column> -->
         </el-table>
         <div class="pagination-wrapper">
             <!-- <div class="multiple-mode-wrapper">