1
0
yin 2 dní pred
rodič
commit
8aede329d3

+ 0 - 232
stmms-web/src/main/java/cn/com/qmth/stmms/api/controller/admin/MarkInfoController.java

@@ -1,232 +0,0 @@
-package cn.com.qmth.stmms.api.controller.admin;
-
-import java.text.DecimalFormat;
-import java.util.*;
-
-import cn.com.qmth.stmms.admin.dto.MarkInfoDTO;
-import cn.com.qmth.stmms.admin.dto.MarkerInfoDTO;
-import cn.com.qmth.stmms.biz.exam.dao.SelectiveStudentDao;
-import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
-import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
-import cn.com.qmth.stmms.biz.exam.model.Marker;
-import cn.com.qmth.stmms.biz.exam.service.*;
-import cn.com.qmth.stmms.biz.lock.LockService;
-import cn.com.qmth.stmms.biz.mark.query.MarkLibrarySearchQuery;
-import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
-import cn.com.qmth.stmms.biz.user.service.UserService;
-import cn.com.qmth.stmms.common.annotation.Logging;
-import cn.com.qmth.stmms.common.annotation.RoleRequire;
-import cn.com.qmth.stmms.common.domain.WebUser;
-import cn.com.qmth.stmms.common.enums.*;
-import cn.com.qmth.stmms.common.utils.ExportExcel;
-import cn.com.qmth.stmms.common.utils.RequestUtils;
-import org.apache.commons.lang.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import com.qmth.boot.core.collection.PageResult;
-
-import cn.com.qmth.stmms.api.controller.BaseApiController;
-import cn.com.qmth.stmms.biz.exam.model.OperationLog;
-import cn.com.qmth.stmms.biz.exam.query.OperationLogSearchQuery;
-import cn.com.qmth.stmms.biz.utils.PageUtil;
-import cn.com.qmth.stmms.common.domain.ApiUser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.servlet.mvc.support.RedirectAttributes;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Api(tags = "评卷管理")
-@Controller("adminMarkInfoController")
-@RequestMapping("/api/admin/mark/info")
-public class MarkInfoController extends BaseApiController {
-
-    protected static Logger log = LoggerFactory.getLogger(MarkInfoController.class);
-
-    public static final String SPLIT = ",";
-
-    @Autowired
-    private ExamSubjectService subjectService;
-
-    @Autowired
-    private MarkerService markerService;
-
-    @Autowired
-    private MarkGroupService groupService;
-
-    @Autowired
-    private ExamQuestionService questionService;
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private MarkLibraryService libraryService;
-
-    @Autowired
-    private LockService lockService;
-
-    @Autowired
-    private ExamStudentService studentService;
-
-    @Autowired
-    private SelectiveStudentDao selectiveStudentDao;
-
-
-    @ApiOperation(value = "评卷进度列表")
-    @RequestMapping(value = "query", method = RequestMethod.POST)
-    @ResponseBody
-    public PageResult<OperationLog> query(OperationLogSearchQuery query) {
-        ApiUser user = getApiUser();
-        int examId = getSessionExamId();
-        query.setExamId(examId);
-        query.setSchoolId(user.getUser().getSchoolId());
-        query.orderByCreateTime();
-        query = logService.findByQuery(query);
-        return PageUtil.of(query);
-    }
-
-    @ApiOperation(value = "评卷进度统计")
-    @RequestMapping(value = "types", method = RequestMethod.POST)
-    @ResponseBody
-    public List<LogType> examTypeList() {
-        return Arrays.asList(LogType.values());
-    }
-
-    @Logging(menu = "整体评卷进度导出", type = LogType.EXPORT)
-    @RequestMapping(value = "/export-progress", method = RequestMethod.POST)
-    public String exportProgress(HttpServletRequest request, HttpServletResponse response,
-                                 RedirectAttributes redirectAttributes) {
-        WebUser wu = RequestUtils.getWebUser(request);
-        int examId = getSessionExamId(request);
-        List<MarkInfoDTO> result = new LinkedList<MarkInfoDTO>();
-        List<ExamSubject> list = subjectService.list(examId);
-        if (wu.isSubjectHeader()) {
-            list = getExamSubject(examId, wu);
-        }
-        for (ExamSubject subject : list) {
-            MarkInfoDTO dto = new MarkInfoDTO(subject);
-            MarkLibrarySearchQuery mQuery = new MarkLibrarySearchQuery();
-            mQuery.setExamId(examId);
-            mQuery.setSubjectCode(subject.getCode());
-            long libraryCount = libraryService.countByQuery(mQuery);
-            mQuery.addStatus(LibraryStatus.MARKED);
-            long inspectedCount = libraryService.countByQuery(mQuery);
-            dto.setInspectedCount(inspectedCount);
-            mQuery.addStatus(LibraryStatus.ARBITRATED);
-            mQuery.addStatus(LibraryStatus.INSPECTED);
-            long totalMarkedCount = libraryService.countByQuery(mQuery);
-            String percent = libraryCount > 0
-                    ? (new DecimalFormat("####.###").format(totalMarkedCount * 100.0 / libraryCount) + "%")
-                    : "0%";
-            dto.setPercent(percent);
-            dto.setGroupCount(groupService.countByExamAndSubject(examId, subject.getCode()));
-            result.add(dto);
-        }
-
-        try {
-            String fileName = "整体评卷进度.xlsx";
-            new ExportExcel("整体评卷进度", MarkInfoDTO.class).setDataList(result).write(response, fileName).dispose();
-            return null;
-        } catch (Exception e) {
-            addMessage(redirectAttributes, "导出整体评卷进度失败!" + e.getMessage());
-            return "redirect:/admin/exam/mark";
-        }
-    }
-
-    @Logging(menu = "评卷员工作量导出", type = LogType.EXPORT)
-    @RequestMapping(value = "/export-marker", method = RequestMethod.POST)
-    public String exportMarker(HttpServletRequest request, HttpServletResponse response,
-                               RedirectAttributes redirectAttributes) {
-        WebUser wu = RequestUtils.getWebUser(request);
-        int examId = getSessionExamId(request);
-        List<MarkerInfoDTO> result = new LinkedList<MarkerInfoDTO>();
-        List<Marker> list = markerService.getMarkCount(examId);
-        if (wu.isSubjectHeader()) {
-            list = markerService.getMarkCount(examId, wu.getSubjectCodeSet());
-        }
-        Map<String, ExamSubject> subjectMap = new HashMap<String, ExamSubject>();
-        Map<String, String> collegeMap = new HashMap<String, String>();
-        for (Marker marker : list) {
-            ExamSubject subject = subjectMap.get(marker.getSubjectCode());
-            if (subject == null) {
-                subject = subjectService.find(marker.getExamId(), marker.getSubjectCode());
-                subjectMap.put(marker.getSubjectCode(), subject);
-                collegeMap.put(marker.getSubjectCode(), StringUtils
-                        .join(studentService.findDistinctCollegeBySubjectCode(examId, marker.getSubjectCode()), SPLIT));
-            }
-            MarkGroup group = groupService.findOne(examId, marker.getSubjectCode(), marker.getGroupNumber());
-            group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
-                    group.getSubjectCode(), false, group.getNumber()));
-            marker.setUser(userService.findById(marker.getUserId()));
-            MarkerInfoDTO dto = new MarkerInfoDTO(marker, subject, group);
-            dto.setTotalScore(questionService.sumTotalScoreByGroupNumber(examId, marker.getSubjectCode(), false,
-                    marker.getGroupNumber()));
-            dto.setCollege(collegeMap.get(marker.getSubjectCode()));
-            result.add(dto);
-        }
-
-        try {
-            String fileName = "评卷员工作量.xlsx";
-            new ExportExcel("评卷员工作量", MarkerInfoDTO.class).setDataList(result).write(response, fileName).dispose();
-            return null;
-        } catch (Exception e) {
-            addMessage(redirectAttributes, "导出评卷员工作量失败!" + e.getMessage());
-            return "redirect:/admin/exam/mark";
-        }
-    }
-
-    @Logging(menu = "大题关闭", type = LogType.QUERY)
-    @RequestMapping("/finish")
-    @RoleRequire({ Role.SCHOOL_ADMIN, Role.SUBJECT_HEADER, Role.COLLEGE_ADMIN })
-    public String finish(HttpServletRequest request, Model model, RedirectAttributes redirectAttributes,
-                         @RequestParam String[] codes) {
-        int examId = getSessionExamId(request);
-        String messages = "";
-        for (String code : codes) {
-            MarkLibrarySearchQuery mQuery = new MarkLibrarySearchQuery();
-            mQuery.setExamId(examId);
-            mQuery.setSubjectCode(code);
-            long libraryCount = libraryService.countByQuery(mQuery);
-            mQuery.addStatus(LibraryStatus.MARKED);
-            mQuery.addStatus(LibraryStatus.ARBITRATED);
-            mQuery.addStatus(LibraryStatus.INSPECTED);
-            long markedCount = libraryService.countByQuery(mQuery);
-            if (markedCount != libraryCount) {
-                continue;
-            }
-            List<MarkGroup> groups = groupService.findByExamAndSubject(examId, code);
-            for (MarkGroup group : groups) {
-                if (group == null || group.getStatus() == MarkStatus.FINISH) {
-                    continue;
-                }
-                try {
-                    lockService.waitlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
-                    if (group.getStatus() == MarkStatus.FORMAL && group.getLeftCount() == 0
-                            && selectiveStudentDao.countByExamIdAndSubjectCodeAndLessSelectiveOrNotSelective(
-                            group.getExamId(), group.getSubjectCode(), true, true) == 0) {
-                        groupService.updateStatus(examId, code, group.getNumber(), MarkStatus.FINISH,
-                                group.getStatus());
-                    } else {
-                        messages = " " + code;
-                    }
-                } finally {
-                    lockService.unlock(LockType.GROUP, group.getExamId(), group.getSubjectCode(), group.getNumber());
-                }
-            }
-        }
-        if (StringUtils.isNotBlank(messages)) {
-            addMessage(redirectAttributes, messages + " 评卷未完成或选做题异常,无法关闭分组");
-        }
-        return "redirect:/admin/exam/mark";
-    }
-}