TimeTableServiceImpl.java 3.79 KB
package com.subsidy.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.subsidy.common.exception.HttpException;
import com.subsidy.mapper.ProjectMapper;
import com.subsidy.model.ProjectDO;
import com.subsidy.model.TimeTableDO;
import com.subsidy.mapper.TimeTableMapper;
import com.subsidy.service.TimeTableService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.subsidy.util.ConstantUtils;
import com.subsidy.util.excel.ExcelUtil;
import com.subsidy.vo.timetable.QueryTablesDetailVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Tuyp
 * @since 2025-10-28
 */
@Service
public class TimeTableServiceImpl extends ServiceImpl<TimeTableMapper, TimeTableDO> implements TimeTableService {

    @Autowired
    private ProjectMapper projectMapper;

    @Override
    public List<TimeTableDO> queryTimeTables(TimeTableDO timeTableDO) {
        return this.baseMapper.selectList(new QueryWrapper<TimeTableDO>()
        .lambda()
        .eq(TimeTableDO::getMatchId,timeTableDO.getMatchId()));
    }

    @Override
    @Transactional(rollbackFor = Exception.class)
    public String updateTimeByProjectId(TimeTableDO timeTableDO) {

        TimeTableDO timeTableDO1 = this.baseMapper.selectOne(new QueryWrapper<TimeTableDO>()
        .lambda()
        .eq(TimeTableDO::getProjectId,timeTableDO.getProjectId()));

        if (null == timeTableDO1){
            throw new HttpException(10033);
        }

        //将之前时间表的projectId置为空
        this.baseMapper.clearProjectId(timeTableDO1.getId());

        //将project的timeId置为空
        projectMapper.clearTimeId(timeTableDO1.getProjectId());

        TimeTableDO finalTable = this.baseMapper.selectById(timeTableDO.getId());
        finalTable.setProjectId(timeTableDO.getProjectId());
        this.baseMapper.updateById(finalTable);

        return ConstantUtils.SUCCESS_UPDATE;
    }

    @Override
    public List<QueryTablesDetailVO> queryTablesDetail(TimeTableDO timeTableDO) {
        return this.baseMapper.queryTablesDetail(timeTableDO.getMatchId());
    }

    @Override
    public void exportQueryTablesDetail(TimeTableDO timeTableDO) {
        List<QueryTablesDetailVO> queryTablesDetailVOS = this.baseMapper.queryTablesDetail(timeTableDO.getMatchId());
        ExcelUtil.writeExcel(queryTablesDetailVOS,QueryTablesDetailVO.class);
    }

    @Override
    public String addTimeTable(TimeTableDO timeTableDO) {

        int count = this.baseMapper.selectCount(new QueryWrapper<TimeTableDO>()
        .lambda()
        .eq(TimeTableDO::getMatchId,timeTableDO.getMatchId())
        .eq(TimeTableDO::getSelectTime,timeTableDO.getSelectTime()));

        if (count > 0){
            throw new HttpException(10034);
        }

        this.baseMapper.insert(timeTableDO);
        return ConstantUtils.ADD_SUCCESS;
    }

    @Override
    public String deleteTimeTableById(TimeTableDO timeTableDO) {
        TimeTableDO timeTableDO1 = this.baseMapper.selectById(timeTableDO.getId());
        if (null != timeTableDO1.getProjectId()){
            throw new HttpException(10035);
        }
        this.baseMapper.deleteById(timeTableDO.getId());
        return ConstantUtils.DELETE_SUCCESS;
    }

    @Override
    public String rollbackTime(TimeTableDO timeTableDO) {

        TimeTableDO timeTableDO1 = this.baseMapper.selectById(timeTableDO.getId());

        //将之前时间表的projectId置为空
        this.baseMapper.clearProjectId(timeTableDO.getId());

        //将project的timeId置为空
        projectMapper.clearTimeId(timeTableDO1.getProjectId());
        return ConstantUtils.SUCCESS_UPDATE;
    }
}