package com.sincere.student.service.impl; import com.github.pagehelper.PageHelper; import com.sincere.student.dto.yx.AddYxSchoolConsultVo; import com.sincere.student.dto.yx.AddYxSchoolVo; import com.sincere.student.dto.yx.CountYxSchoolConsult; import com.sincere.student.dto.yx.QueryCountYxSchoolConsult; import com.sincere.student.mapper.SysYxColumnTypeMapper; import com.sincere.student.mapper.SysYxSchoolConsultMapper; import com.sincere.student.mapper.SysYxSchoolMapper; import com.sincere.student.model.ColumnType; import com.sincere.student.model.yx.*; import com.sincere.student.service.SysYxColumnService; import com.sincere.student.utils.Page; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service public class SysYxColumnServiceImpl implements SysYxColumnService { @Autowired SysYxSchoolMapper sysYxSchoolMapper; @Autowired SysYxColumnTypeMapper sysYxColumnTypeMapper; @Autowired SysYxSchoolConsultMapper sysYxSchoolConsultMapper; @Override public Page schoolList(AddYxSchoolVo vo) { Page result = new Page<>(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize()); List list = sysYxSchoolMapper.selectList(vo); result.setList(list); result.setCount(sysYxSchoolMapper.getListCount(vo)); return result; } @Override public void addSchool(AddYxSchoolVo vo) { SysYxSchool school = new SysYxSchool(); BeanUtils.copyProperties(vo,school); school.setCreateTime(new Date()); if(vo.getId()==null){ school.setId(null); sysYxSchoolMapper.insertSelective(school); }else{ sysYxSchoolMapper.updateByPrimaryKeySelective(school); } } @Override public void delSchool(Integer id) { sysYxSchoolMapper.deleteByPrimaryKey(id); } @Override public void addColumnType(ColumnType columnType) { Integer type = columnType.getType(); Integer sort = columnType.getSort(); String name = columnType.getName(); SysYxColumnType sysYxColumnType = new SysYxColumnType(); sysYxColumnType.setColumnType(type); sysYxColumnType.setColumnName(name); sysYxColumnType.setSort(sort); sysYxColumnType.setCreateTime(new Date()); List countList = sysYxColumnTypeMapper.countSort(sort.intValue(), type.intValue(), 1, null); if (!CollectionUtils.isEmpty(countList)) { int i = 1; for (SysYxColumnType oldType : countList) { int addSort = i + sort; if (addSort > oldType.getSort()) { //若已存在自增1 oldType.setSort(oldType.getSort() + 1); sysYxColumnTypeMapper.updateByPrimaryKeySelective(oldType); } i++; } } sysYxColumnTypeMapper.insertSelective(sysYxColumnType); } @Override public void updateColumnType(ColumnType columnType) { SysYxColumnType sysYxColumnType = sysYxColumnTypeMapper.selectByPrimaryKey(columnType.getId()); if(sysYxColumnType==null){ return; } Integer type = columnType.getType(); Integer sort = columnType.getSort(); String name = columnType.getName(); SysYxColumnType newType = new SysYxColumnType(); newType.setColumnType(type); newType.setColumnName(name); newType.setSort(sort); newType.setCreateTime(new Date()); List countList = sysYxColumnTypeMapper.countSort(sort.intValue(), type.intValue(), 2, columnType.getId()); if (!CollectionUtils.isEmpty(countList)) { int i = 1; for (SysYxColumnType oldType : countList) { int addSort = i + sort; if (addSort > oldType.getSort()) { //若已存在自增1 oldType.setSort(oldType.getSort() + 1); sysYxColumnTypeMapper.updateByPrimaryKeySelective(oldType); } i++; } } sysYxColumnType.setId(columnType.getId()); sysYxColumnTypeMapper.updateByPrimaryKeySelective(sysYxColumnType); } @Override public void delColumnType(Integer id) { } @Override public void createConsult(AddYxSchoolConsultVo schoolConsultVo) { //排序 Integer sort = schoolConsultVo.getSort(); SysYxSchoolConsult consult = new SysYxSchoolConsult(); BeanUtils.copyProperties(schoolConsultVo,consult); List consultList = null; if(schoolConsultVo.getId() != null){ consultList = sysYxSchoolConsultMapper.countSort(sort.intValue(), 2, schoolConsultVo.getId()); }else{ consultList = sysYxSchoolConsultMapper.countSort(sort.intValue(), 1, null); } if (!CollectionUtils.isEmpty(consultList)) { int i = 1; for (SysYxSchoolConsult oldConsult : consultList) { int addSort = i + sort; if (addSort > oldConsult.getSort()) { //若已存在自增1 oldConsult.setSort(oldConsult.getSort() + 1); sysYxSchoolConsultMapper.updateSort(oldConsult); } i++; } } consult.setCreateTime(new Date()); if(schoolConsultVo.getId() != null){ sysYxSchoolConsultMapper.updateByPrimaryKeySelective(consult); }else { consult.setId(null); consult.setStatus(1); sysYxSchoolConsultMapper.insertSelective(consult); } } @Override public void delConsult(Integer id) { sysYxSchoolConsultMapper.deleteByPrimaryKey(id); } @Override public SysYxSchoolConsult getConsultDetail(Integer id) { return sysYxSchoolConsultMapper.selectByPrimaryKey(id); } @Override public void updateRead(Integer id) { SysYxSchoolConsult consult = sysYxSchoolConsultMapper.selectByPrimaryKey(id); if(consult!=null){ int num = consult.getReadNumber(); num = num+1; consult.setReadNumber(num); sysYxSchoolConsultMapper.updateByPrimaryKeySelective(consult); } } @Override public Page consultList(AddYxSchoolConsultVo vo) { Page result = new Page<>(vo.getPage(), vo.getPageSize()); PageHelper.startPage(vo.getPage(), vo.getPageSize()); List list = sysYxSchoolConsultMapper.selectList(vo); result.setList(list); result.setCount(sysYxSchoolConsultMapper.getListCount(vo)); return result; } @Override public Page countConsultList(QueryCountYxSchoolConsult consult) { Page result = new Page<>(consult.getPage(), consult.getPageSize()); PageHelper.startPage(consult.getPage(), consult.getPageSize()); List list = sysYxSchoolConsultMapper.countConsultList(consult); List resultConsult = new ArrayList<>(); if(list.size()>0){ Map> map = list.parallelStream() .filter(s->StringUtils.isNotEmpty(s.getArea())) .collect(Collectors.groupingBy(SysYxSchoolConsult::getArea)); if(!map.isEmpty()){ for (Map.Entry> entry : map.entrySet()) { CountYxSchoolConsult countYxSchoolConsult = new CountYxSchoolConsult(); List keyList = entry.getValue(); SysYxSchoolConsult sysYxSchoolConsult = keyList.get(0); String area = entry.getKey(); QueryCountYxSchoolConsult query = new QueryCountYxSchoolConsult(); query.setArea(area); List total = sysYxSchoolConsultMapper.countConsultList(query); int totalReadNum = total.stream().mapToInt(SysYxSchoolConsult::getReadNumber).sum(); countYxSchoolConsult.setProvince(sysYxSchoolConsult.getProvince()); countYxSchoolConsult.setCity(sysYxSchoolConsult.getCity()); countYxSchoolConsult.setArea(sysYxSchoolConsult.getArea()); countYxSchoolConsult.setTotalReadNum(totalReadNum); countYxSchoolConsult.setTotalVideoNum(total.size()); if(StringUtils.isNotBlank(consult.getStartTime()) && StringUtils.isNotBlank(consult.getEndTime())){ countYxSchoolConsult.setAddVideoNum(keyList.size()); }else{ countYxSchoolConsult.setAddVideoNum(total.size()); } resultConsult.add(countYxSchoolConsult); } } } result.setList(resultConsult); result.setCount(resultConsult.size()); return result; } }