SysYxColumnServiceImpl.java 9.35 KB
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<SysYxSchool> schoolList(AddYxSchoolVo vo) {
        Page<SysYxSchool> result = new Page<>(vo.getPage(), vo.getPageSize());
        PageHelper.startPage(vo.getPage(), vo.getPageSize());
        List<SysYxSchool> 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<SysYxColumnType> 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<SysYxColumnType> 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<SysYxSchoolConsult> 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<SysYxSchoolConsult> consultList(AddYxSchoolConsultVo vo) {
        Page<SysYxSchoolConsult> result = new Page<>(vo.getPage(), vo.getPageSize());
        PageHelper.startPage(vo.getPage(), vo.getPageSize());
        List<SysYxSchoolConsult> list = sysYxSchoolConsultMapper.selectList(vo);
        result.setList(list);
        result.setCount(sysYxSchoolConsultMapper.getListCount(vo));
        return result;
    }


    @Override
    public Page<CountYxSchoolConsult>  countConsultList(QueryCountYxSchoolConsult consult) {
        Page<CountYxSchoolConsult> result = new Page<>(consult.getPage(), consult.getPageSize());
        PageHelper.startPage(consult.getPage(), consult.getPageSize());
        List<SysYxSchoolConsult> list = sysYxSchoolConsultMapper.countConsultList(consult);
        List<CountYxSchoolConsult> resultConsult = new ArrayList<>();
        if(list.size()>0){
            Map<String, List<SysYxSchoolConsult>> map = list.parallelStream()
                    .filter(s->StringUtils.isNotEmpty(s.getArea()))
                    .collect(Collectors.groupingBy(SysYxSchoolConsult::getArea));
            if(!map.isEmpty()){
                for (Map.Entry<String, List<SysYxSchoolConsult>> entry : map.entrySet()) {
                    CountYxSchoolConsult countYxSchoolConsult = new CountYxSchoolConsult();

                    List<SysYxSchoolConsult> keyList = entry.getValue();
                    SysYxSchoolConsult sysYxSchoolConsult = keyList.get(0);
                    String area = entry.getKey();

                    QueryCountYxSchoolConsult query = new QueryCountYxSchoolConsult();
                    query.setArea(area);
                    List<SysYxSchoolConsult> 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;
    }
}