package com.zzg.system.service.state.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.zzg.common.core.domain.BaseEntity;
|
import com.zzg.common.core.domain.entity.state.StateProjectCollectionFile;
|
import com.zzg.common.enums.CollectionFileEnum;
|
import com.zzg.common.enums.DeleteFlagEnum;
|
import com.zzg.system.convert.StateProjectConvert;
|
import com.zzg.system.domain.bo.FileBO;
|
import com.zzg.system.domain.bo.UploadFileBO;
|
import com.zzg.system.domain.vo.ParentCollectionFileVO;
|
import com.zzg.system.mapper.state.StateProjectCollectionFileMapper;
|
import com.zzg.system.service.state.StateProjectCollectionFileService;
|
import lombok.RequiredArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
@Service
|
@RequiredArgsConstructor
|
public class StateProjectCollectionFileServiceImpl extends ServiceImpl<StateProjectCollectionFileMapper, StateProjectCollectionFile> implements StateProjectCollectionFileService {
|
// Create
|
public void create(StateProjectCollectionFile file) {
|
this.save(file);
|
}
|
|
// Read
|
@Override
|
public List<StateProjectCollectionFile> getByProjectIdAndType(String projectId, Integer fileType, Boolean isBefore) {
|
LambdaQueryWrapper<StateProjectCollectionFile> queryWrapper = new LambdaQueryWrapper<>();
|
if (StringUtils.isNotBlank(projectId)) {
|
queryWrapper.eq(StateProjectCollectionFile::getProjectId, projectId);
|
} else {
|
queryWrapper.isNull(StateProjectCollectionFile::getProjectId);
|
}
|
queryWrapper
|
.eq(StateProjectCollectionFile::getDelFlag, DeleteFlagEnum.NOT_DELETED.getKey())
|
.eq(StateProjectCollectionFile::getFileType, fileType)
|
.and(
|
qw -> qw.isNotNull(StateProjectCollectionFile::getParentId)
|
.or()
|
.ne(StateProjectCollectionFile::getParentId, "0"));
|
if (Boolean.TRUE.equals(isBefore)) {
|
queryWrapper.le(StateProjectCollectionFile::getFileType, 12);
|
}
|
return this.list(queryWrapper);
|
}
|
|
@Override
|
public Object uploadCollectionFile(UploadFileBO uploadFileBO) {
|
|
|
return null;
|
}
|
|
@Override
|
public List<ParentCollectionFileVO> getParentCollectionFile(Boolean isBefore) {
|
LambdaQueryWrapper<StateProjectCollectionFile> queryWrapper = new LambdaQueryWrapper<>();
|
|
List<Integer> fileTypeList = Arrays.stream(CollectionFileEnum.values())
|
.map(CollectionFileEnum::getCode)
|
.collect(Collectors.toList());
|
|
int threshold = 12;
|
fileTypeList = fileTypeList.stream()
|
.filter(e -> Boolean.TRUE.equals(isBefore) == (e <= threshold))
|
.collect(Collectors.toList());
|
|
|
|
queryWrapper.in(StateProjectCollectionFile::getFileType, fileTypeList)
|
.and(qw -> qw.isNull(StateProjectCollectionFile::getParentId).or().eq(StateProjectCollectionFile::getParentId, "0"))
|
.isNull(StateProjectCollectionFile::getProjectId)
|
.orderByAsc(StateProjectCollectionFile::getFileType);
|
List<StateProjectCollectionFile> list = list(queryWrapper);
|
if (CollectionUtils.isEmpty(list)) {
|
return Collections.emptyList();
|
}
|
List<ParentCollectionFileVO> voList = new ArrayList<>();
|
ParentCollectionFileVO vo;
|
for (StateProjectCollectionFile e : list) {
|
vo = new ParentCollectionFileVO();
|
vo.setUpdateTime(e.getUpdateTime());
|
vo.setFileType(e.getFileType());
|
vo.setMaterialName(CollectionFileEnum.getDescription(e.getFileType()));
|
voList.add(vo);
|
}
|
return voList;
|
}
|
|
@Override
|
public Boolean addCollectionFile(UploadFileBO uploadFileBO) {
|
List<FileBO> files = uploadFileBO.getFileBOList();
|
|
StateProjectCollectionFile stateProjectCollectionFile;
|
List<StateProjectCollectionFile> collectionFileList = new ArrayList<>();
|
|
for (FileBO filefileBO : files) {
|
stateProjectCollectionFile = StateProjectConvert.INSTANCE.uploadCollectionFileToEntity(uploadFileBO);
|
stateProjectCollectionFile.setFileName(filefileBO.getOriginalFilename());
|
stateProjectCollectionFile.setFileUrl(filefileBO.getUrl());
|
collectionFileList.add(stateProjectCollectionFile);
|
}
|
List<Integer> fileTypeList = collectionFileList.stream().map(StateProjectCollectionFile::getFileType).collect(Collectors.toList());
|
LambdaUpdateWrapper<StateProjectCollectionFile> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
|
lambdaUpdateWrapper.in(StateProjectCollectionFile::getFileType, fileTypeList)
|
.and(qw -> qw.isNull(StateProjectCollectionFile::getParentId).or().eq(StateProjectCollectionFile::getParentId, "0"))
|
.isNull(StateProjectCollectionFile::getProjectId)
|
.set(BaseEntity::getUpdateTime, new Date());
|
update(lambdaUpdateWrapper);
|
return saveOrUpdateBatch(collectionFileList);
|
}
|
|
// Update
|
public void update(StateProjectCollectionFile file) {
|
this.updateById(file);
|
}
|
|
// Delete
|
public void delete(Integer fileId) {
|
this.removeById(fileId);
|
}
|
}
|