Browse Source

3.3.1 优化考生导入

xiaofei 1 year ago
parent
commit
5e36e3667f

+ 0 - 0
distributed-print/install/mysql/upgrade/3.3.1.sql


+ 8 - 6
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicStudentController.java

@@ -107,13 +107,15 @@ public class BasicStudentController {
     @ApiResponses({@ApiResponse(code = 200, message = "返回信息", response = EditResult.class)})
     @OperationLogDetail(customizedOperationType = CustomizedOperationTypeEnum.IMPORT)
     public Result basicStudentImportAysnc(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws Exception {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+//        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Map<String, Object> map = printCommonService.saveTask(file, TaskTypeEnum.STUDENT_IMPORT);
-        map.put(SystemConstant.SYS_USER, sysUser);
-
-        asyncStudentDataImportService.importTask(map);
-        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
-        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
+//        map.put(SystemConstant.SYS_USER, sysUser);
+//
+//        asyncStudentDataImportService.importTask(map);
+//        TBTask tbTask = Objects.nonNull(map.get(SystemConstant.TASK)) ? (TBTask) map.get(SystemConstant.TASK) : null;
+//        return Objects.nonNull(tbTask) ? ResultUtil.ok(tbTask.getId()) : ResultUtil.error("创建任务失败");
+        boolean success = basicStudentService.importBasicStudent(map, file);
+        return ResultUtil.ok(success, "");
     }
 
     @ApiOperation(value = "学生管理-导出")

+ 14 - 14
distributed-print/src/main/resources/application.properties

@@ -10,17 +10,17 @@ server.tomcat.uri-encoding=UTF-8
 spring.application.name=teachcloud
 
 #\u6570\u636E\u6E90\u914D\u7F6E
-db.host=192.168.10.83
+db.host=localhost
 db.port=3306
-db.name=teachcloud_db_dev
-db.username=ENC(hFk5fogY40phjFsi2M9du3R6cwwlwI7G)
-db.password=ENC(BHE0A4BZd171ImTi/vyIncUnyDlJN2ul)
+db.name=teachcloud-3.3.1
+db.username=ENC(D3IHq2n4hGHT+D1UsYb1YA==)
+db.password=ENC(Rh3xOL8wBlhPYGHTn5vtdO4tUkaf2jTL)
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
 com.qmth.redis.port=6379
 com.qmth.redis.db=4
-com.qmth.redis.password=ENC(caK+KyXMkrMy9w0aB495kQ==)
+#com.qmth.redis.password=
 
 #mysql\u914D\u7F6E
 com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
@@ -53,15 +53,15 @@ spring.activiti.check-process-definitions=false
 #full\uFF1A\u4FDD\u5B58\u5386\u53F2\u6570\u636E\u7684\u6700\u9AD8\u7EA7\u522B\uFF0C\u9664\u4E86\u4F1A\u4FDD\u5B58audit\u7EA7\u522B\u7684\u6570\u636E\u5916\uFF0C\u8FD8\u4F1A\u4FDD\u5B58\u5176\u4ED6\u5168\u90E8\u6D41\u7A0B\u76F8\u5173\u7684\u7EC6\u8282\u6570\u636E\uFF0C\u5305\u62EC\u4E00\u4E9B\u6D41\u7A0B\u53C2\u6570\u7B49\u3002
 spring.activiti.history-level=audit
 
-com.qmth.fss.public.config=oss://key:secret@teachcloud-dps-dev1-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev1-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-dps-dev1-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev1-private
+#com.qmth.fss.public.config=oss://key:secret@teachcloud-dps-dev1-public.oss-api.qmth.com.cn
+#com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev1-public
+#com.qmth.fss.private.config=oss://key:secret@teachcloud-dps-dev1-private.oss-api.qmth.com.cn
+#com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev1-private
 
-#com.qmth.fss.public.config=/Users/xiaofei/qmth/temporary/zxzk/file-temp
-#com.qmth.fss.public.server=http://localhost:7001
-#com.qmth.fss.private.config=/Users/xiaofei/qmth/temporary/zxzk/pdf-temp
-#com.qmth.fss.private.server=http://localhost:7001
+com.qmth.fss.public.config=/Users/xiaofei/qmth/temporary/zxzk/file-temp
+com.qmth.fss.public.server=http://localhost:7001
+com.qmth.fss.private.config=/Users/xiaofei/qmth/temporary/zxzk/pdf-temp
+com.qmth.fss.private.server=http://localhost:7001
 
 #com.qmth.fss.public.config=/Users/king/Downloads/file-temp
 #com.qmth.fss.public.server=/file-temp/
@@ -69,7 +69,7 @@ com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev1-pri
 #com.qmth.fss.private.server=/pdf-temp/
 
 #\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=true
+sys.config.oss=false
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
 sys.config.serverUpload=
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/

+ 7 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysOrg.java

@@ -76,6 +76,13 @@ public class SysOrg extends BaseEntity implements Serializable {
         this.enable = true;
     }
 
+    public SysOrg(Long schoolId, String name, Long parentId) {
+        this.schoolId = schoolId;
+        this.name = name;
+        this.parentId = parentId;
+        this.enable = true;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) {

+ 3 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicStudentService.java

@@ -10,6 +10,7 @@ import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
 import com.qmth.teachcloud.common.entity.BasicStudent;
 import com.qmth.teachcloud.common.entity.SysUser;
 import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -109,4 +110,6 @@ public interface BasicStudentService extends IService<BasicStudent> {
     Map<String, Object> executeBasicStudentImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws IllegalAccessException;
 
     void exportData(HttpServletResponse response, String queryParams, Long collegeId, Long majorId, Set<Long> clazzIdList) throws Exception;
+
+    boolean importBasicStudent(Map<String, Object> map, MultipartFile file);
 }

+ 218 - 4
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicStudentServiceImpl.java

@@ -1,45 +1,55 @@
 package com.qmth.teachcloud.common.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.bean.dto.BasicStudentExportDto;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.bean.dto.TaskPrintClassDto;
 import com.qmth.teachcloud.common.bean.dto.excel.BasicStudentImportDto;
+import com.qmth.teachcloud.common.bean.dto.excel.DescribeImportDto;
 import com.qmth.teachcloud.common.bean.dto.excel.export.BasicStudentErrorExportDto;
 import com.qmth.teachcloud.common.bean.params.BasicClazzParams;
 import com.qmth.teachcloud.common.bean.params.BasicMajorParams;
 import com.qmth.teachcloud.common.bean.params.BasicStudentExtrasParam;
 import com.qmth.teachcloud.common.bean.params.BasicStudentParams;
 import com.qmth.teachcloud.common.bean.result.BasicStudentResult;
+import com.qmth.teachcloud.common.bean.vo.FilePathVo;
+import com.qmth.teachcloud.common.contant.SpringContextHolder;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.TeachBasicEnum;
+import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.mapper.BasicStudentMapper;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ExcelUtil;
 import com.qmth.teachcloud.common.util.JdbcErrorUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
 import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.jdbc.BadSqlGrammarException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.MessageFormat;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -59,11 +69,14 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
     private BasicClazzService basicClazzService;
     @Resource
     private BasicMajorService basicMajorService;
-
     @Resource
     private SysOrgService sysOrgService;
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    @Resource
+    private FileUploadService fileUploadService;
+    @Resource
+    private TBTaskService tbTaskService;
 
 
     @Override
@@ -367,6 +380,207 @@ public class BasicStudentServiceImpl extends ServiceImpl<BasicStudentMapper, Bas
         ExcelUtil.excelExport("学生数据", BasicStudentExportDto.class, studentExportDtos, response);
     }
 
+    @Override
+    public boolean importBasicStudent(Map<String, Object> map, MultipartFile file) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+
+        TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
+        List<BasicStudent> basicStudentList = new ArrayList<>();
+        List<BasicStudentErrorExportDto> errorDataList = new ArrayList<>();
+        AtomicInteger totalInteger = new AtomicInteger(0);
+        try {
+            tbTask.setStatus(TaskStatusEnum.RUNNING);
+            tbTaskService.updateById(tbTask);
+            checkImportBasicStudent(file, basicStudentList, errorDataList, totalInteger, sysUser);
+
+            if(CollectionUtils.isNotEmpty(basicStudentList)){
+                this.saveBatch(basicStudentList);
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (CollectionUtils.isNotEmpty(errorDataList)) {
+                tbTask.setResult(TaskResultEnum.ERROR);
+                try {
+                    File excelFileTemp = SystemConstant.getFileTempVar(SystemConstant.EXCEL_PREFIX);
+                    ExcelUtil.excelExportLocal(excelFileTemp, BasicStudentErrorExportDto.class, errorDataList);
+                    String fileName = SystemConstant.getNanoId() + SystemConstant.EXCEL_PREFIX;
+                    FilePathVo filePathVo = fileUploadService.uploadFile(excelFileTemp, UploadFileEnum.FILE, fileName);
+                    tbTask.setErrorFilePath(JSON.toJSONString(filePathVo));
+                } catch (Exception e) {
+                    log.error("创建学生导入错误数据文件失败");
+                } finally {
+                    tbTask.setSummary(JSON.toJSONString(errorDataList));
+                }
+            } else {
+                tbTask.setResult(TaskResultEnum.SUCCESS);
+            }
+            tbTask.setStatus(TaskStatusEnum.FINISH);
+            tbTaskService.updateById(tbTask);
+        }
+        return true;
+    }
+
+    private void checkImportBasicStudent(MultipartFile file, List<BasicStudent> basicStudentList, List<BasicStudentErrorExportDto> errorDataList, AtomicInteger totalInteger, SysUser sysUser) throws IOException, NoSuchFieldException {
+        // 查询所有学院map
+        List<SysOrg> sysOrgList = sysOrgService.findCollegeLevelOrgList(sysUser.getSchoolId());
+        Map<String, Long> collegeMap = CollectionUtils.isEmpty(sysOrgList) ? new HashMap<>() : sysOrgList.stream().collect(Collectors.toMap(SysOrg::getName, SysOrg::getId));
+        // 查询所有专业map
+        List<BasicMajor> basicMajorList = basicMajorService.list(new QueryWrapper<BasicMajor>().lambda().eq(BasicMajor::getSchoolId, sysUser.getSchoolId()));
+        Map<String, Long> majorMap = CollectionUtils.isEmpty(basicMajorList) ? new HashMap<>() : basicMajorList.stream().collect(Collectors.toMap(k -> k.getBelongOrgId() + SystemConstant.HYPHEN + k.getName(), BaseEntity::getId));
+        // 查询所有班级map
+        List<BasicClazz> basicClazzList = basicClazzService.list(new QueryWrapper<BasicClazz>().lambda().eq(BasicClazz::getSchoolId, sysUser.getSchoolId()));
+        Map<String, Long> clazzMap = CollectionUtils.isEmpty(basicClazzList) ? new HashMap<>() : basicClazzList.stream().collect(Collectors.toMap(k -> k.getMajorId() + SystemConstant.HYPHEN + k.getClazzName(), BaseEntity::getId));
+
+        // 顶级机构(学校级)
+        Long rootSchoolOrgId = sysOrgService.findRootOrg(sysUser.getSchoolId()).getId();
+
+        ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(BasicStudentImportDto.class, DescribeImportDto.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            Map<String, Integer> checkCodeMap = new HashMap<>();
+            for (int i = 0; i < finalExcelList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
+                List<Object> basicStudentImportDtoList = excelMap.get(i);
+                // 无数据,跳过
+                if (CollectionUtils.isEmpty(basicStudentImportDtoList)) {
+                    continue;
+                }
+                for (int y = 0; y < basicStudentImportDtoList.size(); y++) {
+                    // 计算总数量
+                    totalInteger.getAndIncrement();
+
+                    // 行索引
+                    Integer rowIndex = y + 1;
+                    BasicStudentImportDto basicStudentImportDto = (BasicStudentImportDto) basicStudentImportDtoList.get(y);
+                    String studentName = StringUtils.trimToNull(basicStudentImportDto.getStudentName());
+                    String studentCode = StringUtils.trimToNull(basicStudentImportDto.getStudentCode());
+                    String collegeName = StringUtils.trimToNull(basicStudentImportDto.getCollegeName());
+                    String majorName = StringUtils.trimToNull(basicStudentImportDto.getMajorName());
+                    String clazzName = StringUtils.trimToNull(basicStudentImportDto.getClazzName());
+
+                    // 本行全部列为空,跳过
+                    if (StringUtils.isAllBlank(studentName, studentCode, collegeName, majorName, clazzName)) {
+                        continue;
+                    }
+
+                    basicStudentImportDto.setRowIndex(rowIndex);
+                    BasicStudentErrorExportDto basicStudentErrorExportDto = new BasicStudentErrorExportDto();
+                    BeanUtils.copyProperties(basicStudentImportDto, basicStudentErrorExportDto);
+
+                    // excel内校验
+                    List<String> errorMsgList = new ArrayList<>();
+                    // 必填字段校验
+                    String errorStringEmpty = ExcelUtil.checkExcelField(basicStudentImportDto);
+                    if (errorStringEmpty.length() > 0) {
+                        errorMsgList.add(errorStringEmpty);
+                    }
+
+                    if (!studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_CODE1)) {
+                        errorMsgList.add("学号[" + studentCode + "]只能是字母或数字");
+                    }
+
+                    // 检验学号
+                    if (checkCodeMap.containsKey(studentCode)) {
+                        Integer studentCodeCount = checkCodeMap.get(studentCode);
+                        errorMsgList.add(String.format("学号[%s]有[%d]行数据", studentCode, studentCodeCount));
+                        checkCodeMap.put(studentCode, studentCodeCount + 1);
+                    } else {
+                        checkCodeMap.put(studentCode, 1);
+                    }
+
+                    if(CollectionUtils.isNotEmpty(errorMsgList)){
+                        continue;
+                    }
+
+                    // 院专班数据校验
+                    // 1.学院
+                    if (!collegeMap.containsKey(collegeName)) {
+                        try {
+                            SysOrg sysOrg = new SysOrg(sysUser.getSchoolId(), collegeName, rootSchoolOrgId);
+                            sysOrgService.saveOrg(sysOrg, sysUser);
+                            collegeMap.put(collegeName, sysOrg.getId());
+                        } catch (Exception e) {
+                            errorMsgList.add("创建学院[" + collegeName + "]失败");
+                            continue;
+                        }
+                    }
+                    Long collegeId = collegeMap.get(collegeName);
+                    if (collegeId == null) {
+                        errorMsgList.add("学号[" + studentCode + "]的考生,学院查询失败");
+                        errorDataList.add(basicStudentErrorExportDto);
+                        continue;
+                    }
+
+                    // 2.专业
+                    String majorKey = collegeId + SystemConstant.HYPHEN + majorName;
+                    if (!majorMap.containsKey(majorKey)) {
+                        // 新增一个major
+                        try {
+                            BasicMajorParams basicMajorParams = new BasicMajorParams();
+                            basicMajorParams.setMajorName(majorName);
+                            basicMajorParams.setCollegeId(collegeId);
+                            Long majorId = basicMajorService.saveBasicMajor(basicMajorParams, sysUser);
+                            majorMap.put(majorKey, majorId);
+                        } catch (Exception e) {
+                            errorMsgList.add("创建专业[" + majorName + "]失败");
+                            continue;
+                        }
+
+                    }
+                    Long majorId = majorMap.get(majorKey);
+                    if (majorId == null) {
+                        errorMsgList.add("学号[" + studentCode + "]的考生,专业查询失败");
+                        errorDataList.add(basicStudentErrorExportDto);
+                        continue;
+                    }
+
+                    // 3.班级
+                    String clazzKey = majorId + SystemConstant.HYPHEN + clazzName;
+                    if (!clazzMap.containsKey(clazzKey)) {
+                        // 新增一个clazz
+                        try {
+                            BasicClazzParams basicClazzParams = new BasicClazzParams();
+                            basicClazzParams.setMajorId(majorId);
+                            basicClazzParams.setClazzName(clazzName);
+                            Long clazzId = basicClazzService.saveBasicClazz(basicClazzParams, sysUser);
+                            clazzMap.put(clazzKey, clazzId);
+                        } catch (Exception e) {
+                            errorMsgList.add("创建班级[" + clazzName + "]失败");
+                            continue;
+                        }
+
+                    }
+                    Long clazzId = clazzMap.get(clazzKey);
+                    if (clazzId == null) {
+                        errorMsgList.add("学号[" + studentCode + "]的考生,班级查询失败");
+                        errorDataList.add(basicStudentErrorExportDto);
+                        continue;
+                    }
+
+                    // 学生信息组装
+                    BasicStudentParams basicStudentParams = new BasicStudentParams();
+                    basicStudentParams.setStudentName(studentName);
+                    basicStudentParams.setStudentCode(studentCode);
+                    basicStudentParams.setCollegeId(collegeId);
+                    basicStudentParams.setMajorId(majorId);
+                    basicStudentParams.setClazzId(clazzId);
+                    try {
+                        BasicStudent basicStudent = this.editEntityHelp(basicStudentParams, sysUser);
+                        basicStudentList.add(basicStudent);
+                    } catch (Exception e) {
+                        errorMsgList.add("学生保存失败");
+                    }
+
+                    // 错误
+                    if (CollectionUtils.isNotEmpty(errorMsgList)) {
+                        basicStudentErrorExportDto.setErrorMsg(JSON.toJSONString(errorMsgList));
+                        errorDataList.add(basicStudentErrorExportDto);
+                    }
+                }
+            }
+            return finalExcelList;
+        }, 2);
+    }
+
     /**
      * 学生保存助手方法(应对学生保存和导入批量保存)
      *

+ 14 - 14
teachcloud-task/src/main/resources/application.properties

@@ -11,17 +11,17 @@ server.tomcat.uri-encoding=UTF-8
 spring.application.name=teachcloud-task
 
 #\u6570\u636E\u6E90\u914D\u7F6E
-db.host=192.168.10.83
+db.host=localhost
 db.port=3306
-db.name=teachcloud_db_dev
-db.username=ENC(hFk5fogY40phjFsi2M9du3R6cwwlwI7G)
-db.password=ENC(BHE0A4BZd171ImTi/vyIncUnyDlJN2ul)
+db.name=teachcloud-3.3.1
+db.username=ENC(D3IHq2n4hGHT+D1UsYb1YA==)
+db.password=ENC(Rh3xOL8wBlhPYGHTn5vtdO4tUkaf2jTL)
 
 #redis\u6570\u636E\u6E90\u914D\u7F6E
 com.qmth.redis.host=${db.host}
 com.qmth.redis.port=6379
 com.qmth.redis.db=4
-com.qmth.redis.password=ENC(caK+KyXMkrMy9w0aB495kQ==)
+#com.qmth.redis.password=
 
 #mysql\u914D\u7F6E
 com.qmth.datasource.url=jdbc:mysql://${db.host}:${db.port}/${db.name}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true
@@ -54,23 +54,23 @@ spring.activiti.check-process-definitions=false
 #full\uFF1A\u4FDD\u5B58\u5386\u53F2\u6570\u636E\u7684\u6700\u9AD8\u7EA7\u522B\uFF0C\u9664\u4E86\u4F1A\u4FDD\u5B58audit\u7EA7\u522B\u7684\u6570\u636E\u5916\uFF0C\u8FD8\u4F1A\u4FDD\u5B58\u5176\u4ED6\u5168\u90E8\u6D41\u7A0B\u76F8\u5173\u7684\u7EC6\u8282\u6570\u636E\uFF0C\u5305\u62EC\u4E00\u4E9B\u6D41\u7A0B\u53C2\u6570\u7B49\u3002
 spring.activiti.history-level=audit
 
-com.qmth.fss.public.config=oss://key:secret@teachcloud-dps-dev1-public.oss-api.qmth.com.cn
-com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev-public
-com.qmth.fss.private.config=oss://key:secret@teachcloud-dps-dev1-private.oss-api.qmth.com.cn
-com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev-private
+#com.qmth.fss.public.config=oss://key:secret@teachcloud-dps-dev1-public.oss-api.qmth.com.cn
+#com.qmth.fss.public.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev-public
+#com.qmth.fss.private.config=oss://key:secret@teachcloud-dps-dev1-private.oss-api.qmth.com.cn
+#com.qmth.fss.private.server=https://oss-file.qmth.com.cn/teachcloud-dps-dev-private
 
 #com.qmth.fss.public.config=../static/
 #com.qmth.fss.public.server=/static/
 #com.qmth.fss.private.config=../static/
 #com.qmth.fss.private.server=/static/
 
-#com.qmth.fss.public.config=/Users/xiaofei/qmth/temporary/zxzk/file-temp
-#com.qmth.fss.public.server=http://localhost:7001
-#com.qmth.fss.private.config=/Users/xiaofei/qmth/temporary/zxzk/pdf-temp
-#com.qmth.fss.private.server=http://localhost:7001
+com.qmth.fss.public.config=/Users/xiaofei/qmth/temporary/zxzk/file-temp
+com.qmth.fss.public.server=http://localhost:7001
+com.qmth.fss.private.config=/Users/xiaofei/qmth/temporary/zxzk/pdf-temp
+com.qmth.fss.private.server=http://localhost:7001
 
 #\u7CFB\u7EDF\u914D\u7F6E
-sys.config.oss=true
+sys.config.oss=false
 sys.config.htmlToPdfUrl=/usr/local/bin/wkhtmltopdf
 #sys.config.serverUpload=
 #spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/