xiatian 2 éve
szülő
commit
02cbad8d18
22 módosított fájl, 334 hozzáadás és 148 törlés
  1. 3 5
      db/init.sql
  2. 5 5
      src/main/java/cn/com/qmth/mps/bean/PaperGroup.java
  3. 5 5
      src/main/java/cn/com/qmth/mps/bean/PaperGroupUnit.java
  4. 1 1
      src/main/java/cn/com/qmth/mps/controller/PaperController.java
  5. 10 0
      src/main/java/cn/com/qmth/mps/dao/PaperDetailDao.java
  6. 9 0
      src/main/java/cn/com/qmth/mps/dao/PaperDetailUnitDao.java
  7. 9 0
      src/main/java/cn/com/qmth/mps/dao/PaperGroupUnitDao.java
  8. 0 28
      src/main/java/cn/com/qmth/mps/entity/PaperEntity.java
  9. 12 5
      src/main/java/cn/com/qmth/mps/entity/PaperGroupUnitEntity.java
  10. 0 66
      src/main/java/cn/com/qmth/mps/handle/ListTypeHandler.java
  11. 0 16
      src/main/java/cn/com/qmth/mps/handle/PaperDetailHandler.java
  12. 0 16
      src/main/java/cn/com/qmth/mps/handle/PaperGroupHandler.java
  13. 16 0
      src/main/java/cn/com/qmth/mps/service/PaperDetailService.java
  14. 16 0
      src/main/java/cn/com/qmth/mps/service/PaperDetailUnitService.java
  15. 3 0
      src/main/java/cn/com/qmth/mps/service/PaperGroupService.java
  16. 14 0
      src/main/java/cn/com/qmth/mps/service/PaperGroupUnitService.java
  17. 3 0
      src/main/java/cn/com/qmth/mps/service/PaperService.java
  18. 60 0
      src/main/java/cn/com/qmth/mps/service/impl/PaperDetailServiceImpl.java
  19. 52 0
      src/main/java/cn/com/qmth/mps/service/impl/PaperDetailUnitServiceImpl.java
  20. 41 1
      src/main/java/cn/com/qmth/mps/service/impl/PaperGroupServiceImpl.java
  21. 51 0
      src/main/java/cn/com/qmth/mps/service/impl/PaperGroupUnitServiceImpl.java
  22. 24 0
      src/main/java/cn/com/qmth/mps/service/impl/PaperServiceImpl.java

+ 3 - 5
db/init.sql

@@ -70,11 +70,9 @@ CREATE TABLE `mps_paper` (
   `course_id` bigint NOT NULL,
   `exam_id` bigint NOT NULL,
   `group_finish` bit(1) NOT NULL,
-  `group_info` text COLLATE utf8_bin,
   `objective_score` double NOT NULL,
   `paper_type` varchar(255) COLLATE utf8_bin DEFAULT NULL,
   `school_id` bigint NOT NULL,
-  `struct_info` text COLLATE utf8_bin,
   `subjective_score` double NOT NULL,
   `total_score` double NOT NULL,
   PRIMARY KEY (`id`),
@@ -147,10 +145,10 @@ CREATE TABLE `mps_paper_group_unit` (
   `updater_id` bigint DEFAULT NULL,
   `group_id` bigint NOT NULL,
   `paper_id` bigint NOT NULL,
-  `unit_id` bigint NOT NULL,
+  `deatil_number` int NOT NULL,
+  `deatil_unit_number` int NOT NULL,
   PRIMARY KEY (`id`),
-  UNIQUE KEY `IDX_PAPER_GROUP_UNIT_01` (`paper_id`,`group_id`,`unit_id`),
-  UNIQUE KEY `IDX_PAPER_GROUP_UNIT_02` (`unit_id`)
+  UNIQUE KEY `IDX_PAPER_GROUP_UNIT_01` (`paper_id`,`group_id`,`deatil_number`,`deatil_unit_number`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
 
 -- ----------------------------

+ 5 - 5
src/main/java/cn/com/qmth/mps/bean/PaperGroup.java

@@ -8,18 +8,18 @@ public class PaperGroup {
 	@ApiModelProperty("分组序号")
 	private Integer number;
 	@ApiModelProperty("分组信息")
-	private List<PaperGroupUnit> groupUnit;
+	private List<PaperGroupUnit> groupUnits;
 	public Integer getNumber() {
 		return number;
 	}
 	public void setNumber(Integer number) {
 		this.number = number;
 	}
-	public List<PaperGroupUnit> getGroupUnit() {
-		return groupUnit;
+	public List<PaperGroupUnit> getGroupUnits() {
+		return groupUnits;
 	}
-	public void setGroupUnit(List<PaperGroupUnit> groupUnit) {
-		this.groupUnit = groupUnit;
+	public void setGroupUnits(List<PaperGroupUnit> groupUnits) {
+		this.groupUnits = groupUnits;
 	}
 	
 }

+ 5 - 5
src/main/java/cn/com/qmth/mps/bean/PaperGroupUnit.java

@@ -6,18 +6,18 @@ public class PaperGroupUnit {
 	@ApiModelProperty("大题号")
 	private Integer deatailNumber;
 	@ApiModelProperty("小题号")
-	private Integer unitNumber;
+	private Integer detailUnitNumber;
 	public Integer getDeatailNumber() {
 		return deatailNumber;
 	}
 	public void setDeatailNumber(Integer deatailNumber) {
 		this.deatailNumber = deatailNumber;
 	}
-	public Integer getUnitNumber() {
-		return unitNumber;
+	public Integer getDetailUnitNumber() {
+		return detailUnitNumber;
 	}
-	public void setUnitNumber(Integer unitNumber) {
-		this.unitNumber = unitNumber;
+	public void setDetailUnitNumber(Integer detailUnitNumber) {
+		this.detailUnitNumber = detailUnitNumber;
 	}
 
 	

+ 1 - 1
src/main/java/cn/com/qmth/mps/controller/PaperController.java

@@ -92,7 +92,7 @@ public class PaperController extends BaseController {
 	@ApiOperation(value = "获取信息")
 	@RequestMapping(value = "info", method = RequestMethod.POST)
 	public PaperInfoVo info(@RequestParam Long id) {
-		return null;
+		return paperService.info(id, getAccessUser());
 	}
 
 	@ApiOperation(value = "试卷结构提交")

+ 10 - 0
src/main/java/cn/com/qmth/mps/dao/PaperDetailDao.java

@@ -0,0 +1,10 @@
+package cn.com.qmth.mps.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import cn.com.qmth.mps.entity.PaperDetailEntity;
+
+public interface PaperDetailDao extends BaseMapper<PaperDetailEntity> {
+
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/mps/dao/PaperDetailUnitDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.mps.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
+
+public interface PaperDetailUnitDao extends BaseMapper<PaperDetailUnitEntity> {
+
+}

+ 9 - 0
src/main/java/cn/com/qmth/mps/dao/PaperGroupUnitDao.java

@@ -0,0 +1,9 @@
+package cn.com.qmth.mps.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import cn.com.qmth.mps.entity.PaperGroupUnitEntity;
+
+public interface PaperGroupUnitDao extends BaseMapper<PaperGroupUnitEntity> {
+
+}

+ 0 - 28
src/main/java/cn/com/qmth/mps/entity/PaperEntity.java

@@ -1,15 +1,8 @@
 package cn.com.qmth.mps.entity;
 
-import java.util.List;
-
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 
-import cn.com.qmth.mps.bean.PaperDetail;
-import cn.com.qmth.mps.bean.PaperGroup;
 import cn.com.qmth.mps.entity.base.AuditingEntity;
-import cn.com.qmth.mps.handle.PaperDetailHandler;
-import cn.com.qmth.mps.handle.PaperGroupHandler;
 
 @TableName(value="mps_paper",autoResultMap = true)
 public class PaperEntity extends AuditingEntity {
@@ -25,11 +18,6 @@ public class PaperEntity extends AuditingEntity {
 
 	private Double subjectiveScore;
 	
-	@TableField(value = "struct_info", typeHandler = PaperDetailHandler.class)
-	private List<PaperDetail> structInfo;
-	@TableField(value = "group_info", typeHandler = PaperGroupHandler.class)
-	private List<PaperGroup> groupInfo;
-
 	private String paperType;
 	
 	private Boolean groupFinish;
@@ -83,22 +71,6 @@ public class PaperEntity extends AuditingEntity {
 	}
 
 
-	public List<PaperDetail> getStructInfo() {
-		return structInfo;
-	}
-
-	public void setStructInfo(List<PaperDetail> structInfo) {
-		this.structInfo = structInfo;
-	}
-
-	public List<PaperGroup> getGroupInfo() {
-		return groupInfo;
-	}
-
-	public void setGroupInfo(List<PaperGroup> groupInfo) {
-		this.groupInfo = groupInfo;
-	}
-
 	public String getPaperType() {
 		return paperType;
 	}

+ 12 - 5
src/main/java/cn/com/qmth/mps/entity/PaperGroupUnitEntity.java

@@ -12,7 +12,8 @@ public class PaperGroupUnitEntity extends AuditingEntity{
 	private static final long serialVersionUID = 5657687276637032291L;
 	private Long paperId;
 	private Long groupId;
-	private Long unitId;
+	private Integer detailNumber;
+	private Integer detailUnitNumber;
 	public Long getPaperId() {
 		return paperId;
 	}
@@ -25,11 +26,17 @@ public class PaperGroupUnitEntity extends AuditingEntity{
 	public void setGroupId(Long groupId) {
 		this.groupId = groupId;
 	}
-	public Long getUnitId() {
-		return unitId;
+	public Integer getDetailNumber() {
+		return detailNumber;
 	}
-	public void setUnitId(Long unitId) {
-		this.unitId = unitId;
+	public void setDetailNumber(Integer detailNumber) {
+		this.detailNumber = detailNumber;
+	}
+	public Integer getDetailUnitNumber() {
+		return detailUnitNumber;
+	}
+	public void setDetailUnitNumber(Integer detailUnitNumber) {
+		this.detailUnitNumber = detailUnitNumber;
 	}
 
 	

+ 0 - 66
src/main/java/cn/com/qmth/mps/handle/ListTypeHandler.java

@@ -1,66 +0,0 @@
-package cn.com.qmth.mps.handle;
-
-import java.sql.CallableStatement;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.List;
-
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.ibatis.type.BaseTypeHandler;
-import org.apache.ibatis.type.JdbcType;
-import org.apache.ibatis.type.MappedJdbcTypes;
-import org.apache.ibatis.type.MappedTypes;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.github.xiaoymin.knife4j.core.util.StrUtil;
-import com.qmth.boot.core.exception.StatusException;
-
-@MappedJdbcTypes(JdbcType.VARCHAR)
-@MappedTypes({List.class})
-public abstract class ListTypeHandler<T> extends BaseTypeHandler<List<T>> {
-	protected ObjectMapper mapper = new ObjectMapper();
-    @Override
-    public void setNonNullParameter(PreparedStatement ps, int i, List<T> parameter, JdbcType jdbcType) throws SQLException {
-		try {
-			String content = CollectionUtils.isEmpty(parameter) ? null : mapper.writeValueAsString(parameter);
-			ps.setString(i, content);
-		} catch (Exception e) {
-			throw new StatusException("出错",e);
-		}
-    }
- 
-    @Override
-    public List<T> getNullableResult(ResultSet rs, String columnName) throws SQLException {
-        return this.getListByJsonArrayString(rs.getString(columnName));
-    }
- 
-    @Override
-    public List<T> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
-        return this.getListByJsonArrayString(rs.getString(columnIndex));
-    }
- 
-    @Override
-    public List<T> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
-        return this.getListByJsonArrayString(cs.getString(columnIndex));
-    }
- 
- 
-    private List<T> getListByJsonArrayString(String content) {
-        try {
-			return StrUtil.isBlank(content) ? null : mapper.readValue(content,specificType());
-		} catch (Exception e) {
-			throw new StatusException("出错",e);
-		}
-    }
- 
-    /**
-     * 具体类型,由子类提供
-     *
-     * @return 具体类型
-     */
-    protected abstract JavaType specificType();
- 
- 
-}

+ 0 - 16
src/main/java/cn/com/qmth/mps/handle/PaperDetailHandler.java

@@ -1,16 +0,0 @@
-package cn.com.qmth.mps.handle;
-
-import java.util.List;
-
-import com.fasterxml.jackson.databind.JavaType;
-
-import cn.com.qmth.mps.bean.PaperDetail;
-
-public class PaperDetailHandler extends ListTypeHandler<PaperDetail> {
-
-    @Override
-    protected JavaType specificType() {
-        return super.mapper.getTypeFactory().constructParametricType(List.class, PaperDetail.class);
-    }
-
-}

+ 0 - 16
src/main/java/cn/com/qmth/mps/handle/PaperGroupHandler.java

@@ -1,16 +0,0 @@
-package cn.com.qmth.mps.handle;
-
-import java.util.List;
-
-import com.fasterxml.jackson.databind.JavaType;
-
-import cn.com.qmth.mps.bean.PaperGroup;
-
-public class PaperGroupHandler extends ListTypeHandler<PaperGroup> {
-
-    @Override
-    protected JavaType specificType() {
-        return super.mapper.getTypeFactory().constructParametricType(List.class, PaperGroup.class);
-    }
-
-}

+ 16 - 0
src/main/java/cn/com/qmth/mps/service/PaperDetailService.java

@@ -0,0 +1,16 @@
+package cn.com.qmth.mps.service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import cn.com.qmth.mps.bean.PaperDetail;
+import cn.com.qmth.mps.entity.PaperDetailEntity;
+
+public interface PaperDetailService  extends IService<PaperDetailEntity> {
+
+	List<PaperDetail> getStructInfo(Long id);
+
+
+
+}

+ 16 - 0
src/main/java/cn/com/qmth/mps/service/PaperDetailUnitService.java

@@ -0,0 +1,16 @@
+package cn.com.qmth.mps.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import cn.com.qmth.mps.bean.PaperDetailUnit;
+import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
+
+public interface PaperDetailUnitService  extends IService<PaperDetailUnitEntity> {
+
+	Map<Long, List<PaperDetailUnit>> getStructInfo(Long paperId);
+
+
+}

+ 3 - 0
src/main/java/cn/com/qmth/mps/service/PaperGroupService.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import cn.com.qmth.mps.bean.PaperGroup;
 import cn.com.qmth.mps.entity.PaperGroupEntity;
 import cn.com.qmth.mps.vo.paper.GroupCountVo;
 
@@ -13,4 +14,6 @@ public interface PaperGroupService  extends IService<PaperGroupEntity> {
 
 	List<GroupCountVo> findGroupCount(@Param(value = "paperIds")List<Long> paperIds);
 
+	List<PaperGroup> getGroupInfo(Long paperId);
+
 }

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

@@ -0,0 +1,14 @@
+package cn.com.qmth.mps.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import cn.com.qmth.mps.bean.PaperGroupUnit;
+import cn.com.qmth.mps.entity.PaperGroupUnitEntity;
+
+public interface PaperGroupUnitService  extends IService<PaperGroupUnitEntity> {
+
+	Map<Long, List<PaperGroupUnit>> getGroupInfo(Long paperId);
+}

+ 3 - 0
src/main/java/cn/com/qmth/mps/service/PaperService.java

@@ -10,6 +10,7 @@ import com.qmth.boot.core.collection.PageResult;
 import cn.com.qmth.mps.bean.User;
 import cn.com.qmth.mps.entity.PaperEntity;
 import cn.com.qmth.mps.vo.exam.ExamPaperCountVo;
+import cn.com.qmth.mps.vo.paper.PaperInfoVo;
 import cn.com.qmth.mps.vo.paper.PaperQuery;
 import cn.com.qmth.mps.vo.paper.PaperVo;
 
@@ -25,4 +26,6 @@ public interface PaperService  extends IService<PaperEntity> {
 
 	List<PaperVo> list(Long examId, User accessUser);
 
+	PaperInfoVo info(Long id, User accessUser);
+
 }

+ 60 - 0
src/main/java/cn/com/qmth/mps/service/impl/PaperDetailServiceImpl.java

@@ -0,0 +1,60 @@
+package cn.com.qmth.mps.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import cn.com.qmth.mps.bean.PaperDetail;
+import cn.com.qmth.mps.bean.PaperDetailUnit;
+import cn.com.qmth.mps.dao.PaperDetailDao;
+import cn.com.qmth.mps.entity.PaperDetailEntity;
+import cn.com.qmth.mps.service.PaperDetailService;
+import cn.com.qmth.mps.service.PaperDetailUnitService;
+
+@Service
+public class PaperDetailServiceImpl extends ServiceImpl<PaperDetailDao, PaperDetailEntity>
+		implements PaperDetailService {
+	@Autowired
+	private PaperDetailUnitService paperDetailUnitService;
+
+	@Override
+	public List<PaperDetail> getStructInfo(Long paperId) {
+		List<PaperDetail> ret = new ArrayList<>();
+		List<PaperDetailEntity> es = getByPaperId(paperId);
+		if (CollectionUtils.isEmpty(es)) {
+			return ret;
+		}
+		Map<Long,PaperDetail> map=new HashMap<>();
+		for(PaperDetailEntity e:es) {
+			PaperDetail vo=new PaperDetail();
+			vo.setName(e.getName());
+			vo.setNumber(e.getNumber());
+			map.put(e.getId(), vo);
+			ret.add(vo);
+		}
+		Map<Long,List<PaperDetailUnit>> units=paperDetailUnitService.getStructInfo(paperId);
+		if (units==null||units.size()==0) {
+			return ret;
+		}
+		for(Long key:units.keySet()) {
+			map.get(key).setUnits(units.get(key));
+		}
+		return ret;
+	}
+
+	private List<PaperDetailEntity> getByPaperId(Long paperId) {
+		QueryWrapper<PaperDetailEntity> wrapper = new QueryWrapper<>();
+		LambdaQueryWrapper<PaperDetailEntity> lw = wrapper.lambda();
+		lw.eq(PaperDetailEntity::getPaperId, paperId);
+		return this.list(wrapper);
+	}
+}

+ 52 - 0
src/main/java/cn/com/qmth/mps/service/impl/PaperDetailUnitServiceImpl.java

@@ -0,0 +1,52 @@
+package cn.com.qmth.mps.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import cn.com.qmth.mps.bean.PaperDetailUnit;
+import cn.com.qmth.mps.dao.PaperDetailUnitDao;
+import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
+import cn.com.qmth.mps.service.PaperDetailUnitService;
+
+@Service
+public class PaperDetailUnitServiceImpl extends ServiceImpl<PaperDetailUnitDao, PaperDetailUnitEntity> implements PaperDetailUnitService {
+
+	@Override
+	public Map<Long, List<PaperDetailUnit>> getStructInfo(Long paperId) {
+		List<PaperDetailUnitEntity> list=getStructUnitInfo(paperId);
+		if(CollectionUtils.isEmpty(list)) {
+			return null;
+		}
+		Map<Long, List<PaperDetailUnit>> ret=new HashMap<>();
+		for(PaperDetailUnitEntity e:list) {
+			List<PaperDetailUnit> tem=ret.get(e.getDetailId());
+			if(tem==null) {
+				tem=new ArrayList<>();
+				ret.put(e.getDetailId(), tem);
+			}
+			PaperDetailUnit vo=new PaperDetailUnit();
+			vo.setNumber(e.getNumber());
+			vo.setScore(vo.getScore());
+			vo.setScoreStep(e.getScoreStep());
+			tem.add(vo);
+		}
+		return ret;
+	}
+
+	private List<PaperDetailUnitEntity> getStructUnitInfo(Long paperId) {
+		QueryWrapper<PaperDetailUnitEntity> wrapper = new QueryWrapper<>();
+		LambdaQueryWrapper<PaperDetailUnitEntity> lw = wrapper.lambda();
+		lw.eq(PaperDetailUnitEntity::getPaperId, paperId);
+		lw.orderByAsc(PaperDetailUnitEntity::getNumber);
+		return this.list(wrapper);
+	}
+}

+ 41 - 1
src/main/java/cn/com/qmth/mps/service/impl/PaperGroupServiceImpl.java

@@ -1,23 +1,63 @@
 package cn.com.qmth.mps.service.impl;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import cn.com.qmth.mps.bean.PaperGroup;
+import cn.com.qmth.mps.bean.PaperGroupUnit;
 import cn.com.qmth.mps.dao.PaperGroupDao;
 import cn.com.qmth.mps.entity.PaperGroupEntity;
 import cn.com.qmth.mps.service.PaperGroupService;
+import cn.com.qmth.mps.service.PaperGroupUnitService;
 import cn.com.qmth.mps.vo.paper.GroupCountVo;
 
 @Service
 public class PaperGroupServiceImpl extends ServiceImpl<PaperGroupDao, PaperGroupEntity> implements PaperGroupService {
-
+	@Autowired
+	private PaperGroupUnitService paperGroupUnitService;
 	@Override
 	public List<GroupCountVo> findGroupCount(List<Long> paperIds) {
 		return this.baseMapper.findGroupCount(paperIds);
 	}
 
+	@Override
+	public List<PaperGroup> getGroupInfo(Long paperId) {
+		List<PaperGroup> ret = new ArrayList<>();
+		List<PaperGroupEntity> es = getByPaperId(paperId);
+		if (CollectionUtils.isEmpty(es)) {
+			return ret;
+		}
+		Map<Long,PaperGroup> map=new HashMap<>();
+		for(PaperGroupEntity e:es) {
+			PaperGroup vo=new PaperGroup();
+			vo.setNumber(e.getNumber());
+			map.put(e.getId(), vo);
+			ret.add(vo);
+		}
+		Map<Long,List<PaperGroupUnit>> units=paperGroupUnitService.getGroupInfo(paperId);
+		if (units==null||units.size()==0) {
+			return ret;
+		}
+		for(Long key:units.keySet()) {
+			map.get(key).setGroupUnits(units.get(key));
+		}
+		return ret;
+	}
+	private List<PaperGroupEntity> getByPaperId(Long paperId) {
+		QueryWrapper<PaperGroupEntity> wrapper = new QueryWrapper<>();
+		LambdaQueryWrapper<PaperGroupEntity> lw = wrapper.lambda();
+		lw.eq(PaperGroupEntity::getPaperId, paperId);
+		return this.list(wrapper);
+	}
 
 }

+ 51 - 0
src/main/java/cn/com/qmth/mps/service/impl/PaperGroupUnitServiceImpl.java

@@ -0,0 +1,51 @@
+package cn.com.qmth.mps.service.impl;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+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.PaperGroupUnitEntity;
+import cn.com.qmth.mps.service.PaperGroupUnitService;
+
+@Service
+public class PaperGroupUnitServiceImpl extends ServiceImpl<PaperGroupUnitDao, PaperGroupUnitEntity> implements PaperGroupUnitService {
+
+	@Override
+	public Map<Long, List<PaperGroupUnit>> getGroupInfo(Long paperId) {
+		List<PaperGroupUnitEntity> list=getStructUnitInfo(paperId);
+		if(CollectionUtils.isEmpty(list)) {
+			return null;
+		}
+		Map<Long, List<PaperGroupUnit>> ret=new HashMap<>();
+		for(PaperGroupUnitEntity e:list) {
+			List<PaperGroupUnit> tem=ret.get(e.getGroupId());
+			if(tem==null) {
+				tem=new ArrayList<>();
+				ret.put(e.getGroupId(), tem);
+			}
+			PaperGroupUnit vo=new PaperGroupUnit();
+			vo.setDeatailNumber(e.getDetailNumber());
+			vo.setDetailUnitNumber(e.getDetailUnitNumber());
+			tem.add(vo);
+		}
+		return ret;
+	}
+	private List<PaperGroupUnitEntity> getStructUnitInfo(Long paperId) {
+		QueryWrapper<PaperGroupUnitEntity> wrapper = new QueryWrapper<>();
+		LambdaQueryWrapper<PaperGroupUnitEntity> lw = wrapper.lambda();
+		lw.eq(PaperGroupUnitEntity::getPaperId, paperId);
+		lw.orderByAsc(PaperGroupUnitEntity::getDetailUnitNumber);
+		return this.list(wrapper);
+	}
+
+}

+ 24 - 0
src/main/java/cn/com/qmth/mps/service/impl/PaperServiceImpl.java

@@ -10,6 +10,7 @@ import java.util.stream.Collectors;
 
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.dao.DuplicateKeyException;
 import org.springframework.stereotype.Service;
@@ -36,12 +37,14 @@ import cn.com.qmth.mps.entity.PaperEntity;
 import cn.com.qmth.mps.enums.Role;
 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.PageUtil;
 import cn.com.qmth.mps.vo.exam.ExamPaperCountVo;
 import cn.com.qmth.mps.vo.paper.GroupCountVo;
+import cn.com.qmth.mps.vo.paper.PaperInfoVo;
 import cn.com.qmth.mps.vo.paper.PaperQuery;
 import cn.com.qmth.mps.vo.paper.PaperVo;
 
@@ -55,6 +58,8 @@ public class PaperServiceImpl extends ServiceImpl<PaperDao, PaperEntity> impleme
 	private CourseService courseService;
 	@Autowired
 	private PaperGroupService paperGroupService;
+	@Autowired
+	private PaperDetailService paperDetailService;
 	
 	@Transactional
 	@Override
@@ -214,6 +219,25 @@ public class PaperServiceImpl extends ServiceImpl<PaperDao, PaperEntity> impleme
 		return this.baseMapper.list(examId);
 	}
 
+	@Override
+	public PaperInfoVo info(Long id, User user) {
+		PaperEntity paper=this.getById(id);
+		if(paper==null) {
+			throw new StatusException("未找到试卷结构信息");
+		}
+		if (!user.getRole().equals(Role.SUPER_ADMIN) && !user.getSchoolId().equals(paper.getSchoolId())) {
+			throw new StatusException("没有权限");
+		}
+		PaperInfoVo  vo=new PaperInfoVo();
+		BeanUtils.copyProperties(paper, vo);
+		CourseEntity course=courseService.getById(vo.getCourseId());
+		vo.setCourseCode(course.getCode());
+		vo.setCourseName(course.getName());
+		vo.setStructInfo(paperDetailService.getStructInfo(vo.getId()));
+		vo.setGroupInfo(paperGroupService.getGroupInfo(vo.getId()));
+		return vo;
+	}
+
 
 
 }