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 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 ids) { String id = ListUtils.getFirst(ids); Set catalogueIdSets = Sets.newHashSet(listObjs(Wrappers.lambdaQuery().select(DncProcessCatalogue::getId).like(DncProcessCatalogue::getAllPath, id), String::valueOf)); /* Set 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 catalogueIds = catalogueIdSets.stream().map((v0) -> { return Func.toLong(v0); }).collect(Collectors.toList()); removeByIds(catalogueIds); List bagIds = this.artBagService.listObjs(Wrappers.lambdaQuery().select(DncArtBag::getId).in(DncArtBag::getCatalogueId, catalogueIds), bagId -> Long.valueOf(bagId.toString())); /* List 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.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 lazyList(String parentId) { if (Func.isEmpty(parentId)) { parentId = DncConstant.DNC_DEFAULT_PARENT_ID; } List list = list(Wrappers.lambdaQuery().eq(DncProcessCatalogue::getParentId, parentId)); /* List 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 lazyArtBagList(String parentId) { Long groupId = null; if (Func.isEmpty(parentId)) { parentId = DncConstant.DNC_DEFAULT_PARENT_ID; } else { groupId = Long.valueOf(Func.toLong(parentId)); } List voList = new ArrayList<>(); List list = list(Wrappers.lambdaQuery().eq(DncProcessCatalogue::getParentId, parentId)); /* List list = list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getParentId(); }, parentId));*/ if (Func.isNotEmpty(list)) { List 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 groupList = list(); if (Func.isNotEmpty(groupList)) { Map dncProcessCatalogueMap = list().stream().collect(Collectors.toMap((v0) -> { return v0.getId(); }, Function.identity())); if (groupId != null) { List artBagList = this.artBagService.list(Wrappers.lambdaQuery().eq(DncArtBag::getCatalogueId, groupId)); /* List artBagList = this.artBagService.list((Wrapper) Wrappers.lambdaQuery().eq((v0) -> { return v0.getCatalogueId(); }, groupId));*/ if (Func.isNotEmpty(artBagList)) { List 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 artBagTree() { List list = list(); List 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 cateArtBagTree() { List catalogueList = list(); List tree = Lists.newArrayList(); if (Func.isNotEmpty(catalogueList)) { List 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 catalogueIds = catalogueList.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List dncArtBags = this.artBagService.list(Wrappers.lambdaQuery(DncArtBag.class).in((v0) -> { return v0.getCatalogueId(); }, catalogueIds)); if (Func.isNotEmpty(dncArtBags)) { List 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 bagIds = dncArtBags.stream().map((v0) -> { return v0.getId(); }).collect(Collectors.toList()); List files = this.dncArtFileService.list(Wrappers.lambdaQuery(DncArtFile.class) .in(DncArtFile::getArtBagId, bagIds) .eq(DncArtFile::getFileType, 1) .eq(DncArtFile::getIsCurrent, DncEnums.CurrentVersion.YES.getCode())); /* List 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 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.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])); } } }