package org.jeecg.modules.dnc.service.impl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import org.apache.shiro.SecurityUtils;
|
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.modules.dnc.entity.ProductMix;
|
import org.jeecg.modules.dnc.mapper.ProductMixMapper;
|
import org.jeecg.modules.dnc.service.IPermissionStreamNewService;
|
import org.jeecg.modules.dnc.service.IProductMixService;
|
import org.jeecg.modules.dnc.utils.TreeBuilder;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.*;
|
|
@Service
|
public class ProductMixServiceImpl extends ServiceImpl<ProductMixMapper, ProductMix> implements IProductMixService {
|
|
@Autowired
|
private IPermissionStreamNewService permissionStreamNewService;
|
|
@Override
|
public List<ProductMix> getTree() {
|
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
List<ProductMix> rawData = new ArrayList<>();
|
if (loginUser.getUsername().equals("admin")) {
|
//不需要权限过滤
|
rawData=permissionStreamNewService.loadProductMixAll(loginUser.getId());
|
}else{
|
//需要权限过滤
|
String productIds = loginUser.getProductionIds();
|
if (productIds != null && !productIds.isEmpty()) {
|
List<String> productIdList = Arrays.asList(productIds.split(","));
|
rawData = permissionStreamNewService.loadProductMix(loginUser.getId(),productIdList);
|
}
|
}
|
TreeBuilder builder = new TreeBuilder();
|
TreeBuilder.CleanResult cleanResult = builder.preprocessData(rawData);
|
List<ProductMix> sorted = builder.topologicalSort(
|
cleanResult.getValidNodes(),
|
cleanResult.getNodeMap()
|
);
|
List<ProductMix> result =builder.assembleTree(sorted, cleanResult.getNodeMap());
|
result.sort(Comparator.comparing(ProductMix::getCreateTime, Comparator.nullsLast(Date::compareTo)));
|
return result;
|
}
|
}
|