package cc.mrbird.febs.ai.controller.product; import cc.mrbird.febs.ai.entity.*; import cc.mrbird.febs.ai.res.AdminMoveChooseInfoVo; import cc.mrbird.febs.ai.service.*; import cc.mrbird.febs.common.entity.FebsConstant; import cc.mrbird.febs.common.utils.FebsUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; /** * @author Administrator */ @Controller("AiProductView") @RequestMapping(FebsConstant.VIEW_PREFIX + "modules/ai/product") @RequiredArgsConstructor public class ViewController { private final AiProductService aiProductService; private final AiProductPointLinkService aiProductPointLinkService; private final AiProductPointService aiProductPointService; private final AiProductRoleLinkService aiProductRoleLinkService; private final AiProductQuestionLinkService aiProductQuestionLinkService; private final AiProductQuestionService aiProductQuestionService; private final AiProductRoleService aiProductRoleService; @GetMapping("list") @RequiresPermissions("productList:view") public String memberRoleList() { return FebsUtil.view("modules/ai/product/list"); } @GetMapping(value = "/add") @RequiresPermissions("productList:add") public String artAdd() { return FebsUtil.view("modules/ai/product/add"); } @GetMapping("info/{id}") @RequiresPermissions("productList:info") public String artInfo(@PathVariable String id, Model model) { AiProduct entity = aiProductService.getById(id); model.addAttribute("aiProduct", entity); return FebsUtil.view("modules/ai/product/info"); } @GetMapping("pointSet/{id}") @RequiresPermissions("productList:pointSet") public String pointSet(@PathVariable String id, Model model) { List vos = new ArrayList<>(); Set productIds = new HashSet<>(); AiProduct entity = aiProductService.getById(id); String companyId = entity.getCompanyId(); if(ObjectUtil.isNotNull(entity)){ //右侧数据 LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductPointLink.class); if(StrUtil.isNotEmpty(id)){ query.eq(AiProductPointLink::getProductId, id); query.eq(AiProductPointLink::getCompanyId, companyId); } List selectedList = aiProductPointLinkService.selectListByQuery(query); if(CollUtil.isNotEmpty(selectedList)){ //stream流操作happyMemberLabelRecords,获取memberId的set集合 productIds = selectedList.stream().map(AiProductPointLink::getProductPointId).collect(Collectors.toSet()); } //左侧数据 List allList = aiProductPointService.pointTree(companyId); if(CollUtil.isNotEmpty(allList)){ //stream流操作mallMembers,生成一个新的List vos = allList.stream().map(AiProductPoint -> { AdminMoveChooseInfoVo vo = new AdminMoveChooseInfoVo(); vo.setId(AiProductPoint.getId()); vo.setName(AiProductPoint.getTitle()); return vo; }).collect(Collectors.toList()); } } model.addAttribute("pointAll", vos); model.addAttribute("pointSelected", productIds); model.addAttribute("chooseId", id); return FebsUtil.view("modules/ai/product/pointSet"); } @GetMapping("productRoleSet/{id}") @RequiresPermissions("productList:productRoleSet") public String productRoleSet(@PathVariable String id, Model model) { List vos = new ArrayList<>(); Set productIds = new HashSet<>(); AiProduct entity = aiProductService.getById(id); String companyId = entity.getCompanyId(); if(ObjectUtil.isNotNull(entity)){ //右侧数据 LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductRoleLink.class); if(StrUtil.isNotEmpty(id)){ query.eq(AiProductRoleLink::getProductId, id); query.eq(AiProductRoleLink::getCompanyId, companyId); } List selectedList = aiProductRoleLinkService.selectListByQuery(query); if(CollUtil.isNotEmpty(selectedList)){ //stream流操作happyMemberLabelRecords,获取memberId的set集合 productIds = selectedList.stream().map(AiProductRoleLink::getProductRoleId).collect(Collectors.toSet()); } //左侧数据 List allList = aiProductRoleService.productRoleTree(companyId); if(CollUtil.isNotEmpty(allList)){ //stream流操作mallMembers,生成一个新的List vos = allList.stream().map(AiProductRole -> { AdminMoveChooseInfoVo vo = new AdminMoveChooseInfoVo(); vo.setId(AiProductRole.getId()); vo.setName(AiProductRole.getName()); return vo; }).collect(Collectors.toList()); } } model.addAttribute("productRoleAll", vos); model.addAttribute("productRoleSelected", productIds); model.addAttribute("chooseId", id); return FebsUtil.view("modules/ai/product/productRoleSet"); } @GetMapping("productQuestionSet/{id}") @RequiresPermissions("productList:productQuestionSet") public String productQuestionSet(@PathVariable String id, Model model) { List vos = new ArrayList<>(); Set productIds = new HashSet<>(); AiProduct entity = aiProductService.getById(id); String companyId = entity.getCompanyId(); if(ObjectUtil.isNotNull(entity)){ //右侧数据 LambdaQueryWrapper query = Wrappers.lambdaQuery(AiProductQuestionLink.class); if(StrUtil.isNotEmpty(id)){ query.eq(AiProductQuestionLink::getProductId, id); query.eq(AiProductQuestionLink::getCompanyId, companyId); } List selectedList = aiProductQuestionLinkService.selectListByQuery(query); if(CollUtil.isNotEmpty(selectedList)){ //stream流操作happyMemberLabelRecords,获取memberId的set集合 productIds = selectedList.stream().map(AiProductQuestionLink::getProductQuestionId).collect(Collectors.toSet()); } //左侧数据 LambdaQueryWrapper aiProductQuestionLambdaQueryWrapper = Wrappers.lambdaQuery(AiProductQuestion.class); aiProductQuestionLambdaQueryWrapper.eq(AiProductQuestion::getProductCategoryId, entity.getProductCategoryId()); aiProductQuestionLambdaQueryWrapper.eq(AiProductQuestion::getState, 1); aiProductQuestionLambdaQueryWrapper.eq(AiProductQuestion::getCompanyId, companyId); List allList = aiProductQuestionService.productQuestionTree(aiProductQuestionLambdaQueryWrapper); if(CollUtil.isNotEmpty(allList)){ //stream流操作mallMembers,生成一个新的List vos = allList.stream().map(AiProductQuestion -> { AdminMoveChooseInfoVo vo = new AdminMoveChooseInfoVo(); vo.setId(AiProductQuestion.getId()); vo.setName(AiProductQuestion.getTitle()); return vo; }).collect(Collectors.toList()); } } model.addAttribute("productQuestionAll", vos); model.addAttribute("productQuestionSelected", productIds); model.addAttribute("chooseId", id); return FebsUtil.view("modules/ai/product/productQuestionSet"); } }