Explorar o código

命题任务批量导入

xiaof %!s(int64=4) %!d(string=hai) anos
pai
achega
3fc28b79c6
Modificáronse 16 ficheiros con 200 adicións e 30 borrados
  1. 21 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskTemp.java
  2. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskService.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/SysPrivilegeService.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCardRuleServiceImpl.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicCourseServiceImpl.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java
  7. 118 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SysOrgServiceImpl.java
  9. 4 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SysPrivilegeServiceImpl.java
  10. 5 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SysRoleServiceImpl.java
  11. 2 0
      distributed-print-business/src/main/resources/db/init-table.sql
  12. 1 0
      distributed-print-business/src/main/resources/mapper/ExamTaskMapper.xml
  13. 4 1
      distributed-print-business/src/main/resources/mapper/SysUserMapper.xml
  14. 2 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java
  15. 34 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java
  16. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysPrivilegeController.java

+ 21 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskTemp.java

@@ -50,6 +50,12 @@ public class ExamTaskTemp extends BaseEntity implements Serializable {
      */
     private String specialty;
 
+    @TableField("user_account")
+    private String userAccount;
+
+    @TableField("user_name")
+    private String userName;
+
     public Long getSchoolId() {
         return schoolId;
     }
@@ -98,4 +104,19 @@ public class ExamTaskTemp extends BaseEntity implements Serializable {
         this.specialty = specialty;
     }
 
+    public String getUserAccount() {
+        return userAccount;
+    }
+
+    public void setUserAccount(String userAccount) {
+        this.userAccount = userAccount;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
 }

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

@@ -11,6 +11,7 @@ import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -38,7 +39,7 @@ public interface ExamTaskService extends IService<ExamTask> {
 
     boolean saveExamTask(ExamTask examTask);
 
-    List<ExamTaskImportDto> importFile(MultipartFile file, String md5);
+    ExamTaskImportDto importFile(MultipartFile file) throws IOException, NoSuchFieldException;
 
     boolean saveBatch(ExamTask task);
 

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

@@ -18,7 +18,7 @@ public interface SysPrivilegeService extends IService<SysPrivilege> {
 
     List<PrivilegeDto> listPrivilegeTree();
 
-    boolean savePrivilege(SysPrivilege privilege);
+    String savePrivilege(SysPrivilege privilege);
 
     boolean remove(Long id);
 

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

@@ -96,7 +96,7 @@ public class BasicCardRuleServiceImpl extends ServiceImpl<BasicCardRuleMapper, B
         }
         // 修改
         else {
-            if (basicCardRule != null && basicCardRule.getId() != cardRule.getId()) {
+            if (basicCardRule != null && basicCardRule.getId().longValue() != cardRule.getId().longValue()) {
                 throw ExceptionResultEnum.ERROR.exception("题卡规则名称已存在");
             }
 

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

@@ -74,7 +74,7 @@ public class BasicCourseServiceImpl extends ServiceImpl<BasicCourseMapper, Basic
         }
         // 修改
         else {
-            if (basicCourse != null && basicCourse.getId() != course.getId()) {
+            if (basicCourse != null && basicCourse.getId().longValue() != course.getId().longValue()) {
                 throw ExceptionResultEnum.ERROR.exception("课程已存在");
             }
 

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

@@ -85,7 +85,7 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         }
         // 修改
         else {
-            if (basicTemplate != null && basicTemplate.getId() != template.getId()) {
+            if (basicTemplate != null && basicTemplate.getId().longValue() != template.getId().longValue()) {
                 throw ExceptionResultEnum.ERROR.exception("模板名称已存在");
             }
 

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

@@ -1,11 +1,14 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import cn.hutool.core.lang.UUID;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 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.google.gson.Gson;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.result.WorkResult;
 import com.qmth.distributed.print.business.entity.*;
@@ -13,18 +16,24 @@ import com.qmth.distributed.print.business.enums.ExamStatusEnum;
 import com.qmth.distributed.print.business.enums.ReviewStatusEnum;
 import com.qmth.distributed.print.business.mapper.ExamTaskMapper;
 import com.qmth.distributed.print.business.service.*;
+import com.qmth.distributed.print.business.util.ExcelUtil;
 import com.qmth.distributed.print.business.util.ServletUtil;
+import com.qmth.distributed.print.business.util.excel.ExcelError;
 import com.qmth.distributed.print.common.contant.SystemConstant;
 import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
+import com.qmth.distributed.print.common.util.ResultUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import javax.websocket.RemoteEndpoint;
 import java.io.File;
+import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -60,6 +69,12 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     @Resource
     ExamTaskMapper examTaskMapper;
 
+    @Autowired
+    private BasicCourseService basicCourseService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
     @Override
     public List<ExamTask> listByCourseCode(Long schoolId, String code) {
         QueryWrapper<ExamTask> queryWrapper = new QueryWrapper<>();
@@ -178,9 +193,101 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     }
 
     @Override
-    public List<ExamTaskImportDto> importFile(MultipartFile file, String md5) {
-        // 导入文件
-        return null;
+    public ExamTaskImportDto importFile(MultipartFile file) throws IOException, NoSuchFieldException {
+        // 学校ID
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        // 用户
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+
+        List<LinkedMultiValueMap<Integer, Object>> finalList = ExcelUtil.excelReader(file.getInputStream(), Lists.newArrayList(ExamTaskTemp.class), (finalExcelList, finalColumnNameList, finalExcelErrorList) -> {
+            List<ExcelError> excelErrorTemp = new ArrayList<>();
+            // 只允许导入一个sheet
+            if(finalExcelList.size() > 1){
+                throw ExceptionResultEnum.ERROR.exception("excel中只允许有一个sheet");
+            }
+            for (int i = 0; i < finalExcelList.size(); i++) {
+                LinkedMultiValueMap<Integer, Object> excelMap = finalExcelList.get(i);
+                List<Object> examTaskTempList = excelMap.get(i);
+                for (int y = 0; y < examTaskTempList.size(); y++) {
+                    ExamTaskTemp userImportDto = (ExamTaskTemp) examTaskTempList.get(y);
+                    if (StringUtils.isBlank(userImportDto.getCourseCode())) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]必填"));
+                    }
+                    if (StringUtils.isBlank(userImportDto.getCourseName())) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]必填"));
+                    }
+
+                    // 课程是否存在并且与名称对应
+                    QueryWrapper<BasicCourse> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(BasicCourse::getCode, userImportDto.getCourseCode());
+                    BasicCourse course = basicCourseService.getOne(queryWrapper);
+                    if (course == null) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程代码]在系统中不存在"));
+                    } else if (!userImportDto.getCourseName().equals(course.getName())) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[课程名称]与系统中不匹配"));
+                    }
+
+                    if (StringUtils.isBlank(userImportDto.getPaperNumber())) {
+                        excelErrorTemp.add(new ExcelError(y + 1, "excel第" + (i + 1) + "个sheet第" + (y + 1) + "行[试卷编号]必填"));
+                    }
+
+                    userImportDto.setId(SystemConstant.getDbUuid());
+                    userImportDto.setSchoolId(schoolId);
+                    userImportDto.setCreateId(sysUser.getId());
+                    userImportDto.setCreateTime(System.currentTimeMillis());
+                }
+            }
+            if (excelErrorTemp.size() > 0) {
+                throw ExceptionResultEnum.ERROR.exception(JSONObject.toJSONString(excelErrorTemp));
+            }
+            return finalExcelList;
+        });
+        return executeImportExamTaskBatch(finalList);
+    }
+
+    @Transactional
+    ExamTaskImportDto executeImportExamTaskBatch(List<LinkedMultiValueMap<Integer, Object>> finalList) {
+        // 批次号
+        String batchNo = String.valueOf(System.nanoTime());
+        ExamTaskImportDto examTaskImportDto = new ExamTaskImportDto();
+        examTaskImportDto.setBatchNo(batchNo);
+        List<ExamTaskDto> tasks = new ArrayList<>();
+        for (int i = 0; i < finalList.size(); i++) {
+            LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
+            List<Object> examTaskTempList = excelMap.get(i);
+            for (int y = 0; y < examTaskTempList.size(); y++) {
+                ExamTaskTemp examTaskTemp = (ExamTaskTemp) examTaskTempList.get(y);
+                examTaskTemp.setBatchNo(batchNo);
+                //保存
+                examTaskTempService.save(examTaskTemp);
+
+                ExamTaskDto examTaskDto = new ExamTaskDto();
+                examTaskDto.setCourseCode(examTaskTemp.getCourseCode());
+                examTaskDto.setCourseName(examTaskTemp.getCourseName());
+                examTaskDto.setPaperNumber(examTaskTemp.getPaperNumber());
+                examTaskDto.setSpecialty(examTaskTemp.getSpecialty());
+                // 校验命题老师
+                if(StringUtils.isBlank(examTaskTemp.getUserAccount())){
+                    examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), null));
+                } else {
+                    QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.lambda().eq(SysUser::getLoginName, examTaskTemp.getUserAccount());
+                    SysUser sysUser = sysUserService.getOne(queryWrapper);
+                    if(sysUser == null){
+                        examTaskDto.setUsers( listUsers(examTaskTemp.getCourseCode(), null));
+                    } else {
+                        examTaskDto.setUsers(listUsers(examTaskTemp.getCourseCode(), String.valueOf(sysUser.getId())));
+                    }
+                }
+                tasks.add(examTaskDto);
+            }
+        }
+        examTaskImportDto.setTasks(tasks);
+        return examTaskImportDto;
+    }
+
+    private List<BlurryUserDto> listUsers(String courseCode, String userId){
+        return sysUserService.listUser(courseCode, userId);
     }
 
     @Override
@@ -209,7 +316,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setStartTime(task.getStartTime());
             examTask.setEndTime(task.getEndTime());
             examTask.setCardRuleId(task.getCardRuleId());
-            examTask.setStatus(ExamStatusEnum.NEW);
             examTask.setBatchNo(task.getBatchNo());
             examTask.setCreateId(sysUser.getId());
             examTask.setCreateTime(System.currentTimeMillis());
@@ -221,6 +327,9 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }).findFirst().get();
             if (StringUtils.isNotBlank(userId)) {
                 examTask.setUserId(Long.valueOf(userId));
+                examTask.setStatus(ExamStatusEnum.READY);
+            } else {
+                examTask.setStatus(ExamStatusEnum.NEW);
             }
             list.add(examTask);
         }
@@ -409,7 +518,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
      * @return
      */
     @Override
-    public IPage<WorkResult> queryByMyWork(IPage<Map> iPage, Long userId, Long schoolId, String...status) {
+    public IPage<WorkResult> queryByMyWork(IPage<Map> iPage, Long userId, Long schoolId, String... status) {
         return examTaskMapper.queryByMyWork(iPage, userId, schoolId, status);
     }
 
@@ -433,19 +542,19 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         QueryWrapper<ExamTaskDetail> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamTaskDetail::getExamTaskId, examTaskId);
         ExamTaskDetail examTaskDetail = examTaskDetailService.getOne(queryWrapper);
-        if(examTaskDetail == null){
+        if (examTaskDetail == null) {
             throw ExceptionResultEnum.ERROR.exception("数据异常");
         }
         String paperAttachmentIds = examTaskDetail.getPaperAttachmentIds();
         List<JSONObject> jsonObjectList = JSONObject.parseArray(paperAttachmentIds, JSONObject.class);
         // 本地保存目录
-        String rootPath = SystemConstant.DOWNLOAD_TEMP + File.separator + schoolId + File.separator+ examTaskDetail.getId();
+        String rootPath = SystemConstant.DOWNLOAD_TEMP + File.separator + schoolId + File.separator + examTaskDetail.getId();
         List<File> fileList = new ArrayList<>();
         // 试卷
         for (JSONObject jsonObject : jsonObjectList) {
             Long id = jsonObject.getLongValue("attachmentId");
             BasicAttachment attachment = basicAttachmentService.getById(id);
-            if(attachment == null){
+            if (attachment == null) {
                 throw ExceptionResultEnum.ERROR.exception("附件数据异常");
             }
             File file = commonService.copyFile(rootPath, attachment);
@@ -457,7 +566,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 //        if (cardId != null){
 //
 //        }
-        if(fileList.size() == 0){
+        if (fileList.size() == 0) {
             throw ExceptionResultEnum.ERROR.exception("没有可导出文件");
         }
 

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

@@ -89,7 +89,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         }
         // 修改
         else {
-            if (sysOrg != null && org.getId() != sysOrg.getId()) {
+            if (sysOrg != null && org.getId().longValue() != sysOrg.getId().longValue()) {
                 throw ExceptionResultEnum.ERROR.exception("机构代码已存在");
             }
             org.setUpdateId(sysUser.getId());

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

@@ -66,7 +66,7 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
     }
 
     @Override
-    public boolean savePrivilege(SysPrivilege privilege) {
+    public String savePrivilege(SysPrivilege privilege) {
         QueryWrapper<SysPrivilege> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(SysPrivilege::getParentId, privilege.getParentId()).eq(SysPrivilege::getName, privilege.getName());
         SysPrivilege sysPrivilege = this.getOne(queryWrapper);
@@ -78,15 +78,16 @@ public class SysPrivilegeServiceImpl extends ServiceImpl<SysPrivilegeMapper, Sys
             }
             privilege.setId(SystemConstant.getDbUuid());
             privilege.setCreateTime(System.currentTimeMillis());
-            return this.save(privilege);
+            this.save(privilege);
         }
         // 修改
         else {
             if (sysPrivilege != null && !Objects.equals(privilege.getId(), sysPrivilege.getId())) {
                 throw ExceptionResultEnum.ERROR.exception("名称已存在");
             }
-            return this.updateById(privilege);
+            this.updateById(privilege);
         }
+        return String.valueOf(privilege.getId());
     }
 
     @Override

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

@@ -72,25 +72,25 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         }
         // 修改
         else {
-            if (sysRole != null && sysRole.getId() != role.getId()) {
+            if (sysRole != null && sysRole.getId().longValue() != role.getId().longValue()) {
                 throw ExceptionResultEnum.ERROR.exception("角色已存在");
             }
 
             role.setUpdateId(sysUser.getId());
             role.setUpdateTime(System.currentTimeMillis());
 
-            if (RoleTypeEnum.CUSTOM.equals(role.getType())) {
+//            if (RoleTypeEnum.CUSTOM.equals(role.getType())) {
                 //删除权限
                 sysRolePrivilegeService.removeByRoleId(role.getId());
-            }
+//            }
             isSuccess = this.updateById(role);
 
         }
 
-        if (RoleTypeEnum.CUSTOM.equals(role.getType())) {
+//        if (RoleTypeEnum.CUSTOM.equals(role.getType())) {
             // 新增权限
             sysRolePrivilegeService.saveBatch(role);
-        }
+//        }
 
         return isSuccess;
     }

+ 2 - 0
distributed-print-business/src/main/resources/db/init-table.sql

@@ -653,6 +653,8 @@ CREATE TABLE `exam_task_temp` (
   `course_name` varchar(50) NOT NULL COMMENT '课程名称',
   `paper_number` varchar(30) NOT NULL COMMENT '试卷编号',
   `specialty` varchar(100) DEFAULT NULL COMMENT '适用专业',
+  `user_account` VARCHAR(45) DEFAULT NULL COMMENT '命题老师账号',
+  `user_name` VARCHAR(45) DEFAULT NULL COMMENT '命题老师姓名',
   `create_id` bigint DEFAULT NULL,
   `create_time` bigint DEFAULT NULL,
   `update_id` bigint DEFAULT NULL,

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

@@ -88,6 +88,7 @@
                 LEFT JOIN
             sys_user b ON a.user_id = b.id
         <where>
+            b.enable = true
             <if test="schoolId != null and schoolId != ''">
                 and b.school_id = #{schoolId}
             </if>

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

@@ -114,8 +114,11 @@
             <if test="type != null and type != ''">
                 and c.type = #{type}
             </if>
+            <if test="courseCode != null and courseCode != ''">
+                and e.code = #{courseCode}
+            </if>
             <if test="param != null and param != ''">
-                and a.real_name like concat('%',#{param},'%')
+                and a.id = #{param}
             </if>
         </where>
     </select>

+ 2 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintPlanController.java

@@ -141,6 +141,7 @@ public class ExamPrintPlanController {
      * @param paperParam
      * @return
      */
+    @ApiOperation(value = "关联/更换试卷")
     @RequestMapping(value = "/relate_update", method = RequestMethod.POST)
     public Result relateUpdate(@RequestBody RelatePaperParam paperParam) {
         boolean isSuccess = examTaskDetailService.updatePaper(paperParam);
@@ -153,6 +154,7 @@ public class ExamPrintPlanController {
      * @param courseCode
      * @return
      */
+    @ApiOperation(value = "查询所有试卷编号/关联卷型")
     @RequestMapping(value = "/relate_get_paper_numbers", method = RequestMethod.POST)
     public Result relateGetPaperNumbers(@RequestParam(value = "courseCode", required = true) String courseCode) {
         List<RelatePaperDto> list = examTaskService.listPaperTypes(courseCode);

+ 34 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskController.java

@@ -5,24 +5,34 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.annotation.BOOL;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.*;
+import com.qmth.distributed.print.business.entity.BasicAttachment;
 import com.qmth.distributed.print.business.entity.ExamTask;
 import com.qmth.distributed.print.business.entity.ExamTaskDetail;
 import com.qmth.distributed.print.business.entity.ExamTaskReviewLog;
+import com.qmth.distributed.print.business.enums.UploadFileEnum;
+import com.qmth.distributed.print.business.service.BasicAttachmentService;
 import com.qmth.distributed.print.business.service.ExamTaskDetailService;
 import com.qmth.distributed.print.business.service.ExamTaskReviewLogService;
 import com.qmth.distributed.print.business.service.ExamTaskService;
+import com.qmth.distributed.print.business.util.ServletUtil;
+import com.qmth.distributed.print.common.contant.SystemConstant;
+import com.qmth.distributed.print.common.enums.ExceptionResultEnum;
 import com.qmth.distributed.print.common.util.Result;
 import com.qmth.distributed.print.common.util.ResultUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * <p>
@@ -47,6 +57,9 @@ public class ExamTaskController {
     @Autowired
     private ExamTaskReviewLogService examTaskReviewLogService;
 
+    @Autowired
+    private BasicAttachmentService basicAttachmentService;
+
     /**
      * 查询
      *
@@ -145,14 +158,31 @@ public class ExamTaskController {
      * 文件导入
      *
      * @param file
-     * @param md5
      * @return
      */
     @ApiOperation(value = "文件导入")
     @RequestMapping(value = "/import", method = RequestMethod.POST)
-    public Result importFile(MultipartFile file, String md5) {
-        List<ExamTaskImportDto> list = examTaskService.importFile(file, md5);
-        return ResultUtil.ok(list);
+    public Result importFile(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) {
+        BasicAttachment basicAttachment = null;
+        try {
+            basicAttachment = basicAttachmentService.saveAttachment(file, ServletUtil.getRequestMd5(), UploadFileEnum.FILE);
+            if (Objects.isNull(basicAttachment)) {
+                throw ExceptionResultEnum.ATTACHMENT_ERROR.exception();
+            } else {
+                ExamTaskImportDto examTaskImportDto = examTaskService.importFile(file);
+                return ResultUtil.ok(examTaskImportDto);
+            }
+        } catch (Exception e) {
+            if (Objects.nonNull(basicAttachment)) {
+                basicAttachmentService.deleteAttachment(basicAttachment);
+            }
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        }
+        return null;
     }
 
     /**

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

@@ -54,8 +54,8 @@ public class SysPrivilegeController {
     @ApiOperation(value = "新增/修改")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     public Result save( @RequestBody SysPrivilege privilege) {
-        boolean isSuccess = sysPrivilegeService.savePrivilege(privilege);
-        return ResultUtil.ok(isSuccess);
+        String id = sysPrivilegeService.savePrivilege(privilege);
+        return ResultUtil.ok(id,"");
     }
 
     /**