import _ from 'lodash'
const areaDataInfo=[
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1718816246827048961()|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "区域:流水线_菜单id入参",
"areaUkid": "1705395724894310400",
"logistAreaUkid": "1718816246827048961"
},
"outsideAreaItemList": [],
"primaryGroupIdsList": []
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1718816246822854656()|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "区域:流水线_区域id入参",
"areaUkid": "1699308202510385152",
"logistAreaUkid": "1718816246822854656"
},
"outsideAreaItemList": [],
"primaryGroupIdsList": []
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1718871069979041793()|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "修改指令参数",
"areaUkid": "1718871069979041792",
"logistAreaUkid": "1718871069979041793",
"subAreas": [
{
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200"
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"tableUkids": "32102140#ta"
},
"outsideAreaItemList": [],
"primaryGroupIdsList": []
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1718910209869209600()|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "新增指令参数",
"areaUkid": "1717738606137425920",
"logistAreaUkid": "1718910209869209600",
"subAreas": [
{
"areaName": "新增指令字段逻辑关系",
"areaUkid": "1727967746262192128",
"logistAreaUkid": "1727968082561486848",
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"logistAreaUkid": "1727968843655696384",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048"
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"tableUkids": "32102140#ta"
},
"outsideAreaItemList": [],
"primaryGroupIdsList": []
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1718900731539087360(-1706755683543,2199)|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "通用删除按钮区域",
"areaUkid": "1689116112988119040",
"logistAreaUkid": "1718900731539087360"
},
"outsideAreaItemList": [
{
"areaName": "操作栏区域",
"areaUkid": "1714528533995044864",
"logistAreaUkid": "1718900142663000064",
"subAreas": [
{
"areaName": "新增一行按钮区域",
"areaUkid": "1689117287179329536",
"logistAreaUkid": "1718900406476333056"
},
{
"areaName": "通用删除按钮区域",
"areaUkid": "1689116112988119040",
"logistAreaUkid": "1718900731539087360"
}
]
}
],
"primaryGroupIdsList": [
"-1706755683543,2199"
]
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1749986011406643200(1752625274254245888)|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200"
},
"outsideAreaItemList": [
{
"areaName": "修改指令参数",
"areaUkid": "1718871069979041792",
"logistAreaUkid": "1718871069979041793",
"subAreas": [
{
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200",
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"tableUkids": "32102140#ta"
}
],
"primaryGroupIdsList": [
"1752625274254245888"
]
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1749986011406643200(1752625311386419200)|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200"
},
"outsideAreaItemList": [
{
"areaName": "修改指令参数",
"logistAreaUkid": "1718871069979041793",
"subAreas": [
{
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200"
},
{
"areaName": "操作栏区域_2",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048"
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872"
}
]
}
],
"tableUkids": "32102140#ta"
}
],
"primaryGroupIdsList": [
"1752625311386419200"
]
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1727974201233231872(1752625274254245888,-1706755684577,2199)|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872"
},
"outsideAreaItemList": [
{
"areaName": "修改指令参数",
"areaUkid": "1718871069979041792",
"logistAreaUkid": "1718871069979041793",
"subAreas": [
{
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200"
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"isInitLoad": 1,
"isInvisible": 0,
"isLoop": 0,
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872"
}
]
}
],
"tableUkids": "32102140#ta"
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"primaryGroupIdsList": [
"1752625274254245888",
"-1706755684577,2199"
]
},
{
"menuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"areaNodeId": "area@1727974201233231872(1752625311386419200,-1706755684587,2199)|menu@1718816246814466048(1752171186542493696)",
"areaItem": {
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
},
"outsideAreaItemList": [
{
"areaName": "修改指令参数",
"areaUkid": "1718871069979041792",
"logistAreaUkid": "1718871069979041793",
"subAreas": [
{
"areaName": "修改指令字段逻辑关系",
"areaUkid": "1749985876505243648",
"logistAreaUkid": "1749986011406643200",
},
{
"areaName": "操作栏区域_2",
"areaUkid": "1717465033023930368",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"tableUkids": "32102140#ta"
},
{
"areaName": "操作栏区域_2",
"logistAreaUkid": "1750039760066027520",
"subAreas": [
{
"areaName": "增加一行区域_2",
"areaUkid": "1717466291348684800",
"logistAreaUkid": "1727969233059074048",
},
{
"areaName": "删除区域_2",
"areaUkid": "1717467103810535424",
"logistAreaUkid": "1727974201233231872",
}
]
}
],
"primaryGroupIdsList": [
"1752625311386419200",
"-1706755684587,2199"
]
}
]
const condition={
"targetMenuRecoilId": "menu@1718816246814466048(1752171186542493696)",
"targetAreaUkid": "1718871069979041792",
"sourcePrimaryGroupIdsList": [
"-1706755683543,2199",
"1688758431819468800,1688758431819468800"
]
}
const findTargetArea = (
dataList: any[],
conditions: {
targetMenuRecoilId?: string;
targetAreaUkid?: string;
targetScopeId?: string;
sourcePrimaryGroupIdsList?: string[];
},
) => {
const {
targetMenuRecoilId: menuRecoilId,
targetAreaUkid,
targetScopeId,
sourcePrimaryGroupIdsList,
} = conditions;
if (!menuRecoilId || !targetAreaUkid || !sourcePrimaryGroupIdsList) return undefined;
if (_.isEmpty(dataList)) return undefined;
if (targetScopeId) {
const scopeAreaInfo = _.find(
dataList,
(one) => one?.areaItem?.logistAreaUkid === targetScopeId,
);
if (scopeAreaInfo?.areaItem?.areaUkid === targetAreaUkid) {
return scopeAreaInfo;
} else if (scopeAreaInfo && targetScopeId) {
const childAreaInfoList = _.sortBy(
_.filter(dataList, (one) => {
const idx = _.findIndex(
one?.outsideAreaItemList,
(one2) => one2?.logistAreaUkid === targetScopeId,
);
return idx > -1;
}),
(one) => one?.outsideAreaItemList?.length,
);
const scopeChildAreaInfo = _.find(
childAreaInfoList,
(one) => one?.areaItem?.areaUkid === targetAreaUkid,
);
if (scopeChildAreaInfo) {
return scopeChildAreaInfo;
}
}
}
const idList = [...sourcePrimaryGroupIdsList];
for (let i = 0; i <= (idList ? idList.length : 0); i++) {
const currentIdList = idList ? idList.slice(0, idList.length - i) : [];
let maxIdsListLength = currentIdList?.length;
const filteredList = _.filter(dataList, (one) => {
maxIdsListLength = Math.max(
maxIdsListLength,
one?.primaryGroupIdsList ? one?.primaryGroupIdsList?.length : 0,
);
return (
one.menuRecoilId === menuRecoilId &&
_.isEqual(one?.primaryGroupIdsList!.slice(0, currentIdList.length), currentIdList)
);
});
for (let j = currentIdList?.length; j <= maxIdsListLength; j++) {
const targetArea = _.find(filteredList, (one) => {
return one?.areaItem?.areaUkid === targetAreaUkid && one?.primaryGroupIdsList!.length === j;
});
if (targetArea) return targetArea;
}
}
return undefined
};
const target = findTargetArea(areaDataInfo,condition);
console.log(target,'target')