PaperDetailUnitServiceImpl.java 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package cn.com.qmth.mps.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import org.apache.commons.collections4.CollectionUtils;
  7. import org.springframework.dao.DuplicateKeyException;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  12. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  13. import cn.com.qmth.mps.bean.PaperDetailUnit;
  14. import cn.com.qmth.mps.dao.PaperDetailUnitDao;
  15. import cn.com.qmth.mps.entity.PaperDetailEntity;
  16. import cn.com.qmth.mps.entity.PaperDetailUnitEntity;
  17. import cn.com.qmth.mps.exception.DisruptedException;
  18. import cn.com.qmth.mps.service.PaperDetailUnitService;
  19. @Service
  20. public class PaperDetailUnitServiceImpl extends ServiceImpl<PaperDetailUnitDao, PaperDetailUnitEntity>
  21. implements PaperDetailUnitService {
  22. @Override
  23. public Map<Long, List<PaperDetailUnit>> getStructInfo(Long paperId) {
  24. List<PaperDetailUnitEntity> list = getStructUnitInfo(paperId);
  25. if (CollectionUtils.isEmpty(list)) {
  26. return null;
  27. }
  28. Map<Long, List<PaperDetailUnit>> ret = new HashMap<>();
  29. for (PaperDetailUnitEntity e : list) {
  30. List<PaperDetailUnit> tem = ret.get(e.getDetailId());
  31. if (tem == null) {
  32. tem = new ArrayList<>();
  33. ret.put(e.getDetailId(), tem);
  34. }
  35. PaperDetailUnit vo = new PaperDetailUnit();
  36. vo.setNumber(e.getNumber());
  37. vo.setScore(e.getScore());
  38. vo.setScoreStep(e.getScoreStep());
  39. tem.add(vo);
  40. }
  41. return ret;
  42. }
  43. private List<PaperDetailUnitEntity> getStructUnitInfo(Long paperId) {
  44. QueryWrapper<PaperDetailUnitEntity> wrapper = new QueryWrapper<>();
  45. LambdaQueryWrapper<PaperDetailUnitEntity> lw = wrapper.lambda();
  46. lw.eq(PaperDetailUnitEntity::getPaperId, paperId);
  47. lw.orderByAsc(PaperDetailUnitEntity::getNumber);
  48. return this.list(wrapper);
  49. }
  50. @Override
  51. public Integer countByPaperId(Long paperId) {
  52. QueryWrapper<PaperDetailUnitEntity> wrapper = new QueryWrapper<>();
  53. LambdaQueryWrapper<PaperDetailUnitEntity> lw = wrapper.lambda();
  54. lw.eq(PaperDetailUnitEntity::getPaperId, paperId);
  55. return this.count(wrapper);
  56. }
  57. @Transactional
  58. @Override
  59. public void clearByPaperId(Long paperId) {
  60. QueryWrapper<PaperDetailUnitEntity> wrapper = new QueryWrapper<>();
  61. LambdaQueryWrapper<PaperDetailUnitEntity> lw = wrapper.lambda();
  62. lw.eq(PaperDetailUnitEntity::getPaperId, paperId);
  63. this.remove(wrapper);
  64. }
  65. @Transactional
  66. @Override
  67. public void saveUnit(PaperDetailEntity detail, List<PaperDetailUnit> units) {
  68. List<PaperDetailUnitEntity> ret = new ArrayList<>();
  69. for (PaperDetailUnit u : units) {
  70. PaperDetailUnitEntity e = new PaperDetailUnitEntity();
  71. e.setDetailId(detail.getId());
  72. e.setDetailNumber(detail.getNumber());
  73. e.setObjective(false);
  74. e.setNumber(u.getNumber());
  75. e.setScore(u.getScore());
  76. e.setScoreStep(u.getScoreStep());
  77. e.setPaperId(detail.getPaperId());
  78. ret.add(e);
  79. }
  80. try {
  81. this.saveBatch(ret);
  82. } catch (DuplicateKeyException e) {
  83. throw new DisruptedException("小题号有重复");
  84. }
  85. }
  86. }