licailing 4 anni fa
parent
commit
291df7a20b

+ 36 - 13
src/main/java/com/izouma/wenlvju/dto/ProgrammeDTO.java

@@ -3,9 +3,10 @@ package com.izouma.wenlvju.dto;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.ExcelProperty;
-import com.alibaba.excel.metadata.BaseRowModel;
+import com.alibaba.excel.annotation.format.DateTimeFormat;
 import com.izouma.wenlvju.annotations.EnumFormat;
 import com.izouma.wenlvju.annotations.EnumFormat;
 import com.izouma.wenlvju.domain.VideoObject;
 import com.izouma.wenlvju.domain.VideoObject;
+import com.izouma.wenlvju.domain.performance.Participant;
 import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.domain.performance.Programme;
 import com.izouma.wenlvju.enums.CompetitionGroup;
 import com.izouma.wenlvju.enums.CompetitionGroup;
 import com.izouma.wenlvju.utils.excel.EnumExcelConverter;
 import com.izouma.wenlvju.utils.excel.EnumExcelConverter;
@@ -18,13 +19,14 @@ import lombok.NoArgsConstructor;
 
 
 import javax.persistence.EnumType;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
 import javax.persistence.Enumerated;
+import java.time.LocalDate;
 
 
 @Data
 @Data
 @AllArgsConstructor
 @AllArgsConstructor
 @NoArgsConstructor
 @NoArgsConstructor
 @Builder
 @Builder
 @ApiModel(value = "Programme")
 @ApiModel(value = "Programme")
-public class ProgrammeDTO extends BaseRowModel {
+public class ProgrammeDTO {
     @ExcelIgnore
     @ExcelIgnore
     private Long id;
     private Long id;
 
 
@@ -77,19 +79,40 @@ public class ProgrammeDTO extends BaseRowModel {
 
 
     @ExcelIgnore
     @ExcelIgnore
     private int status;
     private int status;
-//    @ExcelProperty(value = "参赛人员姓名")
-//    private String participantName;
-//
-//    @ExcelProperty(value = "参赛人员性别")
-//    private String participantSex;
-//
-//    @ExcelProperty(value = "参赛人员出生年月")
-//    private LocalDate participantBirthday;
-//
-//    @ExcelProperty(value = "参赛人员联系方式")
-//    private String participantPhone;
+
+    @ApiModelProperty(value = "照片")
+    private String img;
+
+    @ExcelProperty(value = "参赛人员姓名")
+    private String participantName;
+
+    @ExcelProperty(value = "参赛人员性别")
+    private String participantSex;
+
+    @DateTimeFormat("yyyy-MM-dd")
+    @ExcelProperty(value = "参赛人员出生年月")
+    private LocalDate participantBirthday;
+
+    @ExcelProperty(value = "参赛人员联系方式")
+    private String participantPhone;
+
+    @ExcelProperty(value = "证件号码")
+    @ApiModelProperty(value = "证件号码")
+    private String idNo;
+
+    @ApiModelProperty(value = "证书")
+    private String certificate;
 
 
     public ProgrammeDTO(Programme programme) {
     public ProgrammeDTO(Programme programme) {
         BeanUtil.copyProperties(programme, this);
         BeanUtil.copyProperties(programme, this);
     }
     }
+
+    public void setParticipant(Participant participant) {
+        this.participantName = participant.getName();
+        this.participantSex = participant.getSex();
+        this.participantBirthday = participant.getBirthday();
+        this.participantPhone = participant.getPhone();
+        this.idNo = participant.getIdNo();
+        this.certificate = participant.getCertificate();
+    }
 }
 }

+ 19 - 37
src/main/java/com/izouma/wenlvju/service/performance/ProgrammeService.java

@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelReader;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.izouma.wenlvju.domain.ArtType;
 import com.izouma.wenlvju.domain.ArtType;
 import com.izouma.wenlvju.domain.GradingOrganization;
 import com.izouma.wenlvju.domain.GradingOrganization;
@@ -24,7 +26,9 @@ import com.izouma.wenlvju.repo.SettingRepo;
 import com.izouma.wenlvju.repo.performance.*;
 import com.izouma.wenlvju.repo.performance.*;
 import com.izouma.wenlvju.service.ArtTypeService;
 import com.izouma.wenlvju.service.ArtTypeService;
 import com.izouma.wenlvju.utils.JpaUtils;
 import com.izouma.wenlvju.utils.JpaUtils;
+import com.izouma.wenlvju.utils.excel.ExcelListener;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
 import com.izouma.wenlvju.utils.excel.ExcelUtils;
+import com.izouma.wenlvju.utils.excel.UploadDataListener;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageImpl;
@@ -110,24 +114,11 @@ public class ProgrammeService {
                 .stream()
                 .stream()
                 .collect(Collectors.toMap(Setting::getId, Setting::getName));
                 .collect(Collectors.toMap(Setting::getId, Setting::getName));
 
 
-//        Map<Long, Long> participantMap = participantRepo.findAllByProgrammeIdIn(ids)
-//                .stream()
-//                .collect(Collectors.groupingBy(Participant::getProgrammeId, Collectors.counting()));
-        return all.map(programme -> {
-//            if (participantMap.containsKey(programme.getId())) {
-//                return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
-//                        organizationMap.get(programme.getOrganizationId()),
-//                        gradingOrganizationMap.get(programme.getGradingOrganizationId()),
-//                        artTypeMap.get(programme.getSpecialtyId()),
-//                        settingMap.get(programme.getLevelSettingId()),
-//                        participantMap.get(programme.getId()));
-//            }
-            return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
-                    organizationMap.get(programme.getOrganizationId()),
-                    gradingOrganizationMap.get(programme.getGradingOrganizationId()),
-                    artTypeMap.get(programme.getSpecialtyId()),
-                    settingMap.get(programme.getLevelSettingId()));
-        });
+        return all.map(programme -> toDTO(programme, performanceMap.get(programme.getPerformanceId()),
+                organizationMap.get(programme.getOrganizationId()),
+                gradingOrganizationMap.get(programme.getGradingOrganizationId()),
+                artTypeMap.get(programme.getSpecialtyId()),
+                settingMap.get(programme.getLevelSettingId())));
     }
     }
 
 
     public ProgrammeDTO toDTO(Programme programme, String performance, String organization, String gradingOrganization, String artType,
     public ProgrammeDTO toDTO(Programme programme, String performance, String organization, String gradingOrganization, String artType,
@@ -144,7 +135,7 @@ public class ProgrammeService {
 
 
     public List<ProgrammeDTO> toDTOList(List<Programme> programmes) {
     public List<ProgrammeDTO> toDTOList(List<Programme> programmes) {
 
 
-//        List<Long> ids = programmes.stream().map(Programme::getId).collect(Collectors.toList());
+        List<Long> ids = programmes.stream().map(Programme::getId).collect(Collectors.toList());
 
 
         Map<Long, String> performanceMap = performanceRepo.findAll()
         Map<Long, String> performanceMap = performanceRepo.findAll()
                 .stream()
                 .stream()
@@ -163,24 +154,19 @@ public class ProgrammeService {
                 .stream()
                 .stream()
                 .collect(Collectors.toMap(Setting::getId, Setting::getName));
                 .collect(Collectors.toMap(Setting::getId, Setting::getName));
 
 
-//        Map<Long, Long> participantMap = participantRepo.findAllByProgrammeIdIn(ids)
-//                .stream()
-//                .collect(Collectors.groupingBy(Participant::getProgrammeId, Collectors.counting()));
+        Map<Long, List<Participant>> participantMap = participantRepo.findAllByProgrammeIdIn(ids)
+                .stream()
+                .collect(Collectors.groupingBy(Participant::getProgrammeId));
 
 
         return programmes.stream().map(programme -> {
         return programmes.stream().map(programme -> {
-//            if (participantMap.containsKey(programme.getId())) {
-//                return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
-//                        organizationMap.get(programme.getOrganizationId()),
-//                        gradingOrganizationMap.get(programme.getGradingOrganizationId()),
-//                        artTypeMap.get(programme.getSpecialtyId()),
-//                        settingMap.get(programme.getLevelSettingId()),
-//                        participantMap.get(programme.getId()));
-//            }
-            return toDTO(programme, performanceMap.get(programme.getPerformanceId()),
+            List<Participant> participants = participantMap.get(programme.getId());
+            ProgrammeDTO programmeDTO = toDTO(programme, performanceMap.get(programme.getPerformanceId()),
                     organizationMap.get(programme.getOrganizationId()),
                     organizationMap.get(programme.getOrganizationId()),
                     gradingOrganizationMap.get(programme.getGradingOrganizationId()),
                     gradingOrganizationMap.get(programme.getGradingOrganizationId()),
                     artTypeMap.get(programme.getSpecialtyId()),
                     artTypeMap.get(programme.getSpecialtyId()),
                     settingMap.get(programme.getLevelSettingId()));
                     settingMap.get(programme.getLevelSettingId()));
+            participants.forEach(programmeDTO::setParticipant);
+            return programmeDTO;
         }).collect(Collectors.toList());
         }).collect(Collectors.toList());
     }
     }
 
 
@@ -198,7 +184,8 @@ public class ProgrammeService {
         baos.flush();
         baos.flush();
 
 
         InputStream indicatorStream = new ByteArrayInputStream(baos.toByteArray());
         InputStream indicatorStream = new ByteArrayInputStream(baos.toByteArray());
-        List<ProgrammeDTO> dtos = ExcelUtils.readExcel(indicatorStream, ProgrammeDTO.class, 1, 1);
+        UploadDataListener<ProgrammeDTO> listener = new UploadDataListener<>();
+        List<ProgrammeDTO> dtos = EasyExcel.read(indicatorStream, ProgrammeDTO.class, listener).sheet().doReadSync();
 
 
         Map<String, Long> performanceMap = performanceRepo.findAll()
         Map<String, Long> performanceMap = performanceRepo.findAll()
                 .stream()
                 .stream()
@@ -287,12 +274,7 @@ public class ProgrammeService {
         programmes.sort((a, b) -> {
         programmes.sort((a, b) -> {
             if (a.getOrganizationId().equals(b.getOrganizationId())) {
             if (a.getOrganizationId().equals(b.getOrganizationId())) {
                 if (a.getOrganizationId().equals(b.getOrganizationId())) {
                 if (a.getOrganizationId().equals(b.getOrganizationId())) {
-//                    if (StrUtil.isNotBlank(a.getExamPoint()) && StrUtil.isNotBlank(b.getExamPoint()) && a.getExamPoint()
-//                            .equals(b.getExamPoint())) {
                     return a.getSpecialtyId().compareTo(b.getSpecialtyId());
                     return a.getSpecialtyId().compareTo(b.getSpecialtyId());
-//                    } else {
-//                        return a.getExamPoint().compareTo(b.getExamPoint());
-//                    }
                 } else {
                 } else {
                     return a.getOrganizationId().compareTo(b.getOrganizationId());
                     return a.getOrganizationId().compareTo(b.getOrganizationId());
                 }
                 }

+ 29 - 0
src/main/java/com/izouma/wenlvju/utils/excel/UploadDataListener.java

@@ -0,0 +1,29 @@
+package com.izouma.wenlvju.utils.excel;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class UploadDataListener<T> extends AnalysisEventListener<T> {
+    private final List<T> data;
+
+    public UploadDataListener() {
+        this.data = new ArrayList<>();
+    }
+
+    public List<T> getData() {
+        return data;
+    }
+
+    @Override
+    public void invoke(T t, AnalysisContext analysisContext) {
+        data.add(t);
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+
+    }
+}

+ 8 - 1
src/main/vue/src/views/performance/ProgrammeEdit.vue

@@ -194,11 +194,18 @@
                                         </el-form-item>
                                         </el-form-item>
                                     </el-col>
                                     </el-col>
                                 </el-row>
                                 </el-row>
+                                <el-row :span="20">
+                                    <el-form-item label="身份证号" prop="idNo">
+                                        <el-input v-model="item.idNo" style="width: 70%"></el-input>
+                                    </el-form-item>
+                                </el-row>
                                 <el-row>
                                 <el-row>
                                     <el-form-item label="照片">
                                     <el-form-item label="照片">
                                         <single-upload v-model="item.img"></single-upload>
                                         <single-upload v-model="item.img"></single-upload>
                                     </el-form-item>
                                     </el-form-item>
-
+                                    <el-form-item label="证书">
+                                        <single-upload v-model="item.certificate"></single-upload>
+                                    </el-form-item>
                                     <el-form-item>
                                     <el-form-item>
                                         <el-button
                                         <el-button
                                             class="del"
                                             class="del"