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 implements OaProjectService{ @Autowired private OaProjectMapper oaProjectMapper; @Autowired private OaProjectPhaseService oaProjectPhaseService; @Override public IPage listPage(Page page, OaProjectDto oaProjectDto) { IPage 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 ids) { List list = oaProjectMapper.selectByIds(ids); ExcelUtil util = new ExcelUtil(OaProjectDto.class); util.exportExcel(response, list , "项目数据"); } @Override public boolean deleteById(Long id) { // 先删除项目下的阶段 List oaProjectPhases = oaProjectPhaseService.list(new LambdaQueryWrapper() .eq(OaProjectPhase::getOaProjectId, id)); if (!oaProjectPhases.isEmpty()) { oaProjectPhases.forEach(oaProjectPhase -> { oaProjectPhaseService.deleteById(oaProjectPhase.getPhaseId()); }); } return oaProjectMapper.deleteById(id) > 0; } }