| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gs.simple.common.ResultDto; |
| | | import com.gs.simple.domain.Children; |
| | | import com.gs.simple.domain.MesSimplesimple; |
| | | import com.gs.simple.domain.TreeView; |
| | | import com.gs.simple.domain.*; |
| | | import com.gs.simple.mapper.BiViewMapper; |
| | | import com.gs.simple.mapper.MesSimpleMapper; |
| | | import com.gs.simple.service.MesSimpleService; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import com.gs.simple.domain.BiView; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | |
| | | import java.util.concurrent.Executors; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author 28567 |
| | | * @description 针对表【MES_SIMPLE(菜单维护表)】的数据库操作Service实现 |
| | | * @createDate 2023-11-08 14:19:52 |
| | | */ |
| | | @Service |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @RequiredArgsConstructor |
| | | public class MesSimpleServiceImpl extends ServiceImpl<MesSimpleMapper, MesSimplesimple> implements MesSimpleService { |
| | | |
| | | |
| | | // 创建一个包含10个线程的线程池,用于数据库操作 |
| | | private final BiViewMapper biViewMapper; |
| | | private final Executor dbExecutor = Executors.newFixedThreadPool(10); |
| | | |
| | | @Override |
| | | public ResultDto<List<TreeView>> getTree() { |
| | | List<TreeView> tree = toTree(); |
| | |
| | | return convertToTreeViewList(getTopList()); |
| | | } |
| | | |
| | | //GetTree树形 |
| | | @Override |
| | | public ResultDto<List<MesSimplesimple>> getMenuList() { |
| | | public ResultDto getMenuList() { |
| | | LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(MesSimplesimple::getDisabled, 0).gt(MesSimplesimple::getIsTop, 0); |
| | | List<MesSimplesimple> list = list(wrapper); |
| | | return ResultDto.ok(list, list.size()); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * 获取根节点 |
| | | * </p> |
| | | * |
| | | * @return java.util.List<com.gs.simple.domain.MesSimplesimple> |
| | | * @author tjx |
| | | * @date 2023/11/8 14:39 |
| | | */ |
| | | //List列表 |
| | | // @Override |
| | | // public ResultDto<List<MesSimplesimple>> getMenuList() { |
| | | // LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>(); |
| | | // wrapper.eq(MesSimplesimple::getDisabled, 0) |
| | | // .gt(MesSimplesimple::getIsTop, 0) |
| | | // .orderByAsc(MesSimplesimple::getIsTop); |
| | | // |
| | | // List<MesSimplesimple> list = list(wrapper); |
| | | // |
| | | // |
| | | // return ResultDto.ok(list, list.size()); |
| | | // } |
| | | |
| | | |
| | | @Override |
| | | public ResultDto<List<BiView>> getBiViewsByMenuId(Integer menuId) { |
| | | |
| | | LambdaQueryWrapper<BiView> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(BiView::getPid, menuId) |
| | | .isNotNull(BiView::getHref); |
| | | List<BiView> list = biViewMapper.selectList(wrapper); |
| | | |
| | | if (!list.isEmpty()) { |
| | | LambdaQueryWrapper<MesSimplesimple> simpleWrapper = new LambdaQueryWrapper<>(); |
| | | simpleWrapper.eq(MesSimplesimple::getId, menuId); |
| | | MesSimplesimple simple = getOne(simpleWrapper); |
| | | if (simple != null) { |
| | | list.forEach(biView -> biView.setLbtime(simple.getLbtime())); |
| | | } |
| | | } |
| | | return ResultDto.ok(list, list.size()); |
| | | } |
| | | |
| | | private List<MesSimplesimple> getTopList() { |
| | | LambdaQueryWrapper<MesSimplesimple> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(MesSimplesimple::getIsTop, 0).eq(MesSimplesimple::getDisabled, 0); |
| | | return list(queryWrapper); |
| | | } |
| | | |
| | | // 将MesSimplesimple列表转换为TreeView列表 |
| | | private List<TreeView> convertToTreeViewList(List<MesSimplesimple> mesSimplesimpleList) { |
| | | // 使用CompletableFuture异步处理每个MesSimplesimple对象,并收集为一个CompletableFuture列表 |
| | | List<CompletableFuture<TreeView>> treeViewFutures = mesSimplesimpleList.stream().map(mesSimplesimple -> convertToTreeViewAsync(mesSimplesimple, dbExecutor)).toList(); |
| | | List<CompletableFuture<TreeView>> treeViewFutures = mesSimplesimpleList.stream() |
| | | .map(mesSimplesimple -> convertToTreeViewAsync(mesSimplesimple, dbExecutor)) |
| | | .toList(); |
| | | |
| | | // 创建一个CompletableFuture,等待所有异步任务完成 |
| | | CompletableFuture<Void> allFutures = CompletableFuture.allOf(treeViewFutures.toArray(new CompletableFuture[0])); |
| | | |
| | | // 在所有异步任务完成后,将结果收集为一个TreeView列表 |
| | | return allFutures.thenApply(v -> treeViewFutures.stream().map(CompletableFuture::join).collect(Collectors.toList())).join(); |
| | | return allFutures.thenApply(v -> treeViewFutures.stream() |
| | | .map(CompletableFuture::join) |
| | | .collect(Collectors.toList())) |
| | | .join(); |
| | | } |
| | | |
| | | // 将MesSimplesimple对象转换为TreeView对象,并使用自定义线程池执行异步任务 |
| | | private CompletableFuture<TreeView> convertToTreeViewAsync(MesSimplesimple mesSimplesimple, Executor executor) { |
| | | return CompletableFuture.supplyAsync(() -> convertToTreeView(mesSimplesimple), executor); |
| | | } |
| | |
| | | treeView.setField(mesSimplesimple.getField()); |
| | | treeView.setSpread(mesSimplesimple.getSpread() == 1); |
| | | |
| | | //搜索子节点 |
| | | LambdaQueryWrapper<MesSimplesimple> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(MesSimplesimple::getDisabled, 0).eq(MesSimplesimple::getFid, mesSimplesimple.getId()); |
| | | List<MesSimplesimple> list = list(wrapper); |
| | |
| | | children.setId(s.getId()); |
| | | children.setTitle(s.getTitle()); |
| | | children.setField(s.getField()); |
| | | if ("轮播".equals(s.getHref())) { |
| | | children.setHref("bi_view.html?menuId=" + s.getId() + "&lbsj=" + s.getLbtime()); // 跳转到中间页面 |
| | | } else { |
| | | children.setHref(s.getHref()); |
| | | } |
| | | childrenList.add(children); |
| | | }); |
| | | treeView.setChildren(childrenList); |
| | |
| | | return treeView; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |