diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java index f90674f2..6a9ecc8a 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/controller/SarMenuStandardNewController.java @@ -91,7 +91,7 @@ public class SarMenuStandardNewController extends BaseController standardSystemTree() { return Result.success(iSarMenuStandardNewService.standardSystemTree()); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java index 1488dc39..60046a91 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/ISarMenuStandardNewService.java @@ -30,5 +30,5 @@ public interface ISarMenuStandardNewService extends IService SarMenuStandard getMenuStandardById(String menuId); - Object standardSystemTree(); + List standardSystemTree(); } diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java index 6657ac3e..4ec4634f 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarMenuStandard/service/impl/SarMenuStandardNewServiceNewImpl.java @@ -7,10 +7,13 @@ import com.adc.da.slrs.sarMenuStandard.entity.SarMenuStandardNew; import com.adc.da.slrs.sarMenuStandard.service.ISarMenuStandardNewService; import com.adc.da.slrs.sarResource.dao.TsResourceDao; import com.adc.da.slrs.sarRole.dao.TsRoleDao; +import com.adc.da.slrs.sarStandMenu.dao.SarStandMenuDao; import com.adc.da.slrs.sarStandMenu.entity.SarStandMenu; import com.adc.da.slrs.sarStandMenu.service.ISarStandMenuService; import com.adc.da.sys.sarMenuStandard.dao.SarMenuStandardDao; import com.adc.da.sys.sarMenuStandard.entity.SarMenuStandard; +import com.adc.da.sys.sarMenuStandard.entity.StandMenuRelation; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.LoginUserUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -49,6 +52,8 @@ public class SarMenuStandardNewServiceNewImpl extends ServiceImpl standardSystemTree() { + // 构造树 + List TsResources; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DIC_ID", "9m4qqqaansxmox5e82zm"); + queryWrapper.eq("VALID_FLAG", 0); + queryWrapper.isNull("PARENT_ID"); + queryWrapper.orderByAsc("DISPLAY_SEQ"); + TsResources = dao.selectList(queryWrapper); - // 查询数据 - return null; + for (SarMenuStandard resource : TsResources) { + resource.setTreeType("sarMs"); + QueryWrapper TsResourceQueryWrapper = new QueryWrapper<>(); + TsResourceQueryWrapper.like("PARENT_IDS", resource.getId()); + TsResourceQueryWrapper.eq("VALID_FLAG", 0); + TsResourceQueryWrapper.orderByAsc("DISPLAY_SEQ"); + List children = dao.selectList(TsResourceQueryWrapper); + resource.setChildren(recursionGetListChildrenStand((resource), (children))); + } + // 把所有关联表中的数据拉出来 + // 国标 + List gbStandMenu = sarStandMenuDao.getGBStandMenu().stream().filter(sarStandMenu -> sarStandMenu.getMenuId().length() > 30).collect(Collectors.toList()); + List gbRelations = BeanCopyUtils.copyBeanList(gbStandMenu, StandMenuRelation.class); + + // 外标 + List fbStandMenu = sarStandMenuDao.getFBStandMenu().stream().filter(sarStandMenu -> sarStandMenu.getMenuId().length() > 30).collect(Collectors.toList()); + List fbRelations = BeanCopyUtils.copyBeanList(fbStandMenu, StandMenuRelation.class); + + // 企标 + List esStandMenu = sarBussStandMenuService.list().stream().filter(sarBussStandMenu -> sarBussStandMenu.getMenuId().length() > 30).collect(Collectors.toList()); + List esRelations = BeanCopyUtils.copyBeanList(esStandMenu, StandMenuRelation.class); + // 计算每个节点的数值 + TsResources.get(0).calculateAndSetCounts(gbRelations, fbRelations, esRelations); + // 拼接返回 + return TsResources; } @Override diff --git a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java index ccda4edd..7d0c9b55 100644 --- a/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java +++ b/adc-da-slrs/src/main/java/com/adc/da/slrs/sarStandMenu/dao/SarStandMenuDao.java @@ -31,4 +31,8 @@ public interface SarStandMenuDao extends BaseMapper { List getMenuByStandId(SarStandMenu sarStandMenu); + List getGBStandMenu(); + + List getFBStandMenu(); + } diff --git a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml index 5197d677..0b950d39 100644 --- a/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml +++ b/adc-da-slrs/src/main/resources/mybatis/mapper/SarStandMenu/SarStandMenuMapper.xml @@ -144,5 +144,17 @@ + + + + diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java index 7cea639d..6b9c6fa4 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/SarMenuStandard.java @@ -107,4 +107,38 @@ public class SarMenuStandard extends BaseEntity { @TableField(exist = false) private String treeType; + @TableField(exist = false) + private Integer gbStandCount; + + @TableField(exist = false) + private Integer fbStandCount; + + @TableField(exist = false) + private Integer esStandCount; + + // 添加用于计算和设置关联关系数量的方法 + // 添加用于计算和设置关联关系数量的方法 + public void calculateAndSetCounts(List gbStandMenu, List fbStandMenu, List esStandMenu) { + this.gbStandCount = countMatches(gbStandMenu, this.id); + this.fbStandCount = countMatches(fbStandMenu, this.id); + this.esStandCount = countMatches(esStandMenu, this.id); + + for (SarMenuStandard child : children) { + child.calculateAndSetCounts(gbStandMenu, fbStandMenu, esStandMenu); + this.gbStandCount += child.gbStandCount; + this.fbStandCount += child.fbStandCount; + this.esStandCount += child.esStandCount; + } + } + + private int countMatches(List standMenuList, String menuId) { + int count = 0; + // 计算与menuId匹配的项的数量 + for (StandMenuRelation standMenu : standMenuList) { + if (standMenu.getMenuId().equals(menuId)) { + count++; + } + } + return count; + } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/StandMenuRelation.java b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/StandMenuRelation.java new file mode 100644 index 00000000..79ba70ec --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/sarMenuStandard/entity/StandMenuRelation.java @@ -0,0 +1,16 @@ +package com.adc.da.sys.sarMenuStandard.entity; + +import lombok.Data; + +/** + * @author: Mzaxd + * @Date: 2023/11/14 16:31 + */ +@Data +public class StandMenuRelation { + + private String standId; + + private String menuId; + +} diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java b/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java new file mode 100644 index 00000000..a0018525 --- /dev/null +++ b/adc-da-sys/src/main/java/com/adc/da/sys/util/BeanCopyUtils.java @@ -0,0 +1,36 @@ +package com.adc.da.sys.util; + +import org.springframework.beans.BeanUtils; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author Mzaxd + * @since 2022-11-22 15:36 + */ +public class BeanCopyUtils { + + private BeanCopyUtils() { + } + + public static V copyBean(Object source, Class clazz){ + V result = null; + //创建目标对象 + try { + result = clazz.newInstance(); + //实现属性copy + BeanUtils.copyProperties(source, result); + } catch (Exception e) { + e.printStackTrace(); + } + //返回结果 + return result; + } + + public static List copyBeanList(List list, Class clazz) { + return list.stream() + .map(o -> copyBean(o, clazz)) + .collect(Collectors.toList()); + } +}