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.dao.DuplicateKeyException; 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.extension.service.impl.ServiceImpl; import cn.com.qmth.mps.bean.PaperDetailUnit; import cn.com.qmth.mps.dao.PaperDetailUnitDao; import cn.com.qmth.mps.entity.PaperDetailEntity; import cn.com.qmth.mps.entity.PaperDetailUnitEntity; import cn.com.qmth.mps.exception.DisruptedException; import cn.com.qmth.mps.service.PaperDetailUnitService; @Service public class PaperDetailUnitServiceImpl extends ServiceImpl implements PaperDetailUnitService { @Override public Map> getStructInfo(Long paperId) { List list = getStructUnitInfo(paperId); if (CollectionUtils.isEmpty(list)) { return null; } Map> ret = new HashMap<>(); for (PaperDetailUnitEntity e : list) { List 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(e.getScore()); vo.setScoreStep(e.getScoreStep()); tem.add(vo); } return ret; } private List getStructUnitInfo(Long paperId) { QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lw = wrapper.lambda(); lw.eq(PaperDetailUnitEntity::getPaperId, paperId); lw.orderByAsc(PaperDetailUnitEntity::getNumber); return this.list(wrapper); } @Override public Integer countByPaperId(Long paperId) { QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lw = wrapper.lambda(); lw.eq(PaperDetailUnitEntity::getPaperId, paperId); return this.count(wrapper); } @Transactional @Override public void clearByPaperId(Long paperId) { QueryWrapper wrapper = new QueryWrapper<>(); LambdaQueryWrapper lw = wrapper.lambda(); lw.eq(PaperDetailUnitEntity::getPaperId, paperId); this.remove(wrapper); } @Transactional @Override public void saveUnit(PaperDetailEntity detail, List units) { List ret = new ArrayList<>(); for (PaperDetailUnit u : units) { PaperDetailUnitEntity e = new PaperDetailUnitEntity(); e.setDetailId(detail.getId()); e.setDetailNumber(detail.getNumber()); e.setObjective(false); e.setNumber(u.getNumber()); e.setScore(u.getScore()); e.setScoreStep(u.getScoreStep()); e.setPaperId(detail.getPaperId()); ret.add(e); } try { this.saveBatch(ret); } catch (DuplicateKeyException e) { throw new DisruptedException("小题号有重复"); } } }