package cn.com.qmth.scancentral.service.impl; import cn.com.qmth.scancentral.bean.ImportSubjectDomain; import cn.com.qmth.scancentral.bean.SubjectConfigDomain; import cn.com.qmth.scancentral.bean.User; import cn.com.qmth.scancentral.dao.SubjectDao; import cn.com.qmth.scancentral.entity.SubjectEntity; import cn.com.qmth.scancentral.service.SubjectService; import cn.com.qmth.scancentral.vo.SubjectConfigVo; import cn.com.qmth.scancentral.vo.examinfo.SubjectConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; import com.qmth.boot.core.exception.ParameterException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; @Service public class SubjectServiceImpl extends MppServiceImpl implements SubjectService { @Transactional @Override public int cleanByExamId(Long examId) { QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lw = wrapper.lambda(); lw.eq(SubjectEntity::getExamId, examId); return this.baseMapper.delete(wrapper); } @Override public List listByExamId(Long examId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SubjectEntity::getExamId, examId); queryWrapper.lambda().orderByDesc(SubjectEntity::getCode); return this.list(queryWrapper); } @Override public SubjectEntity findByExamIdAndCode(Long examId, String code) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SubjectEntity::getExamId, examId); queryWrapper.lambda().eq(SubjectEntity::getCode, code); return this.getOne(queryWrapper); } @Override public int countByExamId(Long examId) { QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lw = wrapper.lambda(); lw.eq(SubjectEntity::getExamId, examId); return this.count(wrapper); } @Transactional @Override public int importSubject(List subjects) { Map> map = new HashMap>(); List list = this.list(); for (SubjectEntity subjectEntity : list) { Set set = map.get(subjectEntity.getExamId()); if (set == null) { set = new HashSet(); } set.add(subjectEntity.getCode()); map.put(subjectEntity.getExamId(), set); } List saveList = new ArrayList(); for (ImportSubjectDomain importSubjectDomain : subjects) { Set set = map.get(importSubjectDomain.getExamId()); if (set != null) { if (!set.contains(importSubjectDomain.getSubjectCode())) { SubjectEntity subjectEntity = new SubjectEntity(importSubjectDomain.getExamId(), importSubjectDomain.getSubjectCode(), importSubjectDomain.getSubjectName()); set.add(importSubjectDomain.getSubjectCode()); saveList.add(subjectEntity); } } else { set = new HashSet(); SubjectEntity subjectEntity = new SubjectEntity(importSubjectDomain.getExamId(), importSubjectDomain.getSubjectCode(), importSubjectDomain.getSubjectName()); set.add(importSubjectDomain.getSubjectCode()); saveList.add(subjectEntity); } map.put(importSubjectDomain.getExamId(), set); } this.saveOrUpdateBatchByMultiId(saveList); return saveList.size(); } @Transactional @Override public SubjectConfigVo config(User user, SubjectConfigDomain domain) { SubjectEntity s = this.findByExamIdAndCode(domain.getExamId(), domain.getSubjectCode()); if (s == null) { throw new ParameterException("找不到对应的科目"); } s.setPaperTypeBarcodeContent(domain.getPaperTypeBarcodeContent()); this.saveOrUpdateByMultiId(s); return new SubjectConfigVo(s); } @Override public List listConfigByExamId(Long examId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SubjectEntity::getExamId, examId); queryWrapper.lambda().isNotNull(SubjectEntity::getPaperTypeBarcodeContent); List list = this.list(queryWrapper); List result = new ArrayList(); for (SubjectEntity subjectEntity : list) { result.add(new SubjectConfig(subjectEntity)); } return result; } }