xiatian 6 сар өмнө
parent
commit
51de2dd1d5

+ 79 - 0
src/main/java/cn/com/qmth/mps/controller/UserController.java

@@ -1,8 +1,22 @@
 package cn.com.qmth.mps.controller;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.List;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.CellType;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -52,6 +66,71 @@ public class UserController extends BaseController {
         return msg;
     }
 
+    @ApiOperation(value = "导出")
+    @PostMapping("export")
+    public void export(UserQuery query, HttpServletResponse response) throws IOException {
+        String fileName = URLEncoder.encode("用户", "UTF-8");
+        response.setHeader("Content-Disposition", "inline; filename=" + fileName + ".xlsx");
+        response.setContentType("application/vnd.ms-excel");
+
+        List<UserVo> list = new ArrayList<>();
+        query.setPageSize(1000);
+        query.setPageNumber(1);
+        for (;;) {
+            PageResult<UserVo> page = userService.page(query, getAccessUser());
+            if (CollectionUtils.isEmpty(page.getResult())) {
+                break;
+            }
+            list.addAll(page.getResult());
+            query.setPageNumber(query.getPageNumber() + 1);
+        }
+        Workbook wb = null;
+        OutputStream out = null;
+        try {
+            wb = new XSSFWorkbook(ResouceUtil.getStream("importtemplates/userImport.xlsx"));
+            if (CollectionUtils.isNotEmpty(list)) {
+                CellStyle style = wb.createCellStyle();
+                style.setAlignment(HorizontalAlignment.CENTER);
+                Sheet sheet = wb.getSheetAt(0);
+                Row head = sheet.createRow(0);
+                head.createCell(4, CellType.STRING).setCellValue("状态");
+                int rowIndex = 1;
+                for (UserVo vo : list) {
+                    rowIndex++;
+                    Row row = sheet.createRow(rowIndex);
+                    row.createCell(0, CellType.STRING).setCellValue(getStringVal(vo.getName()));
+                    row.createCell(1, CellType.STRING).setCellValue(getStringVal(vo.getLoginName()));
+                    row.createCell(2, CellType.STRING).setCellValue(getStringVal(vo.getRoleName()));
+                    row.createCell(3, CellType.STRING).setCellValue(getStringVal(vo.getCourseCodes()));
+                    row.createCell(4, CellType.STRING).setCellValue(vo.getEnable() ? "启用" : "禁用");
+                }
+            }
+            out = response.getOutputStream();
+            wb.write(out);
+        } finally {
+            if (wb != null) {
+                wb.close();
+            }
+            if (out != null) {
+                out.close();
+            }
+        }
+    }
+
+    private String getStringVal(Object o) {
+        if (o == null) {
+            return "";
+        }
+        return o.toString();
+    }
+
+    private String getStringVal(List<String> list) {
+        if (list == null) {
+            return "";
+        }
+        return StringUtils.join(list, ",");
+    }
+
     @ApiOperation(value = "下载导入模板")
     @PostMapping("template")
     public void getImportTemplate() {

+ 0 - 1
src/main/java/cn/com/qmth/mps/service/PaperGroupUnitService.java

@@ -6,7 +6,6 @@ import java.util.Map;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import cn.com.qmth.mps.bean.PaperGroupUnit;
-import cn.com.qmth.mps.entity.PaperGroupEntity;
 import cn.com.qmth.mps.entity.PaperGroupUnitEntity;
 
 public interface PaperGroupUnitService extends IService<PaperGroupUnitEntity> {

+ 1 - 0
src/main/java/cn/com/qmth/mps/service/impl/AuthServiceImpl.java

@@ -41,6 +41,7 @@ import cn.com.qmth.mps.vo.AdminLoginVo;
 import net.sf.json.JSONObject;
 import sun.misc.BASE64Decoder;
 
+@SuppressWarnings("restriction")
 @AuthorizationComponent
 @Service
 public class AuthServiceImpl implements AuthorizationService<User>, AuthService {

+ 7 - 1
src/main/java/cn/com/qmth/mps/service/impl/PaperDetailUnitServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -17,6 +18,7 @@ import cn.com.qmth.mps.bean.PaperDetailUnit;
 import cn.com.qmth.mps.dao.PaperDetailUnitDao;
 import cn.com.qmth.mps.entity.PaperDetailEntity;
 import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
+import cn.com.qmth.mps.exception.DisruptedException;
 import cn.com.qmth.mps.service.PaperDetailUnitService;
 
 @Service
@@ -86,6 +88,10 @@ public class PaperDetailUnitServiceImpl extends ServiceImpl<PaperDetailUnitDao,
             e.setPaperId(detail.getPaperId());
             ret.add(e);
         }
-        this.saveBatch(ret);
+        try {
+            this.saveBatch(ret);
+        } catch (DuplicateKeyException e) {
+            throw new DisruptedException("小题号有重复");
+        }
     }
 }

+ 18 - 8
src/main/java/cn/com/qmth/mps/service/impl/PaperGroupServiceImpl.java

@@ -1,27 +1,39 @@
 package cn.com.qmth.mps.service.impl;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
-import cn.com.qmth.mps.bean.*;
-import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
-import cn.com.qmth.mps.enums.ArbitrateMethod;
-import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+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.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.core.exception.StatusException;
 
+import cn.com.qmth.mps.bean.DefaultDoubleSet;
+import cn.com.qmth.mps.bean.PaperDetail;
+import cn.com.qmth.mps.bean.PaperDetailUnit;
+import cn.com.qmth.mps.bean.PaperGroup;
+import cn.com.qmth.mps.bean.PaperGroupUnit;
+import cn.com.qmth.mps.bean.User;
 import cn.com.qmth.mps.dao.PaperGroupDao;
 import cn.com.qmth.mps.entity.PaperDetailEntity;
+import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
 import cn.com.qmth.mps.entity.PaperEntity;
 import cn.com.qmth.mps.entity.PaperGroupEntity;
+import cn.com.qmth.mps.enums.ArbitrateMethod;
 import cn.com.qmth.mps.enums.Role;
 import cn.com.qmth.mps.service.CourseService;
 import cn.com.qmth.mps.service.ExamService;
@@ -35,8 +47,6 @@ import cn.com.qmth.mps.vo.paper.GroupInfoVo;
 import cn.com.qmth.mps.vo.paper.GroupVo;
 import cn.com.qmth.mps.vo.paper.PaperGroupDomain;
 
-import javax.annotation.Resource;
-
 @Service
 public class PaperGroupServiceImpl extends ServiceImpl<PaperGroupDao, PaperGroupEntity> implements PaperGroupService {
 

+ 5 - 2
src/main/java/cn/com/qmth/mps/service/impl/PaperGroupUnitServiceImpl.java

@@ -1,6 +1,10 @@
 package cn.com.qmth.mps.service.impl;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
@@ -12,7 +16,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 import cn.com.qmth.mps.bean.PaperGroupUnit;
 import cn.com.qmth.mps.dao.PaperGroupUnitDao;
-import cn.com.qmth.mps.entity.PaperGroupEntity;
 import cn.com.qmth.mps.entity.PaperGroupUnitEntity;
 import cn.com.qmth.mps.service.PaperGroupUnitService;
 

+ 31 - 6
src/main/java/cn/com/qmth/mps/service/impl/PaperServiceImpl.java

@@ -2,12 +2,15 @@ package cn.com.qmth.mps.service.impl;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
-import cn.com.qmth.mps.bean.*;
-import cn.com.qmth.mps.enums.ArbitrateMethod;
-import com.alibaba.fastjson.JSON;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -18,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.multipart.MultipartFile;
 
+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;
@@ -29,18 +33,36 @@ import com.qmth.boot.tools.excel.ExcelReader;
 import com.qmth.boot.tools.excel.enums.ExcelType;
 import com.qmth.boot.tools.excel.model.DataMap;
 
+import cn.com.qmth.mps.bean.DefaultDoubleSet;
+import cn.com.qmth.mps.bean.DoubleMarkImportParam;
+import cn.com.qmth.mps.bean.PaperDetail;
+import cn.com.qmth.mps.bean.PaperDetailUnit;
+import cn.com.qmth.mps.bean.PaperGroupUnit;
+import cn.com.qmth.mps.bean.User;
 import cn.com.qmth.mps.dao.PaperDao;
 import cn.com.qmth.mps.entity.CourseEntity;
 import cn.com.qmth.mps.entity.ExamEntity;
 import cn.com.qmth.mps.entity.PaperEntity;
+import cn.com.qmth.mps.enums.ArbitrateMethod;
 import cn.com.qmth.mps.enums.ExamStatus;
 import cn.com.qmth.mps.enums.Role;
-import cn.com.qmth.mps.service.*;
+import cn.com.qmth.mps.exception.DisruptedException;
+import cn.com.qmth.mps.service.CourseService;
+import cn.com.qmth.mps.service.ExamService;
+import cn.com.qmth.mps.service.PaperDetailService;
+import cn.com.qmth.mps.service.PaperGroupService;
+import cn.com.qmth.mps.service.PaperService;
 import cn.com.qmth.mps.util.BatchSetDataUtil;
 import cn.com.qmth.mps.util.Calculator;
 import cn.com.qmth.mps.util.PageUtil;
 import cn.com.qmth.mps.vo.exam.ExamPaperCountVo;
-import cn.com.qmth.mps.vo.paper.*;
+import cn.com.qmth.mps.vo.paper.GroupCountVo;
+import cn.com.qmth.mps.vo.paper.PaperGroupDomain;
+import cn.com.qmth.mps.vo.paper.PaperInfoVo;
+import cn.com.qmth.mps.vo.paper.PaperQuery;
+import cn.com.qmth.mps.vo.paper.PaperStructInfoVo;
+import cn.com.qmth.mps.vo.paper.PaperVo;
+import cn.com.qmth.mps.vo.paper.StructDomain;
 
 @Service
 public class PaperServiceImpl extends ServiceImpl<PaperDao, PaperEntity> implements PaperService {
@@ -622,6 +644,9 @@ public class PaperServiceImpl extends ServiceImpl<PaperDao, PaperEntity> impleme
                 paperDetailService.structImport(domain, user);
             } catch (StatusException e) {
                 failRecords.add("科目:" + map.get(domain.getPaperId()) + " " + e.getMessage());
+            } catch (DisruptedException e) {
+                failRecords.add("科目:" + map.get(domain.getPaperId()) + " " + e.getMessage());
+                return;
             } catch (Exception e) {
                 throw new RuntimeException("系统错误", e);
             }

+ 2 - 2
src/main/java/cn/com/qmth/mps/vo/paper/PaperStructInfoVo.java

@@ -1,8 +1,8 @@
 package cn.com.qmth.mps.vo.paper;
 
-import cn.com.qmth.mps.enums.ArbitrateMethod;
 import com.qmth.boot.tools.excel.annotation.ExcelColumn;
-import io.swagger.annotations.ApiModelProperty;
+
+import cn.com.qmth.mps.enums.ArbitrateMethod;
 
 public class PaperStructInfoVo {