package com.qianwen.smartman.modules.dnc.service.impl;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
import java.util.function.Function;
|
import java.util.stream.Collectors;
|
import java.util.stream.Stream;
|
|
import org.apache.commons.compress.utils.Lists;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Lazy;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.google.common.collect.Sets;
|
import com.qianwen.core.log.exception.ServiceException;
|
import com.qianwen.core.mp.base.BaseServiceImpl;
|
import com.qianwen.core.tool.constant.BladeConstant;
|
import com.qianwen.core.tool.node.ForestNodeMerger;
|
import com.qianwen.core.tool.utils.Func;
|
import com.qianwen.smartman.common.constant.DncConstant;
|
import com.qianwen.smartman.common.utils.ListUtils;
|
import com.qianwen.smartman.common.utils.MessageUtils;
|
import com.qianwen.smartman.modules.cps.vo.ProcessCatalogueTreeVO;
|
import com.qianwen.smartman.modules.dnc.convert.DncProcessCatalogueConvert;
|
import com.qianwen.smartman.modules.dnc.entity.DncArtBag;
|
import com.qianwen.smartman.modules.dnc.entity.DncArtFile;
|
import com.qianwen.smartman.modules.dnc.entity.DncProcessCatalogue;
|
import com.qianwen.smartman.modules.dnc.enums.DncEnums;
|
import com.qianwen.smartman.modules.dnc.mapper.DncProcessCatalogueMapper;
|
import com.qianwen.smartman.modules.dnc.service.IDncArtBagService;
|
import com.qianwen.smartman.modules.dnc.service.IDncArtFileService;
|
import com.qianwen.smartman.modules.dnc.service.IDncProcessCatalogueService;
|
import com.qianwen.smartman.modules.dnc.vo.DncCatalogueAndArtBagTreeVO;
|
import com.qianwen.smartman.modules.dnc.vo.DncCatalogueAndArtBagVO;
|
import com.qianwen.smartman.modules.dnc.vo.DncProcessCatalogueVO;
|
|
@Service
|
/* loaded from: blade-api.jar:BOOT-INF/classes/org/springblade/modules/dnc/service/impl/DncProcessCatalogueServiceImpl.class */
|
public class DncProcessCatalogueServiceImpl extends BaseServiceImpl<DncProcessCatalogueMapper, DncProcessCatalogue> implements IDncProcessCatalogueService {
|
@Autowired
|
@Lazy
|
private IDncArtBagService artBagService;
|
@Autowired
|
@Lazy
|
private IDncArtFileService dncArtFileService;
|
private static final Long RANDOM_ID = 234123L;
|
|
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public DncProcessCatalogueVO updateName(Long id, String name) {
|
DncProcessCatalogue dncProcessCatalogue = (DncProcessCatalogue) getById(id);
|
checkName(dncProcessCatalogue.getParentId(), id, name);
|
dncProcessCatalogue.setName(name);
|
updateById(dncProcessCatalogue);
|
return DncProcessCatalogueConvert.INSTANCE.convert(dncProcessCatalogue);
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public DncProcessCatalogueVO save(Long parentId, String name) {
|
checkName(parentId, null, name);
|
DncProcessCatalogue dncProcessCatalogue = new DncProcessCatalogue();
|
dncProcessCatalogue.setName(name).setParentId(parentId);
|
save(dncProcessCatalogue);
|
DncProcessCatalogue parent = (DncProcessCatalogue) getById(parentId);
|
String parentAllPath = parent.getAllPath();
|
String allPath = parentAllPath + "/" + dncProcessCatalogue.getId();
|
DncProcessCatalogue byId = (DncProcessCatalogue) getById(dncProcessCatalogue.getId());
|
byId.setAllPath(allPath);
|
updateById(byId);
|
return DncProcessCatalogueConvert.INSTANCE.convert(byId);
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
@Transactional(rollbackFor = {Exception.class})
|
public boolean remove(List<String> ids) {
|
String id = ListUtils.getFirst(ids);
|
Set<String> catalogueIdSets = Sets.newHashSet(listObjs(Wrappers.<DncProcessCatalogue>lambdaQuery().select(DncProcessCatalogue::getId).like(DncProcessCatalogue::getAllPath, id), String::valueOf));
|
/*
|
Set<String> catalogueIdSets = Sets.newHashSet(listObjs((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}).like((v0) -> {
|
return v0.getAllPath();
|
}, id), String::valueOf));*/
|
catalogueIdSets.add(id);
|
List<Long> catalogueIds = catalogueIdSets.stream().map((v0) -> {
|
return Func.toLong(v0);
|
}).collect(Collectors.toList());
|
removeByIds(catalogueIds);
|
List<Long> bagIds = this.artBagService.listObjs(Wrappers.<DncArtBag>lambdaQuery().select(DncArtBag::getId).in(DncArtBag::getCatalogueId, catalogueIds), bagId -> Long.valueOf(bagId.toString()));
|
/*
|
List<Long> bagIds = this.artBagService.listObjs((Wrapper) Wrappers.lambdaQuery().select(new SFunction[]{(v0) -> {
|
return v0.getId();
|
}}).in((v0) -> {
|
return v0.getCatalogueId();
|
}, catalogueIds), bagId -> {
|
return Long.valueOf(bagId.toString());
|
});*/
|
if (Func.isNotEmpty(bagIds)) {
|
this.artBagService.removeByIds(bagIds);
|
this.dncArtFileService.remove(Wrappers.<DncArtFile>lambdaQuery().in(DncArtFile::getArtBagId, bagIds));
|
/*
|
this.dncArtFileService.remove((Wrapper) Wrappers.lambdaQuery().in((v0) -> {
|
return v0.getArtBagId();
|
}, bagIds));*/
|
return true;
|
}
|
return true;
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public List<DncProcessCatalogueVO> lazyList(String parentId) {
|
if (Func.isEmpty(parentId)) {
|
parentId = DncConstant.DNC_DEFAULT_PARENT_ID;
|
}
|
|
List<DncProcessCatalogue> list = list(Wrappers.<DncProcessCatalogue>lambdaQuery().eq(DncProcessCatalogue::getParentId, parentId));
|
/*
|
List<DncProcessCatalogue> list = list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getParentId();
|
}, parentId));*/
|
return DncProcessCatalogueConvert.INSTANCE.convert(list);
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public List<DncCatalogueAndArtBagVO> lazyArtBagList(String parentId) {
|
Long groupId = null;
|
if (Func.isEmpty(parentId)) {
|
parentId = DncConstant.DNC_DEFAULT_PARENT_ID;
|
} else {
|
groupId = Long.valueOf(Func.toLong(parentId));
|
}
|
List<DncCatalogueAndArtBagVO> voList = new ArrayList<>();
|
List<DncProcessCatalogue> list = list(Wrappers.<DncProcessCatalogue>lambdaQuery().eq(DncProcessCatalogue::getParentId, parentId));
|
/*
|
List<DncProcessCatalogue> list = list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getParentId();
|
}, parentId));*/
|
if (Func.isNotEmpty(list)) {
|
List<DncCatalogueAndArtBagVO> collect = list.stream().map(catalogue -> {
|
return DncCatalogueAndArtBagVO.builder().parentId(catalogue.getParentId()).name(catalogue.getName()).id(catalogue.getId()).isGroup(Boolean.TRUE).isArtBag(Boolean.FALSE).build();
|
}).collect(Collectors.toList());
|
voList.addAll(collect);
|
}
|
List<DncProcessCatalogue> groupList = list();
|
if (Func.isNotEmpty(groupList)) {
|
Map<Long, DncProcessCatalogue> dncProcessCatalogueMap = list().stream().collect(Collectors.toMap((v0) -> {
|
return v0.getId();
|
}, Function.identity()));
|
if (groupId != null) {
|
List<DncArtBag> artBagList = this.artBagService.list(Wrappers.<DncArtBag>lambdaQuery().eq(DncArtBag::getCatalogueId, groupId));
|
/*
|
List<DncArtBag> artBagList = this.artBagService.list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getCatalogueId();
|
}, groupId));*/
|
if (Func.isNotEmpty(artBagList)) {
|
List<DncCatalogueAndArtBagVO> dncCatalogueAndArtBags = artBagList.stream().map(catalogue2 -> {
|
DncProcessCatalogue dncProcessCatalogue = (DncProcessCatalogue) dncProcessCatalogueMap.get(catalogue2.getCatalogueId());
|
return DncCatalogueAndArtBagVO.builder().id(catalogue2.getCatalogueId()).parentId(dncProcessCatalogue.getParentId()).artId(Func.toStr(catalogue2.getId())).code(catalogue2.getCode()).artName(catalogue2.getName()).isGroup(Boolean.FALSE).isArtBag(Boolean.TRUE).build();
|
}).collect(Collectors.toList());
|
voList.addAll(dncCatalogueAndArtBags);
|
}
|
}
|
}
|
return voList;
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public List<DncCatalogueAndArtBagTreeVO> artBagTree() {
|
List<DncProcessCatalogue> list = list();
|
List<DncArtBag> artBagList = this.artBagService.list();
|
return ForestNodeMerger.merge( Stream.concat(list.stream().map(catalogue -> {
|
return DncCatalogueAndArtBagTreeVO.builder().parentId(catalogue.getParentId()).name(catalogue.getName()).id(catalogue.getId()).isGroup(Boolean.TRUE).isArtBag(Boolean.FALSE).build();
|
}), artBagList.stream().map(catalogue2 -> {
|
return DncCatalogueAndArtBagTreeVO.builder().id(catalogue2.getId()).parentId(catalogue2.getCatalogueId()).artId(Func.toStr(catalogue2.getId())).code(catalogue2.getCode()).artName(catalogue2.getName()).isGroup(Boolean.FALSE).isArtBag(Boolean.TRUE).build();
|
})).collect(Collectors.toList()));
|
}
|
|
@Override // org.springblade.modules.dnc.service.IDncProcessCatalogueService
|
public List<ProcessCatalogueTreeVO> cateArtBagTree() {
|
List<DncProcessCatalogue> catalogueList = list();
|
List<ProcessCatalogueTreeVO> tree = Lists.newArrayList();
|
if (Func.isNotEmpty(catalogueList)) {
|
List<ProcessCatalogueTreeVO> res = catalogueList.stream().map(c -> {
|
ProcessCatalogueTreeVO vo = new ProcessCatalogueTreeVO();
|
Long id = Long.valueOf(c.getId().equals(BladeConstant.TOP_PARENT_ID) ? c.getId().longValue() + RANDOM_ID.longValue() : c.getId().longValue());
|
vo.setId(id);
|
vo.setParentId(c.getParentId());
|
vo.setName(c.getName());
|
vo.setCode(c.getName());
|
vo.setIsProcess(false);
|
return vo;
|
}).collect(Collectors.toList());
|
tree.addAll(res);
|
List<Long> catalogueIds = catalogueList.stream().map((v0) -> {
|
return v0.getId();
|
}).collect(Collectors.toList());
|
List<DncArtBag> dncArtBags = this.artBagService.list(Wrappers.lambdaQuery(DncArtBag.class).in((v0) -> {
|
return v0.getCatalogueId();
|
}, catalogueIds));
|
if (Func.isNotEmpty(dncArtBags)) {
|
List<ProcessCatalogueTreeVO> bagRes = dncArtBags.stream().map(c2 -> {
|
ProcessCatalogueTreeVO vo = new ProcessCatalogueTreeVO();
|
vo.setId(c2.getId());
|
Long parentId = Long.valueOf(c2.getCatalogueId().equals(BladeConstant.TOP_PARENT_ID) ? c2.getCatalogueId().longValue() + RANDOM_ID.longValue() : c2.getCatalogueId().longValue());
|
vo.setParentId(parentId);
|
vo.setName(c2.getName());
|
vo.setCode(c2.getName());
|
vo.setIsProcess(false);
|
return vo;
|
}).collect(Collectors.toList());
|
tree.addAll(bagRes);
|
List<Long> bagIds = dncArtBags.stream().map((v0) -> {
|
return v0.getId();
|
}).collect(Collectors.toList());
|
|
List<DncArtFile> files = this.dncArtFileService.list(Wrappers.lambdaQuery(DncArtFile.class)
|
.in(DncArtFile::getArtBagId, bagIds)
|
.eq(DncArtFile::getFileType, 1)
|
.eq(DncArtFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode()));
|
/*
|
List<DncArtFile> files = this.dncArtFileService.list((Wrapper) ((LambdaQueryWrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery(DncArtFile.class).in((v0) -> {
|
return v0.getArtBagId();
|
}, bagIds)).eq((v0) -> {
|
return v0.getFileType();
|
}, 1)).eq((v0) -> {
|
return v0.getIsCurrent();
|
}, DncEnums.CurrentVersion.YES.getCode()));
|
*/
|
if (Func.isNotEmpty(files)) {
|
List<ProcessCatalogueTreeVO> fileRes = files.stream().map(c3 -> {
|
ProcessCatalogueTreeVO vo = new ProcessCatalogueTreeVO();
|
vo.setId(c3.getId());
|
vo.setParentId(c3.getArtBagId());
|
vo.setName(c3.getFilename());
|
vo.setCode(c3.getOriginalFilename());
|
vo.setIsProcess(true);
|
return vo;
|
}).collect(Collectors.toList());
|
tree.addAll(fileRes);
|
}
|
}
|
}
|
return ForestNodeMerger.merge(tree);
|
}
|
|
private void checkName(Long parentId, Long id, String name) {
|
long count = count(Wrappers.<DncProcessCatalogue>lambdaQuery()
|
.eq(DncProcessCatalogue::getParentId, parentId)
|
.eq(DncProcessCatalogue::getName, name)
|
.ne(Func.isNotEmpty(id), DncProcessCatalogue::getId, id));
|
/*
|
long count = count(((LambdaQueryWrapper) ((LambdaQueryWrapper) Wrappers.lambdaQuery().eq((v0) -> {
|
return v0.getParentId();
|
}, parentId)).eq((v0) -> {
|
return v0.getName();
|
}, name)).ne(Func.isNotEmpty(id), (v0) -> {
|
return v0.getId();
|
}, id));*/
|
if (count > 0) {
|
throw new ServiceException(MessageUtils.message("dnc.process.catalogue.name.already.exists", new Object[0]));
|
}
|
}
|
}
|