package com.ycl.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.common.base.Result; import com.ycl.domain.entity.ProgressPlan; import com.ycl.domain.entity.ProjectPlanInfo; import com.ycl.domain.entity.ProjectPlanRecord; import com.ycl.domain.form.ProgressPlanForm; import com.ycl.domain.query.ProgressPlanQuery; import com.ycl.domain.vo.ProgressPlanInfoFlag; import com.ycl.domain.vo.ProgressPlanInfoResponseVO; import com.ycl.domain.vo.ProgressPlanVO; import com.ycl.framework.utils.PageUtil; import com.ycl.mapper.ProgressPlanMapper; import com.ycl.mapper.ProjectPlanInfoMapper; import com.ycl.mapper.ProjectPlanRecordMapper; import com.ycl.service.ProgressPlanService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * 项目计划进度 服务实现类 * * @author lhr * @since 2024-11-22 */ @Service @RequiredArgsConstructor public class ProgressPlanServiceImpl extends ServiceImpl implements ProgressPlanService { private final ProgressPlanMapper progressPlanMapper; private final ProjectPlanRecordMapper projectPlanRecordMapper; private final ProjectPlanInfoMapper projectPlanInfoMapper; /** * 添加 * @param form * @return */ @Override public Result add(ProgressPlanForm form) { ProgressPlan entity = ProgressPlanForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(ProgressPlanForm form) { ProgressPlan entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); baseMapper.updateById(entity); return Result.ok("修改成功"); } /** * 批量删除 * @param ids * @return */ @Override public Result remove(List ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } /** * id删除 * @param id * @return */ @Override public Result removeById(String id) { baseMapper.deleteById(id); return Result.ok("删除成功"); } /** * 分页查询 * @param query * @return */ @Override public Result page(ProgressPlanQuery query) { IPage page = PageUtil.getPage(query, ProgressPlanVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(Integer id) { ProgressPlanInfoResponseVO vo = new ProgressPlanInfoResponseVO(); List monthProgress = new ArrayList<>(); List seasonProgress = new ArrayList<>(); List yearProgress = new ArrayList<>(); // 查询月度计划项 new LambdaQueryChainWrapper<>(projectPlanRecordMapper) .eq(ProjectPlanRecord::getProjectInfoId, id) .eq(ProjectPlanRecord::getPlanTimeFlag, 0) .list() .stream().forEach(record -> { ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag(); progressPlanInfoFlag.setPlanTime(record.getPlanTime()); progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag()); progressPlanInfoFlag.setPlanInfoList( new LambdaQueryChainWrapper<>(projectPlanInfoMapper) .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId()) .list() ); monthProgress.add(progressPlanInfoFlag); }); // 查询季度计划项 new LambdaQueryChainWrapper<>(projectPlanRecordMapper) .eq(ProjectPlanRecord::getProjectInfoId, id) .eq(ProjectPlanRecord::getPlanTimeFlag, 1) .list() .stream().forEach(record -> { ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag(); progressPlanInfoFlag.setPlanTime(record.getPlanTime()); progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag()); progressPlanInfoFlag.setPlanInfoList( new LambdaQueryChainWrapper<>(projectPlanInfoMapper) .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId()) .list() ); seasonProgress.add(progressPlanInfoFlag); }); // 查询年度计划项 new LambdaQueryChainWrapper<>(projectPlanRecordMapper) .eq(ProjectPlanRecord::getProjectInfoId, id) .eq(ProjectPlanRecord::getPlanTimeFlag, 2) .list() .stream().forEach(record -> { ProgressPlanInfoFlag progressPlanInfoFlag = new ProgressPlanInfoFlag(); progressPlanInfoFlag.setPlanTime(record.getPlanTime()); progressPlanInfoFlag.setPlanTimeFlag(record.getPlanTimeFlag()); progressPlanInfoFlag.setPlanInfoList( new LambdaQueryChainWrapper<>(projectPlanInfoMapper) .eq(ProjectPlanInfo::getProjectPlanRecordId, record.getId()) .list() ); yearProgress.add(progressPlanInfoFlag); }); vo.setMonthProgress(monthProgress); vo.setSeasonProgress(seasonProgress); vo.setYearProgress(yearProgress); return Result.ok().data(vo); } /** * */ /** * 列表 * @return */ @Override public Result all() { List entities = baseMapper.selectList(null); List vos = entities.stream() .map(entity -> ProgressPlanVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } }