浏览代码

update orm group page

deason 9 月之前
父节点
当前提交
cf26972a79

+ 7 - 0
src/main/java/cn/com/qmth/scancentral/dao/OmrGroupDao.java

@@ -1,10 +1,17 @@
 package cn.com.qmth.scancentral.dao;
 
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
+import cn.com.qmth.scancentral.vo.OmrGroupVo;
+import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 
 public interface OmrGroupDao extends BaseMapper<OmrGroupEntity> {
 
     void updateTotalCount(@Param(value = "id") Long id);
+
+    IPage<OmrGroupVo> queryPage(Page<OmrGroupVo> page, @Param("query") OmrGroupQuery query);
+
 }

+ 17 - 0
src/main/java/cn/com/qmth/scancentral/handle/OmrConditionVoListTypeHandler.java

@@ -0,0 +1,17 @@
+package cn.com.qmth.scancentral.handle;
+
+import cn.com.qmth.scancentral.vo.OmrConditionVo;
+import com.google.gson.reflect.TypeToken;
+
+import java.util.List;
+
+public class OmrConditionVoListTypeHandler extends ListTypeHandler<OmrConditionVo> {
+
+    @Override
+    protected TypeToken<List<OmrConditionVo>> specificType() {
+        return new TypeToken<List<OmrConditionVo>>() {
+
+        };
+    }
+
+}

+ 37 - 75
src/main/java/cn/com/qmth/scancentral/service/impl/OmrGroupServiceImpl.java

@@ -1,29 +1,5 @@
 package cn.com.qmth.scancentral.service.impl;
 
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-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.qmth.boot.core.collection.PageResult;
-import com.qmth.boot.core.concurrent.service.ConcurrentService;
-import com.qmth.boot.core.exception.ParameterException;
-import com.qmth.boot.core.exception.ReentrantException;
-import com.qmth.boot.core.exception.StatusException;
-
 import cn.com.qmth.scancentral.dao.OmrGroupDao;
 import cn.com.qmth.scancentral.entity.OmrGroupEntity;
 import cn.com.qmth.scancentral.entity.OmrTaskEntity;
@@ -38,10 +14,33 @@ import cn.com.qmth.scancentral.service.OmrTaskService;
 import cn.com.qmth.scancentral.service.StudentPaperService;
 import cn.com.qmth.scancentral.service.SubjectService;
 import cn.com.qmth.scancentral.util.BatchSetDataUtil;
+import cn.com.qmth.scancentral.util.PageUtil;
 import cn.com.qmth.scancentral.vo.OmrConditionVo;
 import cn.com.qmth.scancentral.vo.OmrGroupUpdateVo;
 import cn.com.qmth.scancentral.vo.OmrGroupVo;
 import cn.com.qmth.scancentral.vo.omr.OmrGroupQuery;
+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.qmth.boot.core.collection.PageResult;
+import com.qmth.boot.core.concurrent.service.ConcurrentService;
+import com.qmth.boot.core.exception.ParameterException;
+import com.qmth.boot.core.exception.ReentrantException;
+import com.qmth.boot.core.exception.StatusException;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 @Service
 public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity> implements OmrGroupService {
@@ -124,63 +123,25 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         if (query.getExamId() == null) {
             throw new ParameterException("examId不能为空");
         }
-        if (StringUtils.isBlank(query.getSubjectCode())) {
-            throw new ParameterException("subjectCode不能为空");
-        }
 
-        SubjectEntity subject = subjectService.findByExamIdAndCode(query.getExamId(), query.getSubjectCode());
-        if (subject == null) {
-            throw new ParameterException("科目不存在");
-        }
+        IPage<OmrGroupVo> page = baseMapper.queryPage(new Page<>(query.getPageNumber(), query.getPageSize()), query);
+        for (OmrGroupVo omrGroup : page.getRecords()) {
+            omrGroup.setBuilding(
+                    !concurrentService.getSemaphore(LockType.OMR_GROUP_BUILD + "-" + omrGroup.getId()).isAvailable());
+            omrGroup.setDeleting(
+                    !concurrentService.getSemaphore(LockType.OMR_GROUP_DELETE + "-" + omrGroup.getId()).isAvailable());
+            omrGroup.setReseting(
+                    !concurrentService.getSemaphore(LockType.OMR_GROUP_RESET + "-" + omrGroup.getId()).isAvailable());
 
-        LambdaQueryWrapper<OmrGroupEntity> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(OmrGroupEntity::getExamId, query.getExamId());
-        wrapper.eq(OmrGroupEntity::getSubjectCode, query.getSubjectCode());
-        IPage<OmrGroupEntity> page = this.page(new Page<>(query.getPageNumber(), query.getPageSize()), wrapper);
-
-        List<OmrGroupVo> omrGroups = new ArrayList<>();
-        for (OmrGroupEntity omrGroup : page.getRecords()) {
-            OmrGroupVo groupVo = new OmrGroupVo();
-            groupVo.setId(omrGroup.getId());
-            groupVo.setSubjectCode(omrGroup.getSubjectCode());
-            groupVo.setSubjectName(subject.getName());
-
-            List<OmrConditionVo> conditions = new ArrayList<>();
-            if (CollectionUtils.isNotEmpty(omrGroup.getConditions())) {
-                for (OmrCondition c : omrGroup.getConditions()) {
-                    conditions.add(new OmrConditionVo(c));
-                }
-            }
-            groupVo.setConditions(conditions);
-
-            groupVo.setStage(omrGroup.getStage());
-            groupVo.setFixed(omrGroup.getFixed());
-
-            // groupVo.setBuilding(
-            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_BUILD + "-" + omrGroup.getId()).isAvailable());
-            // groupVo.setDeleting(
-            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_DELETE + "-" + omrGroup.getId()).isAvailable());
-            // groupVo.setReseting(
-            //         !concurrentService.getSemaphore(LockType.OMR_GROUP_RESET + "-" + omrGroup.getId()).isAvailable());
-
-            groupVo.setTotalCount(omrGroup.getTotalCount());
-            groupVo.setFinishCount(
+            omrGroup.setFinishCount(
                     taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.PROCESSED));
-            groupVo.setUnarbitrateCount(
+            omrGroup.setUnarbitrateCount(
                     taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.WAIT_ARBITRATE));
-            groupVo.setArbitratedCount(
+            omrGroup.setArbitratedCount(
                     taskService.getCountByGroupAndStatus(omrGroup.getId(), TaskStatus.ARBITRATED));
-            groupVo.setUpdateTime(omrGroup.getUpdateTime());
-            omrGroups.add(groupVo);
         }
 
-        PageResult<OmrGroupVo> result = new PageResult<>();
-        result.setResult(omrGroups);
-        result.setPageNumber(page.getCurrent());
-        result.setPageSize(page.getSize());
-        result.setTotalCount(page.getTotal());
-        result.setPageCount(page.getPages());
-        return result;
+        return PageUtil.of(page);
     }
 
     @Transactional
@@ -376,7 +337,7 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         }
 
         LambdaQueryWrapper<OmrGroupEntity> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(OmrGroupEntity::getExamId,examId);
+        wrapper.eq(OmrGroupEntity::getExamId, examId);
         wrapper.eq(OmrGroupEntity::getSubjectCode, subjectCode);
         List<OmrGroupEntity> list = this.list(wrapper);
         List<OmrGroupVo> omrGroups = new ArrayList<>();
@@ -401,4 +362,5 @@ public class OmrGroupServiceImpl extends ServiceImpl<OmrGroupDao, OmrGroupEntity
         }
         return omrGroups;
     }
+
 }

+ 29 - 10
src/main/resources/mapper/OmrGroupMapper.xml

@@ -1,16 +1,35 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.com.qmth.scancentral.dao.OmrGroupDao">
+    <resultMap id="queryPageMap" type="cn.com.qmth.scancentral.vo.OmrGroupVo">
+        <result column="conditions" property="conditions"
+                typeHandler="cn.com.qmth.scancentral.handle.OmrConditionVoListTypeHandler"/>
+    </resultMap>
+
     <update id="updateTotalCount">
         UPDATE sc_omr_group
-		SET total_count = (
-			SELECT
-				count(1)
-			FROM
-				sc_omr_task
-			WHERE
-				group_id =#{id}
-		)
-		WHERE id =#{id}
+        SET total_count = (SELECT count(1)
+                           FROM sc_omr_task
+                           WHERE group_id = #{id})
+        WHERE id = #{id}
     </update>
-</mapper>
+
+    <select id="queryPage" resultMap="queryPageMap">
+        SELECT
+        g.id,
+        g.subject_code,
+        sb.name as subject_name,
+        g.fixed,
+        g.stage,
+        g.conditions,
+        g.total_count,
+        g.update_time
+        FROM sc_omr_group g
+        INNER JOIN sc_subject sb ON sb.exam_id = g.exam_id AND sb.code = g.subject_code
+        WHERE g.exam_id = 1
+        <if test="query.subjectCode != null and query.subjectCode !=''">
+            AND g.subject_code = #{query.subjectCode}
+        </if>
+    </select>
+
+</mapper>