licailing 4 лет назад
Родитель
Сommit
064ac5eb57

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

@@ -126,6 +126,9 @@ public class Programme extends BaseEntity {
     @ApiModelProperty(value = "评分")
     private Double score;
 
+    @ApiModelProperty(value = "复审评分")
+    private Double reviewScore;
+
     @ApiModelProperty(value = "全部评分")
     private boolean allScore;
 

+ 5 - 0
src/main/java/com/izouma/wenlvju/repo/performance/ProgrammeRepo.java

@@ -44,6 +44,11 @@ public interface ProgrammeRepo extends JpaRepository<Programme, Long>, JpaSpecif
     @Transactional
     void score(double score, Long id);
 
+    @Query("update Programme t set t.reviewScore = ?1 where t.id = ?2")
+    @Modifying
+    @Transactional
+    void reviewScore(double score, Long id);
+
     List<Programme> findAllByPerformanceIdAndArrangeIdIsNull(Long performanceId);
 
     List<Programme> findAllByPerformanceIdAndReviewArrangeIdIsNull(Long performanceId);

+ 4 - 0
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeScoreService.java

@@ -67,6 +67,10 @@ public class ProgrammeScoreService {
         Object avgObj = programmeScoreRepo.avgScore(programmeId);
         if (ObjectUtil.isNotNull(avgObj)) {
             Double avg = Convert.convert(Double.class, avgObj);
+            if (programmeScore.getAuditTimes()>1){
+                programmeRepo.reviewScore(avg, programmeId);
+                return;
+            }
             programmeRepo.score(avg, programmeId);
         }
 

+ 30 - 0
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -40,6 +40,7 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.transaction.Transactional;
 import java.io.*;
+import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -668,6 +669,9 @@ public class ProgrammeService {
         return dto;
     }
 
+    /*
+    专家查看并打分
+     */
     public Page<ProgrammeScoreDTO> byScore(PageQuery pageQuery, Long userId) {
         List<Long> arrangeId = arrangeJudgeRepo.findArrangeIdByExpertId(userId);
         if (CollUtil.isEmpty(arrangeId)) {
@@ -781,9 +785,35 @@ public class ProgrammeService {
         return dto;
     }
 
+    /*
+    查分数信息
+     */
     public ProgrammeShowDTO get(Long id, String phone) {
         Programme apply = programmeRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         userService.getAuth(id, phone, apply.getPhone());
         return this.toShowDTO(apply);
     }
+
+    /*
+    进入复审
+     */
+    public void review(Long performanceId, int pass, Long userId) {
+        List<Programme> programmes = programmeRepo.findAllByPerformanceIdAndProgrammeStatus(performanceId, ProgrammeStatus.SUBMIT);
+        programmes.sort(Comparator.comparingDouble(Programme::getScore));
+        List<Programme> eliminate = programmes.subList(pass, programmes.size());
+        List<RateAudit> rateAudits = new ArrayList<>();
+        eliminate.forEach(programme -> {
+            programme.setProgrammeStatus(ProgrammeStatus.REVIEW_FAILED);
+            rateAudits.add(RateAudit.builder()
+                    .rateId(programme.getId())
+                    .programmeAudit(true)
+                    .userId(userId)
+                    .remark("未进入复审")
+                    .status(ProgrammeStatus.REVIEW_FAILED.toString())
+                    .build());
+        });
+
+        programmeRepo.saveAll(eliminate);
+        rateAuditRepo.saveAll(rateAudits);
+    }
 }

+ 1 - 0
src/main/java/com/izouma/wenlvju/web/performance/PerformanceController.java

@@ -111,5 +111,6 @@ public class PerformanceController extends BaseController {
 //        return performanceRepo.findLastYear();
         return performanceRepo.findByYear(String.valueOf(LocalDate.now().getYear() - 1));
     }
+
 }
 

+ 15 - 0
src/main/java/com/izouma/wenlvju/web/performance/ProgrammeController.java

@@ -1,11 +1,13 @@
 package com.izouma.wenlvju.web.performance;
 
 import cn.hutool.core.convert.Convert;
+import com.izouma.wenlvju.domain.performance.Performance;
 import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.dto.*;
 import com.izouma.wenlvju.enums.ProgrammeStatus;
 import com.izouma.wenlvju.enums.SignedIn;
 import com.izouma.wenlvju.exception.BusinessException;
+import com.izouma.wenlvju.repo.performance.PerformanceRepo;
 import com.izouma.wenlvju.repo.performance.ProgrammeRepo;
 import com.izouma.wenlvju.service.UserService;
 import com.izouma.wenlvju.service.performance.ProgrammeService;
@@ -34,6 +36,7 @@ public class ProgrammeController extends BaseController {
     private ProgrammeService programmeService;
     private ProgrammeRepo    programmeRepo;
     private UserService      userService;
+    private PerformanceRepo  performanceRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
@@ -45,6 +48,12 @@ public class ProgrammeController extends BaseController {
     @PostMapping("/saveScore")
     public Programme saveScore(@RequestParam Long id, @RequestParam Double score) {
         Programme programme = programmeRepo.findById(id).orElseThrow(new BusinessException("无节目"));
+        Performance performance = performanceRepo.findById(programme.getPerformanceId())
+                .orElseThrow(new BusinessException("无活动"));
+        if (performance.getAuditTimes() > 1) {
+            programme.setReviewScore(score);
+            return programmeRepo.save(programme);
+        }
         programme.setScore(score);
         return programmeRepo.save(programme);
     }
@@ -183,5 +192,11 @@ public class ProgrammeController extends BaseController {
     public ProgrammeShowDTO getScore(@PathVariable Long id, String phone) {
         return programmeService.get(id, phone);
     }
+
+    @ApiOperation("设置进入复审名单")
+    @PostMapping("/review")
+    public void review(@RequestParam Long performanceId, int pass) {
+        programmeService.review(performanceId, pass, SecurityUtils.getAuthenticatedUser().getId());
+    }
 }
 

+ 17 - 3
src/main/vue/src/components/ReviewLog.vue

@@ -24,10 +24,18 @@
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item prop="reviewRatio" label="复审比例">
-                    <el-input-number type="number" v-model="formData.reviewRatio" class="input1"></el-input-number>
+                    <el-input-number
+                        type="number"
+                        v-model="formData.reviewRatio"
+                        class="input1"
+                        @change="count"
+                    ></el-input-number>
+                    <br />
+                    <span>将有{{ pass }}个节目进入复审,{{ total - pass }}个节目被淘汰!</span>
                 </el-form-item>
                 <el-form-item>
                     <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
+                    <el-button @click="onSave" :loading="saving" type="success">设置</el-button>
                     <el-button @click="closeDialog">取消</el-button>
                 </el-form-item>
             </el-form>
@@ -36,7 +44,7 @@
 </template>
 <script>
 export default {
-    props: ['dialogVisible'],
+    props: ['dialogVisible', 'total'],
     data() {
         return {
             saving: false,
@@ -58,7 +66,8 @@ export default {
                     }
                 ]
             },
-            id: ''
+            id: '',
+            pass: 0
         };
     },
     methods: {
@@ -81,6 +90,7 @@ export default {
                     .get('performance/get/' + id)
                     .then(res => {
                         this.formData = res;
+                        this.count(res.reviewRatio);
                     })
                     .catch(e => {
                         console.log(e);
@@ -107,6 +117,10 @@ export default {
                     this.saving = false;
                     this.$message.error(e.error);
                 });
+        },
+        count(val) {
+            let pass = (this.total * val) / 100;
+            this.pass = Math.round(pass);
         }
     }
 };

+ 1 - 1
src/main/vue/src/views/performance/ProgScoreAdminList.vue

@@ -173,7 +173,7 @@
                 </el-form>
             </el-card>
         </el-dialog>
-        <review-log :dialogVisible="isShow" @close="isShow = false" ref="public"></review-log>
+        <review-log :dialogVisible="isShow" :total="totalElements" @close="isShow = false" ref="public"></review-log>
     </div>
 </template>
 <script>

+ 1 - 2
src/main/vue/src/views/performance/ProgrammeList.vue

@@ -279,9 +279,8 @@
                 :src="videoUrl"
                 controlsList="nodownload noremote footbar"
                 controls
-                style="height: 700px; width: 100%"
+                style="height: 600px; width: 100%"
                 oncontextmenu="return false;"
-                onmouseleave="leaveVideo(this)"
                 ref="video"
                 v-if="showViedo"
             >