|
@@ -0,0 +1,198 @@
|
|
|
+package cn.com.qmth.stmms.ms.marking.api;
|
|
|
+
|
|
|
+import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
|
|
|
+import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.ChangeLevel;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
|
|
|
+import cn.com.qmth.stmms.ms.core.domain.Paper;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.ChangeLevelRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
|
|
|
+import cn.com.qmth.stmms.ms.core.vo.Subject;
|
|
|
+import cn.com.qmth.stmms.ms.marking.assembler.ChangeLevelAssembler;
|
|
|
+import cn.com.qmth.stmms.ms.marking.dto.ChangeLevelDTO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.http.HttpStatus;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+@RestController
|
|
|
+@RequestMapping("/api/changelevel")
|
|
|
+public class ChangeLevelApi {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PaperRepo paperRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ChangeLevelRepo changeLevelRepo;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ChangeLevelAssembler changeLevelAssembler;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SqlUtil sqlUtil;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询改档列表
|
|
|
+ *
|
|
|
+ * @param workId
|
|
|
+ * @param areaCode
|
|
|
+ * @param subject
|
|
|
+ * @param status
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/list", method = RequestMethod.GET)
|
|
|
+ public PageableDTO changeLevel(@RequestParam(required = false) Long workId,
|
|
|
+ @RequestParam(required = false) String areaCode,
|
|
|
+ @RequestParam(required = false) String subject,
|
|
|
+ @RequestParam(required = false) String status,
|
|
|
+ Pageable pageable) {
|
|
|
+ List<ChangeLevelDTO> levelDTOs = new ArrayList<>();
|
|
|
+// StringBuffer sql = new StringBuffer();
|
|
|
+// sql.append(" SELECT ");
|
|
|
+// sql.append(" cl.id, ");
|
|
|
+// sql.append(" cl.work_id workId, ");
|
|
|
+// sql.append(" cl.subject, ");
|
|
|
+// sql.append(" p.exam_number examNumber, ");
|
|
|
+// sql.append(" p.area_code areaCode, ");
|
|
|
+// sql.append(" p.is_rejected isRejected, ");
|
|
|
+// sql.append(" cl.create_date createDate, ");
|
|
|
+// sql.append(" p.level, ");
|
|
|
+// sql.append(" p.secret_number secretNumber, ");
|
|
|
+// sql.append(" p.redo_level redoLevel, ");
|
|
|
+// sql.append(" p.is_sample isSample, ");
|
|
|
+// sql.append(" p.mark_by_leader markByLeader, ");
|
|
|
+// sql.append(" p.id paperId ");
|
|
|
+// sql.append(" FROM ");
|
|
|
+// sql.append(" change_level cl ");
|
|
|
+// sql.append(" LEFT JOIN ");
|
|
|
+// sql.append(" paper p ON cl.work_id = p.work_id ");
|
|
|
+// sql.append(" AND cl.subject = p.subject ");
|
|
|
+// sql.append(" AND cl.paper_id = p.id ");
|
|
|
+// sql.append(" where 1=1 ");
|
|
|
+// if (Objects.nonNull(workId)) {
|
|
|
+// sql.append(" and cl.work_id = '" + workId + "'");
|
|
|
+// }
|
|
|
+// if (Objects.nonNull(areaCode)) {
|
|
|
+// sql.append(" and p.area_code = '" + areaCode + "'");
|
|
|
+// }
|
|
|
+// if (Objects.nonNull(subject)) {
|
|
|
+// sql.append(" and cl.subject = '" + subject + "'");
|
|
|
+// }
|
|
|
+// if (Objects.nonNull(status)) {
|
|
|
+// if (status == 0) {
|
|
|
+// sql.append(" and cl.audit_status = 0");
|
|
|
+// } else {
|
|
|
+// sql.append(" and cl.audit_status != 0");
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ Specification<Paper> specification = (root, query, builder) -> {
|
|
|
+ List<Predicate> predicates = new ArrayList<>();
|
|
|
+ if (!StringUtils.isEmpty(workId)) {
|
|
|
+ predicates.add(builder.equal(root.get("workId"), workId));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(areaCode)) {
|
|
|
+ List<Paper> papers = paperRepo.findByworkIdAndSubjectAndAreaCode(workId, Subject.valueOf(subject), areaCode);
|
|
|
+// predicates.add(builder.equal(root.get("areaCode"), areaCode));
|
|
|
+ CriteriaBuilder.In<Object> in = builder.in(root.get("paperId"));
|
|
|
+ for (Paper paper : papers) {
|
|
|
+ in.value(paper.getId());
|
|
|
+ }
|
|
|
+ predicates.add(builder.and(builder.and(in)));
|
|
|
+
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(subject)) {
|
|
|
+ predicates.add(builder.equal(root.get("subject"), subject));
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(status) && !StringUtils.isEmpty(status)) {
|
|
|
+ if (Objects.equals(status, "0")) {
|
|
|
+ predicates.add(builder.equal(root.get("auditStatus"), status));
|
|
|
+ } else {
|
|
|
+ predicates.add(builder.notEqual(root.get("auditStatus"), status));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return builder.and(predicates.toArray(new Predicate[predicates.size()]));
|
|
|
+ };
|
|
|
+
|
|
|
+ Page<ChangeLevel> levels = changeLevelRepo.findAll(specification, pageable);
|
|
|
+
|
|
|
+// PageInfo<Map> pageInfo = sqlUtil.execSqlForListPageInfo(sql.toString(), pageable.getPageNumber(), pageable.getPageSize(), null);
|
|
|
+ levels.getContent().forEach(m -> {
|
|
|
+ levelDTOs.add(changeLevelAssembler.toDTO(m));
|
|
|
+ });
|
|
|
+ return new PageableDTO(levelDTOs, levels.getTotalElements(), levels.getTotalPages(), pageable.getPageNumber());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 科组长改档申请
|
|
|
+ *
|
|
|
+ * @param markSubject
|
|
|
+ * @param paperId
|
|
|
+ * @param level
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "{markSubject}/changeLevel", method = RequestMethod.POST)
|
|
|
+ public ResponseEntity changeLevel(@PathVariable MarkSubject markSubject,
|
|
|
+ @RequestParam Long paperId,
|
|
|
+ @RequestParam String level) {
|
|
|
+ //只有打分阶段才能改档
|
|
|
+ if (!Objects.equals(markSubject.getStage().name(), MarkStage.SCORE.name())) {
|
|
|
+ throw new RuntimeException("只有打分阶段才允许改档");
|
|
|
+ }
|
|
|
+ Paper paper = paperRepo.findOne(paperId);
|
|
|
+
|
|
|
+ //
|
|
|
+ ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperId(markSubject.getWorkId(), markSubject.getSubject(), paperId);
|
|
|
+ if (changeLevel == null) {
|
|
|
+ changeLevel = new ChangeLevel();
|
|
|
+ changeLevel.setWorkId(markSubject.getWorkId());
|
|
|
+ changeLevel.setSubject(markSubject.getSubject().name());
|
|
|
+ changeLevel.setPaperId(paperId);
|
|
|
+ changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
+ changeLevel.setSuggestLevel(level);
|
|
|
+ changeLevel.setAuditStatus(0);
|
|
|
+ //todo
|
|
|
+// changeLevel.setCreateId();
|
|
|
+ changeLevel.setCreateDate(new Date());
|
|
|
+ } else {
|
|
|
+ changeLevel.setOriginalLevel(paper.getLevel());
|
|
|
+ changeLevel.setSuggestLevel(level);
|
|
|
+// changeLevel.setCreateId();
|
|
|
+ changeLevel.setCreateDate(new Date());
|
|
|
+ }
|
|
|
+ changeLevelRepo.save(changeLevel);
|
|
|
+
|
|
|
+ return new ResponseEntity(HttpStatus.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 科组长改档审核
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @param auditStatus
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @RequestMapping(value = "/changeLevelAudit", method = RequestMethod.POST)
|
|
|
+ public ResponseEntity changeLevelAudit(@RequestParam Long id,
|
|
|
+ @RequestParam Integer auditStatus) {
|
|
|
+ ChangeLevel changeLevel = changeLevelRepo.findOne(id);
|
|
|
+ changeLevel.setAuditStatus(auditStatus);
|
|
|
+ changeLevelRepo.save(changeLevel);
|
|
|
+
|
|
|
+ return new ResponseEntity(HttpStatus.OK);
|
|
|
+ }
|
|
|
+}
|