package com.ssj.service.vacation.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ssj.api.domain.vo.vacation.*; import com.ssj.bean.vacation.SumPrevMaterial; import com.ssj.bean.vacation.SumPrevMaterialUnit; import com.ssj.bean.vacation.SumRevMaterial; import com.ssj.framework.basic.config.bean.VersionConfig; import com.ssj.framework.core.util.SystemResourceLocator; import com.ssj.mapper.vacation.PrevMaterialMapper; import com.ssj.mapper.vacation.PrevMaterialUnitMapper; import com.ssj.mapper.vacation.RevMaterialMapper; import com.ssj.mapper.vacation.SummerVacationMapper; import com.ssj.service.vacation.ISummerVacationService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; /** * @author sh * @className SummerVacationServiceImpl * @description 暑假大作战业务实现 * @date 2022/6/14 */ @Service @Slf4j public class SummerVacationServiceImpl implements ISummerVacationService { @Resource private SummerVacationMapper summerVacationMapper; @Resource private PrevMaterialMapper prevMaterialMapper; @Resource private PrevMaterialUnitMapper prevMaterialUnitMapper; @Resource private RevMaterialMapper revMaterialMapper; @Override public Page getPrevPage(VersionVo param) { return summerVacationMapper.getPrevPage(param.toPage(),param); } @Override public List getUnitList(String id) { return summerVacationMapper.getUnitList(id); } @Override public void editPreMaterialVersion(VersionVo param) { if(param.getId()== null || "".equals(param.getId())){ SumPrevMaterial sumPrevMaterial = new SumPrevMaterial(); sumPrevMaterial.setGrade(param.getGrade()); sumPrevMaterial.setSemester(param.getSemester()); sumPrevMaterial.setMaterialLink(param.getMaterialLink()); sumPrevMaterial.setVersionType(param.getVersionType()); sumPrevMaterial.setSubject(param.getSubject()); sumPrevMaterial.setVersionName(getVersionNameByType(param.getVersionType(),param.getSubject())); sumPrevMaterial.setCreateTime(new Date()); prevMaterialMapper.insert(sumPrevMaterial); }else{ SumPrevMaterial sumPrevMaterial = prevMaterialMapper.selectById(param.getId()); if(StringUtils.isNotEmpty(param.getGrade())){ sumPrevMaterial.setGrade(param.getGrade()); } if(param.getSemester()>0) { sumPrevMaterial.setSemester(param.getSemester()); } if(StringUtils.isNotEmpty(param.getMaterialLink())) { sumPrevMaterial.setMaterialLink(param.getMaterialLink()); } if(StringUtils.isNotEmpty(param.getSubject())) { sumPrevMaterial.setSubject(param.getSubject()); } if(param.getVersionType()>0){ sumPrevMaterial.setVersionType(param.getVersionType()); sumPrevMaterial.setVersionName(getVersionNameByType(param.getVersionType(),param.getSubject())); } sumPrevMaterial.setCreateTime(new Date()); prevMaterialMapper.updateById(sumPrevMaterial); } } @Override public void delPreMaterialVersion(VersionVo param) { if(param.getId()!= null && !"".equals(param.getId())){ prevMaterialMapper.deleteById(param.getId()); //删除子表信息 prevMaterialUnitMapper.delete(new QueryWrapper() .eq("parent_id",param.getId())); } } @Override public void delPreMaterialUnitVersion(VersionVo param) { if(param.getId()!= null && !"".equals(param.getId())){ SumPrevMaterialUnit sumPrevMaterial = prevMaterialUnitMapper.selectById(param.getId()); prevMaterialUnitMapper.delete(new QueryWrapper() .eq("parent_id",sumPrevMaterial.getParentId()) .eq("unit_id",sumPrevMaterial.getUnitId())); } } @Override public void editPreUnitVersion(VersionUnitVo param) { if(param.getId()!= null && !"".equals(param.getId())){ SumPrevMaterialUnit sumPrevMaterial = prevMaterialUnitMapper.selectById(param.getId()); //修改的话,先删除之前的记录,再插入新的记录 prevMaterialUnitMapper.delete(new QueryWrapper() .eq("parent_id",sumPrevMaterial.getParentId()) .eq("unit_id",sumPrevMaterial.getUnitId())); } List list = param.getUnitList(); SumPrevMaterial sumPrevMaterial = prevMaterialMapper.selectById(param.getParentId()); int unitShowSort = this.getListSizeByParentId(param.getParentId()).intValue() +1; if(list!=null && list.size()>0){ for (VersionUnitListVo vo:list){ SumPrevMaterialUnit sumPrevMaterialUnit = new SumPrevMaterialUnit(); sumPrevMaterialUnit.setParentId(param.getParentId()); sumPrevMaterialUnit.setUnitId(param.getUnitId()); sumPrevMaterialUnit.setUnitName(param.getUnitName()); sumPrevMaterialUnit.setVideoLink(vo.getVideoLink()); sumPrevMaterialUnit.setVideoName(vo.getVideoName()); sumPrevMaterialUnit.setCreateTime(new Date()); sumPrevMaterialUnit.setSubject(sumPrevMaterial.getSubject()); sumPrevMaterialUnit.setUnitShowSort(unitShowSort); prevMaterialUnitMapper.insert(sumPrevMaterialUnit); } }else{ SumPrevMaterialUnit sumPrevMaterialUnit = new SumPrevMaterialUnit(); sumPrevMaterialUnit.setParentId(param.getParentId()); sumPrevMaterialUnit.setUnitId(param.getUnitId()); sumPrevMaterialUnit.setUnitName(param.getUnitName()); sumPrevMaterialUnit.setCreateTime(new Date()); sumPrevMaterialUnit.setSubject(sumPrevMaterial.getSubject()); sumPrevMaterialUnit.setUnitShowSort(unitShowSort); prevMaterialUnitMapper.insert(sumPrevMaterialUnit); } } @Override public Page vacationRevPage(VersionVo param) { return summerVacationMapper.vacationRevPage(param.toPage(),param); } @Override public void revMaterialVersion(VersionVo param) { if(param.getId()== null || "".equals(param.getId())){ SumRevMaterial sumPrevMaterial = new SumRevMaterial(); sumPrevMaterial.setVersionType(param.getVersionType()); sumPrevMaterial.setSubject(param.getSubject()); sumPrevMaterial.setVersionName(getVersionNameByType(param.getVersionType(),param.getSubject())); sumPrevMaterial.setCreateTime(new Date()); revMaterialMapper.insert(sumPrevMaterial); }else{ SumRevMaterial revMaterial = revMaterialMapper.selectById(param.getId()); if(StringUtils.isNotEmpty(param.getSubject())) { revMaterial.setSubject(param.getSubject()); } if(param.getVersionType()>0){ revMaterial.setVersionType(param.getVersionType()); revMaterial.setVersionName(getVersionNameByType(param.getVersionType(),param.getSubject())); } revMaterial.setCreateTime(new Date()); revMaterialMapper.updateById(revMaterial); } } @Override public void delRevMaterialVersion(VersionVo param) { if(param.getId()!= null && !"".equals(param.getId())){ revMaterialMapper.deleteById(param.getId()); } } @Override public SumPrevMaterial findPreMaterialByAny(String subject, String versionName, String grade, String semester) { return prevMaterialMapper.selectOne(new QueryWrapper().eq("subject",subject).eq("grade",grade).eq("version_name",versionName).eq("semester",semester.equals("上册")?1:2)); } @Override public Integer getListSizeByParentId(String id) { return prevMaterialUnitMapper.selectCount(new QueryWrapper().eq("parent_id",id)); } private String getVersionNameByType(int type,String subject){ Map> data = SystemResourceLocator.getVersionList(subject); String reStr = ""; for(String key:data.keySet()) { List list = data.get(key); for(VersionConfig v:list){ if(v.getVersionType() == type){ reStr = v.getVersionName(); break; } } } return reStr; } }