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.conditions.update.LambdaUpdateChainWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.common.base.Result;
|
import com.ycl.common.enums.business.FileTypeEnum;
|
import com.ycl.domain.entity.*;
|
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.domain.vo.ProjectProgressFileListsRequest;
|
import com.ycl.framework.utils.PageUtil;
|
import com.ycl.mapper.*;
|
import com.ycl.service.ProgressPlanService;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.Assert;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* 项目计划进度 服务实现类
|
*
|
* @author lhr
|
* @since 2024-11-22
|
*/
|
@Service
|
@RequiredArgsConstructor
|
public class ProgressPlanServiceImpl extends ServiceImpl<ProgressPlanMapper, ProgressPlan> implements ProgressPlanService {
|
|
private final ProgressPlanMapper progressPlanMapper;
|
private final ProjectPlanRecordMapper projectPlanRecordMapper;
|
private final ProjectPlanInfoMapper projectPlanInfoMapper;
|
private final PlanMapper planMapper;
|
private final FileMapper fileMapper;
|
|
/**
|
* 添加
|
* @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<String> 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<ProgressPlanVO> 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<ProgressPlanInfoFlag> monthProgress = new ArrayList<>();
|
List<ProgressPlanInfoFlag> seasonProgress = new ArrayList<>();
|
List<ProgressPlanInfoFlag> 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<ProgressPlan> entities = baseMapper.selectList(null);
|
List<ProgressPlanVO> vos = entities.stream()
|
.map(entity -> ProgressPlanVO.getVoByEntity(entity, null))
|
.collect(Collectors.toList());
|
return Result.ok().data(vos);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Result saveProjectProgressFileLists(ProjectProgressFileListsRequest request) {
|
new LambdaUpdateChainWrapper<>(fileMapper)
|
.eq(File::getBusId, request.getProjectReportId())
|
.eq(File::getType, FileTypeEnum.PROJECT_SITUATION_DESCRIPTION.getType())
|
.set(File::getDeleted,1)
|
.update();
|
|
request.getSituationDescriptionFileList().stream()
|
.forEach(file -> {
|
file.setBusId(request.getProjectReportId().longValue());
|
file.setType(FileTypeEnum.PROJECT_SITUATION_DESCRIPTION);
|
file.setGmtCreate(new Date());
|
file.setGmtUpdate(new Date());
|
file.setDeleted(0);
|
fileMapper.insert(file);
|
});
|
|
new LambdaUpdateChainWrapper<>(fileMapper)
|
.eq(File::getBusId, request.getProjectReportId())
|
.eq(File::getType, FileTypeEnum.PROJECT_COMPLETE_REPORT.getType())
|
.set(File::getDeleted,1)
|
.update();
|
|
request.getCompletedReportFileList().stream()
|
.forEach(file -> {
|
file.setBusId(request.getProjectReportId().longValue());
|
file.setType(FileTypeEnum.PROJECT_COMPLETE_REPORT);
|
file.setGmtCreate(new Date());
|
file.setGmtUpdate(new Date());
|
file.setDeleted(0);
|
fileMapper.insert(file);
|
});
|
return Result.ok("保存成功");
|
}
|
|
@Override
|
public Result getProjectProgressForm(Integer id) {
|
ProjectProgressFileListsRequest result = new ProjectProgressFileListsRequest();
|
result.setProjectReportId(id);
|
result.setCompletedReportFileList(new LambdaQueryChainWrapper<>(fileMapper)
|
.eq(File::getBusId, id)
|
.eq(File::getType, FileTypeEnum.PROJECT_COMPLETE_REPORT)
|
.eq(File::getDeleted, 0)
|
.list());
|
result.setSituationDescriptionFileList(new LambdaQueryChainWrapper<>(fileMapper)
|
.eq(File::getBusId, id)
|
.eq(File::getType, FileTypeEnum.PROJECT_SITUATION_DESCRIPTION)
|
.eq(File::getDeleted, 0)
|
.list());
|
return Result.ok().data(result);
|
}
|
}
|