SubjectServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package cn.com.qmth.scancentral.service.impl;
  2. import cn.com.qmth.scancentral.bean.ImportSubjectDomain;
  3. import cn.com.qmth.scancentral.bean.SubjectConfigDomain;
  4. import cn.com.qmth.scancentral.bean.User;
  5. import cn.com.qmth.scancentral.dao.SubjectDao;
  6. import cn.com.qmth.scancentral.entity.SubjectEntity;
  7. import cn.com.qmth.scancentral.service.SubjectService;
  8. import cn.com.qmth.scancentral.vo.SubjectConfigVo;
  9. import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig;
  10. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  11. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  12. import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
  13. import com.qmth.boot.core.exception.ParameterException;
  14. import org.springframework.stereotype.Service;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import java.util.*;
  17. @Service
  18. public class SubjectServiceImpl extends MppServiceImpl<SubjectDao, SubjectEntity> implements SubjectService {
  19. @Transactional
  20. @Override
  21. public int cleanByExamId(Long examId) {
  22. QueryWrapper<SubjectEntity> wrapper = new QueryWrapper<>();
  23. LambdaQueryWrapper<SubjectEntity> lw = wrapper.lambda();
  24. lw.eq(SubjectEntity::getExamId, examId);
  25. return this.baseMapper.delete(wrapper);
  26. }
  27. @Override
  28. public List<SubjectEntity> listByExamId(Long examId) {
  29. QueryWrapper<SubjectEntity> queryWrapper = new QueryWrapper<>();
  30. queryWrapper.lambda().eq(SubjectEntity::getExamId, examId);
  31. queryWrapper.lambda().orderByDesc(SubjectEntity::getCode);
  32. return this.list(queryWrapper);
  33. }
  34. @Override
  35. public SubjectEntity findByExamIdAndCode(Long examId, String code) {
  36. QueryWrapper<SubjectEntity> queryWrapper = new QueryWrapper<>();
  37. queryWrapper.lambda().eq(SubjectEntity::getExamId, examId);
  38. queryWrapper.lambda().eq(SubjectEntity::getCode, code);
  39. return this.getOne(queryWrapper);
  40. }
  41. @Override
  42. public int countByExamId(Long examId) {
  43. QueryWrapper<SubjectEntity> wrapper = new QueryWrapper<>();
  44. LambdaQueryWrapper<SubjectEntity> lw = wrapper.lambda();
  45. lw.eq(SubjectEntity::getExamId, examId);
  46. return this.count(wrapper);
  47. }
  48. @Transactional
  49. @Override
  50. public int importSubject(List<ImportSubjectDomain> subjects) {
  51. Map<Long, Set<String>> map = new HashMap<Long, Set<String>>();
  52. List<SubjectEntity> list = this.list();
  53. for (SubjectEntity subjectEntity : list) {
  54. Set<String> set = map.get(subjectEntity.getExamId());
  55. if (set == null) {
  56. set = new HashSet<String>();
  57. }
  58. set.add(subjectEntity.getCode());
  59. map.put(subjectEntity.getExamId(), set);
  60. }
  61. List<SubjectEntity> saveList = new ArrayList<SubjectEntity>();
  62. for (ImportSubjectDomain importSubjectDomain : subjects) {
  63. Set<String> set = map.get(importSubjectDomain.getExamId());
  64. if (set != null) {
  65. if (!set.contains(importSubjectDomain.getSubjectCode())) {
  66. SubjectEntity subjectEntity = new SubjectEntity(importSubjectDomain.getExamId(),
  67. importSubjectDomain.getSubjectCode(), importSubjectDomain.getSubjectName());
  68. set.add(importSubjectDomain.getSubjectCode());
  69. saveList.add(subjectEntity);
  70. }
  71. } else {
  72. set = new HashSet<String>();
  73. SubjectEntity subjectEntity = new SubjectEntity(importSubjectDomain.getExamId(),
  74. importSubjectDomain.getSubjectCode(), importSubjectDomain.getSubjectName());
  75. set.add(importSubjectDomain.getSubjectCode());
  76. saveList.add(subjectEntity);
  77. }
  78. map.put(importSubjectDomain.getExamId(), set);
  79. }
  80. this.saveOrUpdateBatchByMultiId(saveList);
  81. return saveList.size();
  82. }
  83. @Transactional
  84. @Override
  85. public SubjectConfigVo config(User user, SubjectConfigDomain domain) {
  86. SubjectEntity s = this.findByExamIdAndCode(domain.getExamId(), domain.getSubjectCode());
  87. if (s == null) {
  88. throw new ParameterException("找不到对应的科目");
  89. }
  90. s.setPaperTypeBarcodeContent(domain.getPaperTypeBarcodeContent());
  91. this.saveOrUpdateByMultiId(s);
  92. return new SubjectConfigVo(s);
  93. }
  94. @Override
  95. public List<SubjectConfig> listConfigByExamId(Long examId) {
  96. QueryWrapper<SubjectEntity> queryWrapper = new QueryWrapper<>();
  97. queryWrapper.lambda().eq(SubjectEntity::getExamId, examId);
  98. queryWrapper.lambda().isNotNull(SubjectEntity::getPaperTypeBarcodeContent);
  99. List<SubjectEntity> list = this.list(queryWrapper);
  100. List<SubjectConfig> result = new ArrayList<SubjectConfig>();
  101. for (SubjectEntity subjectEntity : list) {
  102. result.add(new SubjectConfig(subjectEntity));
  103. }
  104. return result;
  105. }
  106. }