소스 검색

查询条件更改
部分基础数据导入时oss改造

caozixuan 3 년 전
부모
커밋
5edcf8da30
19개의 변경된 파일224개의 추가작업 그리고 64개의 파일을 삭제
  1. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailCourseMapper.java
  2. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailCourseService.java
  3. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  5. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  6. 4 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java
  7. 18 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  8. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  9. 15 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java
  10. 14 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java
  11. 12 2
      distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml
  12. 1 1
      distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml
  13. 8 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java
  14. 24 8
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java
  15. 8 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  16. 60 0
      distributed-print/src/test/java/com/qmth/distributed/print/FssTest.java
  17. 13 6
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/UploadFileEnum.java
  18. 8 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java
  19. 26 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailCourseMapper.java

@@ -22,9 +22,9 @@ public interface ExamDetailCourseMapper extends BaseMapper<ExamDetailCourse> {
 
     List<ExamDetailCourse> listByExamDetailIdAndStatus(@Param("examDetailId") Long examDetailId, @Param("status") String status);
 
-    List<BasicCourse> listCoursesByPrintPlanId(@Param("param") String param, @Param("printPlanId") Long printPlanId);
+    List<BasicCourse> listCoursesByPrintPlanId(@Param("param") String param, @Param("printPlanIdList") List<Long> printPlanIdList);
 
-    List<String> listPaperNumberByPrintPlanId(@Param("param") String param, @Param("printPlanId") Long printPlanId);
+    List<String> listPaperNumberByPrintPlanId(@Param("param") String param, @Param("printPlanId") List<Long> printPlanIdList);
 
     List<ExamDetailCourse> listByPrintPlanIdAndCourseCodeAndPaperNumber(@Param("schoolId") Long schoolId, @Param("printPlanId") Long printPlanId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
 

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailCourseService.java

@@ -30,9 +30,9 @@ public interface ExamDetailCourseService extends IService<ExamDetailCourse> {
 
     List<ExamDetailCourse> listByExamDetailIdAndStatus(Long examDetailId);
 
-    List<BasicCourse> listCoursesByPrintPlanId(String param, Long printPlanId);
+    List<BasicCourse> listCoursesByPrintPlanId(String param, List<Long> printPlanIdList);
 
-    List<String> listPaperNumberByPrintPlanId(String param, Long printPlanId);
+    List<String> listPaperNumberByPrintPlanId(String param, List<Long> printPlanIdList);
 
     List<ExamDetailCourse> listByPrintPlanIdAndCourseCodeAndPaperNumber(Long schoolId, Long printPlanId, String courseCode, String paperNumber);
 

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -121,9 +121,9 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * 查询印刷计划下考点数据源
      * @return 考点集合
      * @param param
-     * @param printPlanId
+     * @param printPlanIdList
      */
-    List<String> findExamPlaceDatasource(String param, Long printPlanId);
+    List<String> findExamPlaceDatasource(String param, List<Long> printPlanIdList);
 
     /**
      * 查询印刷计划下考场数据源
@@ -131,7 +131,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
      * @param param
      * @param printPlanId
      */
-    List<String> findExamRoomDatasource(String param, Long printPlanId);
+    List<String> findExamRoomDatasource(String param, List<Long> printPlanId);
 
     boolean submitTask(ExamDetail examDetail) throws IOException;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java

@@ -36,7 +36,7 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     IPage<ExamTaskDto> list(Boolean enable, String status, Long cardRuleId, String courseCode, String paperNumber, Long startTime, Long endTime, String userName, String createName, Integer pageNumber, Integer pageSize);
 
-    List<String> listPaperNumber(String param, Long printPlanId);
+    List<String> listPaperNumber(String param, List<Long> printPlanIdList);
 
     List<BlurryUserDto> listUser(String param);
 

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -117,10 +117,10 @@ public interface PrintCommonService {
      * 科目查询
      *
      * @param param
-     * @param printPlanId
+     * @param printPlanIdList
      * @return
      */
-    List<BasicCourse> list(String param, Long printPlanId);
+    List<BasicCourse> list(String param, List<Long> printPlanIdList);
 
     /**
      * 机构禁用

+ 4 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailCourseServiceImpl.java

@@ -55,13 +55,13 @@ public class ExamDetailCourseServiceImpl extends ServiceImpl<ExamDetailCourseMap
     }
 
     @Override
-    public List<BasicCourse> listCoursesByPrintPlanId(String param, Long printPlanId) {
-        return this.baseMapper.listCoursesByPrintPlanId(SystemConstant.translateSpecificSign(param), printPlanId);
+    public List<BasicCourse> listCoursesByPrintPlanId(String param, List<Long> printPlanIdList) {
+        return this.baseMapper.listCoursesByPrintPlanId(SystemConstant.translateSpecificSign(param), printPlanIdList);
     }
 
     @Override
-    public List<String> listPaperNumberByPrintPlanId(String param, Long printPlanId) {
-        return this.baseMapper.listPaperNumberByPrintPlanId(SystemConstant.translateSpecificSign(param), printPlanId);
+    public List<String> listPaperNumberByPrintPlanId(String param, List<Long> printPlanIdList) {
+        return this.baseMapper.listPaperNumberByPrintPlanId(SystemConstant.translateSpecificSign(param), printPlanIdList);
     }
 
     @Override

+ 18 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -294,15 +294,15 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<String> findExamPlaceDatasource(String param, Long printPlanId) {
+    public List<String> findExamPlaceDatasource(String param, List<Long> printPlanIdList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         QueryWrapper<ExamDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamDetail::getSchoolId, schoolId);
         if (StringUtils.isNotBlank(param)) {
             queryWrapper.lambda().like(ExamDetail::getExamPlace, SystemConstant.translateSpecificSign(param));
         }
-        if (printPlanId != null) {
-            queryWrapper.lambda().like(ExamDetail::getPrintPlanId, printPlanId);
+        if (printPlanIdList.size() > 0) {
+            queryWrapper.lambda().in(ExamDetail::getPrintPlanId, printPlanIdList);
         }
         List<ExamDetail> examDetail = this.list(queryWrapper);
         return examDetail.stream().map(ExamDetail::getExamPlace).distinct().collect(Collectors.toList());
@@ -310,15 +310,15 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<String> findExamRoomDatasource(String param, Long printPlanId) {
+    public List<String> findExamRoomDatasource(String param, List<Long> printPlanIdList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         QueryWrapper<ExamDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamDetail::getSchoolId, schoolId);
         if (StringUtils.isNotBlank(param)) {
             queryWrapper.lambda().like(ExamDetail::getExamRoom, SystemConstant.translateSpecificSign(param));
         }
-        if (printPlanId != null) {
-            queryWrapper.lambda().like(ExamDetail::getPrintPlanId, printPlanId);
+        if (printPlanIdList.size() > 0) {
+            queryWrapper.lambda().in(ExamDetail::getPrintPlanId, printPlanIdList);
         }
         List<ExamDetail> examDetail = this.list(queryWrapper);
         return examDetail.stream().map(ExamDetail::getExamRoom).distinct().collect(Collectors.toList());
@@ -613,9 +613,9 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     @Transactional(rollbackFor = Exception.class)
     @Override
     public List<ExaminationExportDto> findExaminationExportDtoDatasource(Map<String, Object> map) {
-        Long printPlanId = null;
-        if (map.get("printPlanId") != null) {
-            printPlanId = SystemConstant.convertIdToLong(String.valueOf(map.get("printPlanId")));
+        List<Long> printPlanIdList = null;
+        if (map.get("printPlanIdList") != null) {
+            printPlanIdList = (List<Long>) map.get("printPlanIdList");
         }
         String courseCode = null;
         if (map.get("courseCode") != null) {
@@ -637,19 +637,24 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
         if (map.get("packageCode") != null) {
             packageCode = String.valueOf(map.get("packageCode"));
         }
+        Long startDate = null;
+        if (map.get("startDate") != null) {
+            startDate = Long.valueOf(String.valueOf(map.get("startDate")));
+        }
+        Long endDate = null;
+        if (map.get("endDate") != null) {
+            endDate = Long.valueOf(String.valueOf(map.get("endDate")));
+        }
         Set<Long> orgIds = new HashSet<>();
         if (Objects.nonNull(map.get("orgIds"))) {
             orgIds = (Set<Long>) map.get("orgIds");
         }
-
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         Long userId = tbTask.getCreateId();
         Long schoolId = tbTask.getSchoolId();
 
-        List<Long> printPlanIdList = new ArrayList<>();
-        printPlanIdList.add(printPlanId);
         List<ExaminationResult> examinationResultList = this.findExaminationBriefPage(schoolId,
-                printPlanIdList, courseCode, paperNumber, examPlace, examRoom, packageCode,null,null,
+                printPlanIdList, courseCode, paperNumber, examPlace, examRoom, packageCode,startDate,endDate,
                 SystemConstant.PAGE_NUMBER, SystemConstant.PAGE_SIZE, orgIds).getRecords();
         int index = 0;
         List<ExaminationExportDto> examinationExportDtoList = new ArrayList<>();

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -162,9 +162,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public List<String> listPaperNumber(String param, Long printPlanId) {
+    public List<String> listPaperNumber(String param, List<Long> printPlanIdList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        if (printPlanId == null) {
+        if (printPlanIdList.size() == 0) {
             // 查询命题任务中的试卷编号
             QueryWrapper<ExamTask> queryWrapperExamTask = new QueryWrapper<>();
             queryWrapperExamTask.lambda().eq(ExamTask::getSchoolId, schoolId);
@@ -192,7 +192,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             list.addAll(list2);
             return list.stream().distinct().collect(Collectors.toList());
         } else {
-            return examDetailCourseService.listPaperNumberByPrintPlanId(param, printPlanId);
+            return examDetailCourseService.listPaperNumberByPrintPlanId(param, printPlanIdList);
         }
     }
 

+ 15 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceServiceImpl.java

@@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.itextpdf.text.DocumentException;
 import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.boot.core.fss.service.FileService;
+import com.qmth.boot.core.fss.store.FileStore;
 import com.qmth.distributed.print.business.bean.dto.PdfDto;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ExamDetailStatusEnum;
@@ -113,6 +115,10 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
     @Resource
     TFFlowApproveService tfFlowApproveService;
 
+    @Resource
+    private FileService fileService;
+
+
     /**
      * 保存附件
      *
@@ -142,6 +148,8 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
             } else if (Objects.nonNull(type) && Objects.equals(type, SystemConstant.HTML_PREFIX)) {
                 filePath = (String) jsonObject.get(SystemConstant.PATH);
                 url = SystemConstant.TEMP_FILES_DIR + File.separator + filePath;
+                UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class,(String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
+//                htmlFile = convertUtil.saveLocal(fileService.getFileStore(uploadType.getFssType()).read(filePath),url);
                 htmlFile = ossUtil.ossDownload(filePath, url);
             }
             LocalDateTime nowTime = LocalDateTime.now();
@@ -378,7 +386,9 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
             stringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(format);
             if (oss) {//上传至oss\
                 String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
-                ossUtil.ossUpload(dirName, file.getInputStream(), BinaryUtil.toBase64String(HexUtils.decodeHex(md5)));
+//                ossUtil.ossUpload(dirName, file.getInputStream(), BinaryUtil.toBase64String(HexUtils.decodeHex(md5)));
+                FileStore fileStore = fileService.getFileStore(type.getFssType());
+                fileStore.write(dirName,file.getInputStream(),DigestUtils.md5Hex(file.getInputStream()));
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器
@@ -526,13 +536,13 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
      * 科目查询
      *
      * @param param
-     * @param printPlanId
+     * @param printPlanIdList
      * @return
      */
     @Override
-    public List<BasicCourse> list(String param, Long printPlanId) {
+    public List<BasicCourse> list(String param, List<Long> printPlanIdList) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        if (printPlanId == null) {
+        if (printPlanIdList.size() == 0) {
             QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
             queryWrapper.lambda().eq(BasicCourse::getSchoolId, schoolId);
             if (StringUtils.isNotBlank(param)) {
@@ -541,7 +551,7 @@ public class PrintCommonServiceServiceImpl implements PrintCommonService {
             }
             return basicCourseService.list(queryWrapper);
         } else {
-            return examDetailCourseService.listCoursesByPrintPlanId(param, printPlanId);
+            return examDetailCourseService.listCoursesByPrintPlanId(param, printPlanIdList);
         }
     }
 

+ 14 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/importData/AsyncImportTaskTemplete.java

@@ -3,6 +3,8 @@ package com.qmth.distributed.print.business.templete.importData;
 import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.boot.core.fss.service.FileService;
+import com.qmth.boot.core.fss.store.FileStore;
 import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.TBTask;
@@ -11,9 +13,10 @@ import com.qmth.teachcloud.common.enums.TaskStatusEnum;
 import com.qmth.teachcloud.common.enums.TaskTypeEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
 import com.qmth.teachcloud.common.service.TBTaskService;
-import com.qmth.teachcloud.common.util.OssUtil;
+import com.qmth.teachcloud.common.util.ConvertUtil;
 import com.qmth.teachcloud.common.util.Result;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,15 +66,17 @@ public abstract class AsyncImportTaskTemplete {
      * @return
      * @throws IOException
      */
-    public InputStream getUploadFileInputStream(TBTask tbTask) throws IOException {
-        OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
+    public InputStream getUploadFileInputStream(TBTask tbTask) throws Exception {
+        FileService fileService = SpringContextHolder.getBean(FileService.class);
+        ConvertUtil convertUtil = SpringContextHolder.getBean(ConvertUtil.class);
         JSONObject jsonObject = JSONObject.parseObject(tbTask.getImportFilePath());
         String path = (String) jsonObject.get(SystemConstant.PATH);
         String type = (String) jsonObject.get(SystemConstant.TYPE);
+        UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class,(String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
         InputStream inputStream = null;
         if (Objects.equals(type, SystemConstant.OSS)) {
-            byte[] data = ossUtil.ossDownload(path);
-            inputStream = new ByteArrayInputStream(data);
+            FileStore fileStore = fileService.getFileStore(uploadType.getFssType());
+            inputStream = fileStore.read(path);
         } else {
             StringJoiner localPath = new StringJoiner("").add(SystemConstant.TEMP_FILES_DIR).add(File.separator).add(path);
             inputStream = new FileInputStream(new File(localPath.toString()));
@@ -85,7 +90,6 @@ public abstract class AsyncImportTaskTemplete {
      * @param tbTask
      */
     public void createTxt(TBTask tbTask) {
-        OssUtil ossUtil = SpringContextHolder.getBean(OssUtil.class);
         TBTaskService tbTaskService = SpringContextHolder.getBean(TBTaskService.class);
         ByteArrayOutputStream out = null;
         InputStream inputStream = null;
@@ -105,6 +109,7 @@ public abstract class AsyncImportTaskTemplete {
             }
             String path = (String) jsonObject.get(SystemConstant.PATH);
             String type = (String) jsonObject.get(SystemConstant.TYPE);
+            UploadFileEnum uploadType = Enum.valueOf(UploadFileEnum.class,(String) jsonObject.get(SystemConstant.UPLOAD_TYPE));
 
             out = new ByteArrayOutputStream();
             out.write(tbTask.getSummary().getBytes(StandardCharsets.UTF_8));
@@ -118,7 +123,9 @@ public abstract class AsyncImportTaskTemplete {
             if (Objects.equals(type, SystemConstant.OSS)) {//上传至oss
                 path = path.substring(0, path.lastIndexOf("/") + 1);
                 stringJoiner.add(path).add(SystemConstant.getUuid()).add(TXT_PREFIX).toString();
-                ossUtil.ossUpload(stringJoiner.toString(), inputStream, null);
+                FileService fileService = SpringContextHolder.getBean(FileService.class);
+                FileStore fileStore = fileService.getFileStore(uploadType.getFssType());
+                fileStore.write(stringJoiner.toString(),inputStream, DigestUtils.md5Hex(inputStream));
             } else {//上传至服务器
                 File finalFile = new File(stringJoiner.toString());
                 if (!finalFile.exists()) {

+ 12 - 2
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -59,7 +59,12 @@
                 LEFT JOIN
             exam_detail b ON a.exam_detail_id = b.id
         <where>
-            b.print_plan_id = #{printPlanId}
+            <if test="printPlanIdList.size() > 0">
+                and b.print_plan_id IN
+                <foreach collection="printPlanIdList" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
             <if test="param != null and param != ''">
                 and (a.course_code like concat('%', #{param},'%')
                 or a.course_name like concat('%', #{param},'%'))
@@ -75,7 +80,12 @@
                 LEFT JOIN
             exam_detail b ON a.exam_detail_id = b.id
         <where>
-            b.print_plan_id = #{printPlanId}
+            <if test="printPlanIdList.size() > 0">
+                and b.print_plan_id IN
+                <foreach collection="printPlanIdList" item="item" index="index" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
             <if test="param != null and param != ''">
                 and a.paper_number like concat('%', #{param},'%')
             </if>

+ 1 - 1
distributed-print-business/src/main/resources/mapper/ExamPrintPlanMapper.xml

@@ -65,7 +65,7 @@
                 and a.school_id = #{schoolId}
             </if>
             <if test="printPlanIdList.size() > 0">
-                and a.id = IN
+                and a.id IN
                 <foreach collection="printPlanIdList" item="item" index="index" open="(" separator="," close=")">
                     #{item}
                 </foreach>

+ 8 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicCourseController.java

@@ -24,9 +24,11 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.validation.Valid;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -77,8 +79,12 @@ public class BasicCourseController {
     @ApiOperation(value = "模糊查询")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
     public Result query(@RequestParam(value = "param", required = false) String param,
-                        @RequestParam(value = "printPlanId", required = false) Long printPlanId) {
-        List<BasicCourse> userDtos = printCommonService.list(param, printPlanId);
+                        @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
+        if (Objects.isNull(printPlanId)){
+            printPlanId = new ArrayList<>();
+        }
+        List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+        List<BasicCourse> userDtos = printCommonService.list(param, printPlanIdList);
         return ResultUtil.ok(userDtos);
     }
 //

+ 24 - 8
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamDetailController.java

@@ -157,16 +157,24 @@ public class ExamDetailController {
     @RequestMapping(value = "/data_place_query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findExamPlaceDatasource(@RequestParam(value = "param", required = false) String param,
-                                          @RequestParam(value = "printPlanId", required = false) Long printPlanId) {
-        return ResultUtil.ok(examDetailService.findExamPlaceDatasource(param, printPlanId));
+                                          @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
+        if (Objects.isNull(printPlanId)){
+            printPlanId = new ArrayList<>();
+        }
+        List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+        return ResultUtil.ok(examDetailService.findExamPlaceDatasource(param, printPlanIdList));
     }
 
     @ApiOperation(value = "考务数据导入-考场模糊查询")
     @RequestMapping(value = "/data_room_query", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = Result.class)})
     public Result findExamRoomDatasource(@RequestParam(value = "param", required = false) String param,
-                                         @RequestParam(value = "printPlanId", required = false) Long printPlanId) {
-        return ResultUtil.ok(examDetailService.findExamRoomDatasource(param, printPlanId));
+                                         @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
+        if (Objects.isNull(printPlanId)){
+            printPlanId = new ArrayList<>();
+        }
+        List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+        return ResultUtil.ok(examDetailService.findExamRoomDatasource(param, printPlanIdList));
     }
 
     @ApiOperation(value = "考务数据导入-模板下载")
@@ -180,20 +188,28 @@ public class ExamDetailController {
     @ApiOperation(value = "考务数据导入-结果导出")
     @RequestMapping(value = "/data_export", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
-    public Result dataExport(@ApiParam(value = "印刷计划id") @RequestParam(required = false) String printPlanId,
+    public Result dataExport(@ApiParam(value = "印刷计划id集合") @RequestParam(required = false) List<String> printPlanIdList,
                              @ApiParam(value = "课程代码") @RequestParam(required = false) String courseCode,
                              @ApiParam(value = "试卷编号") @RequestParam(required = false) String paperNumber,
                              @ApiParam(value = "考点") @RequestParam(required = false) String examPlace,
                              @ApiParam(value = "考场") @RequestParam(required = false) String examRoom,
-                             @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode) {
+                             @ApiParam(value = "卷袋号") @RequestParam(required = false) String packageCode,
+                             @ApiParam(value = "考试日期-起始") @RequestParam(required = false) Long startDate,
+                             @ApiParam(value = "考试日期-终止") @RequestParam(required = false) Long endDate) {
         Set<Long> orgIds = teachcloudCommonService.listSubOrgIds(null);
-        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.EXAMINATION_EXPORT, SystemConstant.convertIdToLong(printPlanId));
-        map.put("printPlanId", printPlanId);
+        if (Objects.isNull(printPlanIdList)){
+            printPlanIdList = new ArrayList<>();
+        }
+        List<Long> idList = printPlanIdList.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+        Map<String, Object> map = tbTaskService.saveTask(TaskTypeEnum.EXAMINATION_EXPORT, idList.get(0));
+        map.put("printPlanIdList", idList);
         map.put("courseCode", courseCode);
         map.put("paperNumber", paperNumber);
         map.put("examPlace", examPlace);
         map.put("examRoom", examRoom);
         map.put("packageCode", packageCode);
+        map.put("startDate", startDate);
+        map.put("endDate", endDate);
         map.put("orgIds", orgIds);
         asyncExaminationExportTemplateService
                 .exportTask(map);

+ 8 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -42,6 +42,7 @@ import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -133,8 +134,13 @@ public class ExamTaskController {
     @ApiOperation(value = "试卷编号模糊查询")
     @RequestMapping(value = "/paper_number_query", method = RequestMethod.POST)
     public Result paperNumberQuery(@RequestParam(value = "param", required = false) String param,
-                                   @RequestParam(value = "printPlanId", required = false) Long printPlanId) {
-        List<String> list = examTaskService.listPaperNumber(param, printPlanId);
+                                   @RequestParam(value = "printPlanId", required = false) List<String> printPlanId) {
+
+        if (Objects.isNull(printPlanId)){
+            printPlanId = new ArrayList<>();
+        }
+        List<Long> printPlanIdList = printPlanId.stream().map(SystemConstant::convertIdToLong).collect(Collectors.toList());
+        List<String> list = examTaskService.listPaperNumber(param, printPlanIdList);
         return ResultUtil.ok(list);
     }
 

+ 60 - 0
distributed-print/src/test/java/com/qmth/distributed/print/FssTest.java

@@ -0,0 +1,60 @@
+package com.qmth.distributed.print;
+
+import cn.hutool.core.date.DateUtil;
+import com.qmth.boot.core.fss.service.FileService;
+import com.qmth.boot.core.fss.store.FileStore;
+import com.qmth.boot.core.fss.utils.FssUtils;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.UploadFileEnum;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import javax.annotation.Resource;
+import java.io.File;
+import java.io.FileInputStream;
+
+/**
+ * @Description: 新存储系统测试类
+ * @Author: CaoZixuan
+ * @Date: 2021-08-16
+ */
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class FssTest {
+    private final static Logger log = LoggerFactory.getLogger(FssTest.class);
+    @Resource
+    private FileService fileService;
+
+    @Test
+    public void uploadFile1() throws Exception {
+        FileStore fileStore1 = fileService.getFileStore("public");
+        File file1 = new File("/Users/king/Downloads/distributed-print.log");
+        fileStore1.write("distributed-print.log", new FileInputStream(file1), DigestUtils.md5Hex(new FileInputStream(file1)));
+
+        FileStore fileStore2 = fileService.getFileStore("private");
+        File file2 = new File("/Users/king/Downloads/dump-distributed-v2.2.0-202108121702.sql");
+        fileStore2.write("dump-distributed-v2.2.0-202108121702.sql", new FileInputStream(file2), DigestUtils.md5Hex(new FileInputStream(file2)));
+    }
+
+    @Test
+    public void uploadFile() throws Exception {
+        UploadFileEnum type = UploadFileEnum.FILE;
+        FileStore fileStore = fileService.getFileStore("public");
+        File file = new File("C:\\Users\\ASUS\\Desktop\\excel导入临时\\课程导入模板.xlsx");
+        String date = DateUtil.today().replace("-", "/");
+        System.out.println(file.getName());
+        System.out.println(date);
+        String path = FssUtils.buildPath(type.getTitle(), date, SystemConstant.getUuid() + "." + SystemConstant.XLSX);
+        System.out.println(path);
+        fileStore.write(path, new FileInputStream(file), DigestUtils.md5Hex(new FileInputStream(file)));
+    }
+
+
+
+
+}

+ 13 - 6
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/UploadFileEnum.java

@@ -13,30 +13,37 @@ public enum UploadFileEnum {
     /**
      * 客户端
      */
-    PAPER("paper"),
+    PAPER("paper","private"),
     /**
      * 系统相关
      */
-    UPLOAD("upload"),
+    UPLOAD("upload","private"),
     /**
      * 导入导出
      */
-    FILE("file"),
+    FILE("file","public"),
 
-    PDF("pdf"),
+    PDF("pdf","private"),
 
-    HTML("html");
+    HTML("html","private");
 
     private String title;
+    private String fssType;
 
-    private UploadFileEnum(String title) {
+    UploadFileEnum(String title, String fssType) {
         this.title = title;
+        this.fssType = fssType;
     }
 
     public String getTitle() {
         return title;
     }
 
+    public String getFssType() {
+        return fssType;
+    }
+
+
     /**
      * 状态转换 toName
      *

+ 8 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicAttachmentServiceImpl.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.api.exception.ApiException;
+import com.qmth.boot.core.fss.service.FileService;
+import com.qmth.boot.core.fss.store.FileStore;
 import com.qmth.teachcloud.common.config.DictionaryConfig;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
@@ -51,6 +53,9 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
     @Resource
     OssUtil ossUtil;
 
+    @Resource
+    private FileService fileService;
+
     @Autowired
     private DictionaryConfig dictionaryConfig;
 
@@ -198,7 +203,9 @@ public class BasicAttachmentServiceImpl extends ServiceImpl<BasicAttachmentMappe
             stringJoiner.add(File.separator).add(SystemConstant.getUuid()).add(format);
             if (oss) {//上传至oss\
                 String dirName = stringJoiner.toString().replaceAll("\\\\", "/");
-                ossUtil.ossUpload(dirName, file.getInputStream(), BinaryUtil.toBase64String(HexUtils.decodeHex(md5)));
+//                ossUtil.ossUpload(dirName, file.getInputStream(), BinaryUtil.toBase64String(HexUtils.decodeHex(md5)));
+                FileStore fileStore = fileService.getFileStore(type.getFssType());
+                fileStore.write(dirName,file.getInputStream(),DigestUtils.md5Hex(file.getInputStream()));
                 jsonObject.put(SystemConstant.TYPE, SystemConstant.OSS);
                 jsonObject.put(SystemConstant.PATH, dirName);
             } else {//上传至服务器

+ 26 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/util/ConvertUtil.java

@@ -251,4 +251,30 @@ public class ConvertUtil {
             }
         }
     }
+
+    public File saveLocal(InputStream inputStream, String dirPath) throws IOException {
+        File desFile = new File(dirPath);
+        if (!desFile.getParentFile().exists()) {
+            desFile.getParentFile().mkdirs(); //目标文件目录不存在的话需要创建目录
+        }
+        byte[] bytes = new byte[1024]; // 开辟一个拷贝缓冲区
+        OutputStream outputStream = null;
+        try {
+            outputStream = new FileOutputStream(desFile);
+            int length;
+            while ((length = inputStream.read(bytes)) != -1) { //当读到尽头后,返回值为-1这个时候停止输出,拷贝结束
+                outputStream.write(bytes, 0, length);
+            }
+            return desFile;
+        } catch (Exception e) {
+            throw e;
+        } finally {
+            if (inputStream != null) {
+                inputStream.close();
+            }
+            if (outputStream != null) {
+                outputStream.close();
+            }
+        }
+    }
 }