package com.ruoyi.oA.service.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
 | 
import com.ruoyi.common.utils.poi.ExcelUtil; 
 | 
import com.ruoyi.measuringinstrumentledger.pojo.MeasuringInstrumentLedgerRecord; 
 | 
import com.ruoyi.oA.dto.OaProjectDto; 
 | 
import com.ruoyi.oA.pojo.OaProject; 
 | 
import com.ruoyi.oA.pojo.OaProjectPhase; 
 | 
import com.ruoyi.oA.service.OaProjectPhaseService; 
 | 
import com.ruoyi.oA.service.OaProjectService; 
 | 
import com.ruoyi.oA.mapper.OaProjectMapper; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import javax.servlet.http.HttpServletResponse; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
* @author ywx 
 | 
* @description 针对表【oa_project(OA系统-项目任务协同-项目表)】的数据库操作Service实现 
 | 
* @createDate 2025-09-24 09:18:45 
 | 
*/ 
 | 
@Service 
 | 
@Transactional(rollbackFor = Exception.class) 
 | 
public class OaProjectServiceImpl extends ServiceImpl<OaProjectMapper, OaProject> 
 | 
    implements OaProjectService{ 
 | 
    @Autowired 
 | 
    private OaProjectMapper oaProjectMapper; 
 | 
    @Autowired 
 | 
    private OaProjectPhaseService oaProjectPhaseService; 
 | 
  
 | 
    @Override 
 | 
    public IPage<OaProjectDto> listPage(Page page, OaProjectDto oaProjectDto) { 
 | 
        IPage<OaProjectDto> iPage = oaProjectMapper.listPage(page, oaProjectDto); 
 | 
        // 项目阶段列表 
 | 
        for (OaProjectDto projectDto : iPage.getRecords()) { 
 | 
            projectDto.setOaProjectPhasesDto(oaProjectPhaseService.listByProjectId(projectDto.getProjectId())); 
 | 
        } 
 | 
        return iPage; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void export(HttpServletResponse response, List<Long> ids) { 
 | 
        List<OaProjectDto> list = oaProjectMapper.selectByIds(ids); 
 | 
        ExcelUtil<OaProjectDto> util = new ExcelUtil<OaProjectDto>(OaProjectDto.class); 
 | 
        util.exportExcel(response, list , "项目数据"); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public boolean deleteById(Long id) { 
 | 
        // 先删除项目下的阶段 
 | 
        List<OaProjectPhase> oaProjectPhases = oaProjectPhaseService.list(new LambdaQueryWrapper<OaProjectPhase>() 
 | 
                .eq(OaProjectPhase::getOaProjectId, id)); 
 | 
        if (!oaProjectPhases.isEmpty()) { 
 | 
            oaProjectPhases.forEach(oaProjectPhase -> { 
 | 
                oaProjectPhaseService.deleteById(oaProjectPhase.getPhaseId()); 
 | 
            }); 
 | 
        } 
 | 
        return oaProjectMapper.deleteById(id) > 0; 
 | 
    } 
 | 
} 
 |