Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
57543ed6
提交
57543ed6
authored
12月 20, 2025
作者:
yanpeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
api-5
上级
52826e66
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
2792 行增加
和
218 行删除
+2792
-218
exportControl.js
src/api/exportControl.js
+91
-0
fishbone-mock.json
...iews/exportControl/analysis/components/fishbone-mock.json
+11
-7
influencePanel1.vue
...ews/exportControl/analysis/components/influencePanel1.vue
+154
-33
influencePanel2.vue
...ews/exportControl/analysis/components/influencePanel2.vue
+1
-1
panel2.vue
src/views/exportControl/analysis/components/panel2.vue
+2
-2
pieCharts.vue
src/views/exportControl/analysis/components/pieCharts.vue
+1
-1
overview.vue
src/views/exportControl/analysis/content/overview.vue
+96
-168
dialog.vue
src/views/exportControl/components/dialog.vue
+3
-1
index.vue
src/views/exportControl/index.vue
+18
-4
charts.js
src/views/exportControl/utils/charts.js
+3
-1
出口管制接口-4.md
出口管制接口-4.md
+1358
-0
出口管制接口.xlsx
出口管制接口.xlsx
+0
-0
出口管制接口new.md
出口管制接口new.md
+1054
-0
没有找到文件。
src/api/exportControl.js
浏览文件 @
57543ed6
...
@@ -353,6 +353,24 @@ export function getEntitiesCountBy50PercentRules(
...
@@ -353,6 +353,24 @@ export function getEntitiesCountBy50PercentRules(
);
);
}
}
/**
* 获取前序事件
*/
// /entitiesDataInfo/precedingEvents
export
function
getPrecedingEvents
(
startTime
=
"2025-11-11"
,
pageNum
=
1
,
pageSize
=
10
)
{
return
request200
(
request
({
method
:
"POST"
,
url
:
"/api/entitiesDataInfo/precedingEvents"
,
data
:
{
sanctionDate
:
startTime
,
pageNum
,
pageSize
}
})
);
}
/**
/**
* 领域分布查询
* 领域分布查询
*/
*/
...
@@ -745,3 +763,76 @@ export function getKeyListedEntityList(date, keyword = "") {
...
@@ -745,3 +763,76 @@ export function getKeyListedEntityList(date, keyword = "") {
})
})
);
);
}
}
/**
* 获取科学仪器对美依赖数量
*/
export
function
getScientificInstrumentDependencyCount
(
orgIds
=
"12100000400012916R,121000004013595328,12100000435230200R"
)
{
return
request200
(
request
({
method
:
"GET"
,
url
:
"/api/instrument/getDependencyUS"
,
params
:
{
orgIds
}
})
);
}
/**
* 科学仪器近十年对美依赖度升高风险分析
* url: /instrument/getDependencyUSRisk
*/
export
function
getScientificInstrumentDependencyRisk
()
{
return
request200
(
request
({
method
:
"GET"
,
url
:
"/api/instrument/getDependencyUSRisk"
})
);
}
/**
* 科学仪器近十年国产化数量统计
* url:/instrument/getLocalizationRisk
*/
export
function
getScientificInstrumentLocalizationRisk
()
{
return
request200
(
request
({
method
:
"GET"
,
url
:
"/api/instrument/getLocalizationRisk"
})
);
}
/**
* 科学仪器进口国统计
* url: /instrument/getOriginCount
*/
export
function
getScientificInstrumentOriginCount
(
orgIds
=
"12100000400012916R,121000004013595328,12100000435230200R"
)
{
return
request200
(
request
({
method
:
"GET"
,
url
:
"/api/instrument/getOriginCount"
,
params
:
{
orgIds
}
})
);
}
/**
* 新增科研机构列表
* url: /entitiesDataInfo/scientificImpact/entityList
*/
export
function
getScientificImpactEntityList
(
startTime
)
{
return
request200
(
request
({
method
:
"GET"
,
url
:
"/api/entitiesDataInfo/scientificImpact/entityList"
,
params
:
{
sanctionDate
:
startTime
||
"2025-11-11"
}
})
);
}
src/views/exportControl/analysis/components/fishbone-mock.json
浏览文件 @
57543ed6
[
[
{
{
"id"
:
86
,
"name"
:
"美国"
,
"name"
:
"人工智能"
,
"count"
:
0.37960339943342775
"nameZh"
:
"人工智能"
,
},
"description"
:
null
,
{
"parentId"
:
null
,
"name"
:
"德国"
,
"isMainBranch"
:
"Y"
,
"count"
:
0.20113314447592068
"children"
:
null
},
{
"name"
:
"日本"
,
"count"
:
0.1558073654390935
}
}
]
]
\ No newline at end of file
src/views/exportControl/analysis/components/influencePanel1.vue
浏览文件 @
57543ed6
...
@@ -99,6 +99,13 @@ import college9 from "../../assets/images/college9.png";
...
@@ -99,6 +99,13 @@ import college9 from "../../assets/images/college9.png";
import
college10
from
"../../assets/images/college10.png"
;
import
college10
from
"../../assets/images/college10.png"
;
import
college11
from
"../../assets/images/college11.png"
;
import
college11
from
"../../assets/images/college11.png"
;
import
{
getHorizontalBarChart1
,
getPieOption2
,
getMultipleLineChart
}
from
"../../utils/charts"
;
import
{
getHorizontalBarChart1
,
getPieOption2
,
getMultipleLineChart
}
from
"../../utils/charts"
;
import
{
getScientificImpactEntityList
,
getScientificInstrumentDependencyCount
,
getScientificInstrumentDependencyRisk
,
getScientificInstrumentLocalizationRisk
,
getScientificInstrumentOriginCount
}
from
"@/api/exportControl"
;
const
selectOptions
=
[
const
selectOptions
=
[
{
{
value
:
1
,
value
:
1
,
...
@@ -170,39 +177,153 @@ const horizontalBarOptions = shallowRef({});
...
@@ -170,39 +177,153 @@ const horizontalBarOptions = shallowRef({});
const
pieOptions2
=
shallowRef
({});
const
pieOptions2
=
shallowRef
({});
const
multipleLineOptions1
=
shallowRef
({});
const
multipleLineOptions1
=
shallowRef
({});
const
multipleLineOptions2
=
shallowRef
({});
const
multipleLineOptions2
=
shallowRef
({});
onMounted
(()
=>
{
// 获取仪器对美依赖度升高风险分析数据
horizontalBarOptions
.
value
=
getHorizontalBarChart1
(
const
fetchDependencyRiskData
=
async
()
=>
{
[
"地球探测仪器"
,
"计算机及其配套设备"
,
"天文仪器"
,
"分析仪器"
,
"核仪器"
,
"物理性能测试仪器"
,
"医学科研仪器"
],
try
{
[
10
,
10
,
21
,
25
,
79
,
95
,
109
],
const
data
=
await
getScientificInstrumentDependencyRisk
();
false
if
(
data
&&
data
.
instrumentCountList
&&
Array
.
isArray
(
data
.
instrumentCountList
))
{
);
// 提取年份数据(去重并排序)
pieOptions2
.
value
=
getPieOption2
([
const
allYears
=
[...
new
Set
(
data
.
instrumentCountList
.
flatMap
(
item
=>
item
.
countList
.
map
(
c
=>
c
.
year
)))].
sort
();
{
name
:
"美国"
,
value
:
27
},
{
name
:
"日本"
,
value
:
22
},
// 转换数据格式以适应 getMultipleLineChart
{
name
:
"德国"
,
value
:
18
},
const
chartData
=
data
.
instrumentCountList
.
map
(
item
=>
{
{
name
:
"英国"
,
value
:
15
},
// 为每个仪器类型创建完整的年份数据序列
{
name
:
"韩国"
,
value
:
12
},
const
values
=
allYears
.
map
(
year
=>
{
{
name
:
"荷兰"
,
value
:
8
},
const
yearData
=
item
.
countList
.
find
(
c
=>
c
.
year
===
year
);
{
name
:
"其他"
,
value
:
7
}
return
yearData
?
yearData
.
count
:
0
;
]);
});
multipleLineOptions1
.
value
=
getMultipleLineChart
({
dates
:
[
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
return
{
data
:
[
name
:
item
.
name
,
{
name
:
"电子测量仪器"
,
value
:
[
45
,
35
,
25
,
20
,
20
,
14
,
15
,
15
,
23
,
21
]
},
value
:
values
{
name
:
"分析仪器"
,
value
:
[
35
,
33
,
24
,
21
,
22
,
18
,
13
,
19
,
21
,
31
]
},
};
{
name
:
"工艺试验仪器"
,
value
:
[
32
,
22
,
12
,
11
,
14
,
15
,
17
,
13
,
12
,
26
]
},
});
{
name
:
"核仪器"
,
value
:
[
48
,
38
,
28
,
28
,
28
,
18
,
18
,
18
,
28
,
28
]
}
]
// 使用 getMultipleLineChart 生成图表配置
});
multipleLineOptions1
.
value
=
getMultipleLineChart
({
multipleLineOptions2
.
value
=
getMultipleLineChart
({
dates
:
allYears
.
map
(
String
),
// 转换为字符串以匹配原数据格式
dates
:
[
"2016"
,
"2017"
,
"2018"
,
"2019"
,
"2020"
,
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
],
data
:
chartData
data
:
[
});
{
name
:
"电子测量仪器"
,
value
:
[
45
,
35
,
25
,
20
,
20
,
14
,
15
,
15
,
23
,
21
]
},
}
{
name
:
"分析仪器"
,
value
:
[
35
,
33
,
24
,
21
,
22
,
18
,
13
,
19
,
21
,
31
]
},
}
catch
(
error
)
{
{
name
:
"工艺试验仪器"
,
value
:
[
32
,
22
,
12
,
11
,
14
,
15
,
17
,
13
,
12
,
26
]
},
console
.
error
(
"获取仪器对美依赖度升高风险分析数据失败:"
,
error
);
{
name
:
"核仪器"
,
value
:
[
48
,
38
,
28
,
28
,
28
,
18
,
18
,
18
,
28
,
28
]
}
}
]
};
});
// 获取仪器国产化降低风险分析数据
const
fetchLocalizationRiskData
=
async
()
=>
{
try
{
const
data
=
await
getScientificInstrumentLocalizationRisk
();
if
(
data
&&
data
.
instrumentCountList
&&
Array
.
isArray
(
data
.
instrumentCountList
))
{
// 提取年份数据(去重并排序)
const
allYears
=
[...
new
Set
(
data
.
instrumentCountList
.
flatMap
(
item
=>
item
.
countList
.
map
(
c
=>
c
.
year
)))].
sort
();
// 转换数据格式以适应 getMultipleLineChart
const
chartData
=
data
.
instrumentCountList
.
map
(
item
=>
{
// 为每个仪器类型创建完整的年份数据序列
const
values
=
allYears
.
map
(
year
=>
{
const
yearData
=
item
.
countList
.
find
(
c
=>
c
.
year
===
year
);
return
yearData
?
yearData
.
count
:
0
;
});
return
{
name
:
item
.
name
,
value
:
values
};
});
// 使用 getMultipleLineChart 生成图表配置
multipleLineOptions2
.
value
=
getMultipleLineChart
({
dates
:
allYears
.
map
(
String
),
// 转换为字符串以匹配原数据格式
data
:
chartData
});
}
}
catch
(
error
)
{
console
.
error
(
"获取仪器国产化降低风险分析数据失败:"
,
error
);
}
};
// 获取各类别仪器对美依赖情况数据
const
fetchDependencyCountData
=
async
()
=>
{
try
{
const
data
=
await
getScientificInstrumentDependencyCount
();
if
(
data
&&
Array
.
isArray
(
data
))
{
// 按照 count 降序排列
const
sortedData
=
data
.
sort
((
a
,
b
)
=>
a
.
count
-
b
.
count
);
// 提取仪器名称和对应的计数
const
names
=
sortedData
.
map
(
item
=>
item
.
name
);
const
counts
=
sortedData
.
map
(
item
=>
item
.
count
);
// 使用 getHorizontalBarChart1 生成图表配置
horizontalBarOptions
.
value
=
getHorizontalBarChart1
(
names
,
counts
,
false
);
}
}
catch
(
error
)
{
console
.
error
(
"获取各类别仪器对美依赖情况数据失败:"
,
error
);
}
};
// 获取仪器进口国可替代性分析数据
const
fetchOriginCountData
=
async
()
=>
{
try
{
const
data
=
await
getScientificInstrumentOriginCount
();
if
(
data
&&
Array
.
isArray
(
data
))
{
// 转换数据格式以适应 getPieOption2
// 数据结构应该是 [{ name: "国家名", value: 数量 }]
const
pieData
=
data
.
map
(
item
=>
({
name
:
item
.
name
,
value
:
(
item
.
count
*
100
).
toFixed
(
1
)
}));
// 使用 getPieOption2 生成图表配置
pieOptions2
.
value
=
getPieOption2
(
pieData
);
}
}
catch
(
error
)
{
console
.
error
(
"获取仪器进口国可替代性分析数据失败:"
,
error
);
}
};
onMounted
(
async
()
=>
{
// horizontalBarOptions.value = getHorizontalBarChart1(
// ["地球探测仪器", "计算机及其配套设备", "天文仪器", "分析仪器", "核仪器", "物理性能测试仪器", "医学科研仪器"],
// [10, 10, 21, 25, 79, 95, 109],
// false
// );
// pieOptions2.value = getPieOption2([
// { name: "美国", value: 27 },
// { name: "日本", value: 22 },
// { name: "德国", value: 18 },
// { name: "英国", value: 15 },
// { name: "韩国", value: 12 },
// { name: "荷兰", value: 8 },
// { name: "其他", value: 7 }
// ]);
// multipleLineOptions1.value = getMultipleLineChart({
// dates: ["2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"],
// data: [
// { name: "电子测量仪器", value: [45, 35, 25, 20, 20, 14, 15, 15, 23, 21] },
// { name: "分析仪器", value: [35, 33, 24, 21, 22, 18, 13, 19, 21, 31] },
// { name: "工艺试验仪器", value: [32, 22, 12, 11, 14, 15, 17, 13, 12, 26] },
// { name: "核仪器", value: [48, 38, 28, 28, 28, 18, 18, 18, 28, 28] }
// ]
// });
// multipleLineOptions2.value = getMultipleLineChart({
// dates: ["2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025"],
// data: [
// { name: "电子测量仪器", value: [45, 35, 25, 20, 20, 14, 15, 15, 23, 21] },
// { name: "分析仪器", value: [35, 33, 24, 21, 22, 18, 13, 19, 21, 31] },
// { name: "工艺试验仪器", value: [32, 22, 12, 11, 14, 15, 17, 13, 12, 26] },
// { name: "核仪器", value: [48, 38, 28, 28, 28, 18, 18, 18, 28, 28] }
// ]
// });
// 获取各类别仪器对美依赖情况数据
await
fetchDependencyCountData
();
// 获取仪器进口国可替代性分析数据
await
fetchOriginCountData
();
// 获取仪器对美依赖度升高风险分析数据
await
fetchDependencyRiskData
();
// 获取仪器国产化降低风险分析数据
await
fetchLocalizationRiskData
();
});
});
</
script
>
</
script
>
...
...
src/views/exportControl/analysis/components/influencePanel2.vue
浏览文件 @
57543ed6
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
<div
class=
"item"
v-for=
"(item, index) in listData"
:key=
"index"
@
click=
"handleEttClick(item)"
>
<div
class=
"item"
v-for=
"(item, index) in listData"
:key=
"index"
@
click=
"handleEttClick(item)"
>
<div
class=
"index"
:class=
"
{ isTopTen: index
<
10
}"
>
{{
index
+
1
}}
</div>
<div
class=
"index"
:class=
"
{ isTopTen: index
<
10
}"
>
{{
index
+
1
}}
</div>
<div
class=
"name"
>
{{
item
.
name
||
item
.
nameEn
}}
</div>
<div
class=
"name"
>
{{
item
.
name
||
item
.
nameEn
}}
</div>
<div
class=
"icon"
:class=
"
{ iconUp: item.
isUp, iconDown: !item.isUp
}">
</div>
<div
class=
"icon"
:class=
"
{ iconUp: item.
marketChange > 0, iconDown: item.marketChange
<
0
}"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
src/views/exportControl/analysis/components/panel2.vue
浏览文件 @
57543ed6
...
@@ -186,12 +186,12 @@ const fetchEntityFinancing = async () => {
...
@@ -186,12 +186,12 @@ const fetchEntityFinancing = async () => {
// 按日期排序
// 按日期排序
const
sortedData
=
data
const
sortedData
=
data
.
sort
((
a
,
b
)
=>
{
.
sort
((
a
,
b
)
=>
{
return
new
Date
(
a
.
name
)
-
new
Date
(
b
.
name
);
return
new
Date
(
a
.
year
)
-
new
Date
(
b
.
year
);
})
})
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
.
filter
((
item
,
idx
)
=>
idx
%
3
===
0
);
// 提取 x 轴数据(日期)
// 提取 x 轴数据(日期)
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
name
);
const
xAxisData
=
sortedData
.
map
(
item
=>
item
.
year
);
// 提取 y 轴数据(融资数量)
// 提取 y 轴数据(融资数量)
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
const
seriesData
=
sortedData
.
map
(
item
=>
item
.
count
);
...
...
src/views/exportControl/analysis/components/pieCharts.vue
浏览文件 @
57543ed6
...
@@ -30,7 +30,7 @@ onMounted(async () => {
...
@@ -30,7 +30,7 @@ onMounted(async () => {
.
filter
(
item
=>
item
.
count
>
0
)
.
filter
(
item
=>
item
.
count
>
0
)
.
map
(
item
=>
{
.
map
(
item
=>
{
return
{
return
{
name
:
item
?.
domain
,
name
:
item
?.
name
,
value
:
item
?.
count
value
:
item
?.
count
};
};
})
})
...
...
src/views/exportControl/analysis/content/overview.vue
浏览文件 @
57543ed6
...
@@ -92,8 +92,8 @@
...
@@ -92,8 +92,8 @@
家,其中50%规则涉及
家,其中50%规则涉及
<span
class=
"text2"
>
{{
<span
class=
"text2"
>
{{
panel5IsChecked
panel5IsChecked
? entitiesCountBy50PercentRules
Data
?.ruleCount
? entitiesCountBy50PercentRules?.ruleCount
: entitiesCountBy50PercentRules
Data
?.totalCount
: entitiesCountBy50PercentRules?.totalCount
}}
</span>
}}
</span>
家
家
</div>
</div>
...
@@ -160,18 +160,20 @@
...
@@ -160,18 +160,20 @@
</CardCustom>
</CardCustom>
<CardCustom
title=
"美国前序相关制裁、前序相关事件列表"
:style=
"{ width: '600px', height: '678px' }"
>
<CardCustom
title=
"美国前序相关制裁、前序相关事件列表"
:style=
"{ width: '600px', height: '678px' }"
>
<div
class=
"panel6"
>
<div
class=
"panel6"
>
<div
class=
"item"
v-for=
"(item, idx) in panel6"
:key=
"item.title"
>
<div
class=
"panel6-list"
>
<div
class=
"left"
>
<div
class=
"item"
v-for=
"(item, idx) in panel6"
:key=
"item.title"
>
<div
class=
"icon"
></div>
<div
class=
"left"
>
<div
class=
"line"
></div>
<div
class=
"icon"
></div>
</div>
<div
class=
"line"
></div>
<div
class=
"right"
>
</div>
<div
class=
"date"
>
{{ item.time }}
</div>
<div
class=
"right"
>
<div
class=
"title"
>
{{ item.title }}
</div>
<div
class=
"date"
>
{{ item.time }}
</div>
<div
class=
"desc"
>
{{ item.desc }}
</div>
<div
class=
"title"
>
{{ item.title }}
</div>
<div
class=
"desc"
>
{{ item.desc }}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"more"
>
<div
class=
"more"
@
click=
"handleMoreClick"
>
查看更多
查看更多
<span
class=
"moreIcon"
></span>
<span
class=
"moreIcon"
></span>
</div>
</div>
...
@@ -189,21 +191,14 @@ import ButtonList from "@/components/buttonList/buttonList.vue";
...
@@ -189,21 +191,14 @@ import ButtonList from "@/components/buttonList/buttonList.vue";
import
Hint
from
"../components/hint.vue"
;
import
Hint
from
"../components/hint.vue"
;
import
{
onMounted
,
reactive
,
ref
,
shallowRef
,
watch
}
from
"vue"
;
import
{
onMounted
,
reactive
,
ref
,
shallowRef
,
watch
}
from
"vue"
;
import
panel1_1
from
"../../assets/images/panel1_1.png"
;
import
panel1_1
from
"../../assets/images/panel1_1.png"
;
import
panel5_1
from
"../../assets/images/panel5_1.png"
;
import
panel5_2
from
"../../assets/images/panel5_2.png"
;
import
panel5_3
from
"../../assets/images/panel5_3.png"
;
import
panel5_4
from
"../../assets/images/panel5_4.png"
;
import
panel5_5
from
"../../assets/images/panel5_5.png"
;
import
panel5_6
from
"../../assets/images/panel5_6.png"
;
import
panel5_7
from
"../../assets/images/panel5_7.png"
;
import
panel5_8
from
"../../assets/images/panel5_8.png"
;
import
{
import
{
getOrganizationInfo
,
getOrganizationInfo
,
getPersonList
,
getPersonList
,
getSanReasonSelect
,
getSanReasonSelect
,
getSelectEntitiesList
,
getSelectEntitiesList
,
getEntitiesList
,
getEntitiesList
,
getEntitiesCountBy50PercentRules
getEntitiesCountBy50PercentRules
,
getPrecedingEvents
}
from
"@/api/exportControl"
;
}
from
"@/api/exportControl"
;
import
_
from
"lodash"
;
import
_
from
"lodash"
;
...
@@ -212,32 +207,7 @@ import { formatAnyDateToChinese } from "../../utils";
...
@@ -212,32 +207,7 @@ import { formatAnyDateToChinese } from "../../utils";
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
router
=
useRouter
();
const
organizationInfo
=
shallowRef
({});
const
organizationInfo
=
shallowRef
({});
const
personLis
=
shallowRef
([
const
personLis
=
shallowRef
([]);
// {
// name: "吉娜·雷蒙多",
// enName: "Gina Raimondo",
// party: "美国民主党",
// img: panel2_1
// },
// {
// name: "迈克・约翰逊",
// enName: "Mike Johnson",
// party: "美国共和党",
// img: panel2_2
// },
// {
// name: "艾伦·埃斯特韦斯",
// enName: "Alan Estevez",
// party: "美国民主党",
// img: panel2_3
// },
// {
// name: "凯・格兰杰",
// enName: "Kay Granger",
// party: "美国共和党",
// img: panel2_4
// }
]);
const
sanReasonSelect
=
shallowRef
([
const
sanReasonSelect
=
shallowRef
([
{
{
text
:
"获取美国产物项,以支持中国量子技术;"
text
:
"获取美国产物项,以支持中国量子技术;"
...
@@ -276,18 +246,33 @@ const total = ref(0);
...
@@ -276,18 +246,33 @@ const total = ref(0);
const
loading
=
ref
(
false
);
const
loading
=
ref
(
false
);
const
tableWrapRef
=
ref
(
null
);
const
tableWrapRef
=
ref
(
null
);
const
noMoreData
=
ref
(
false
);
const
noMoreData
=
ref
(
false
);
const
entitiesCountBy50PercentRules
=
ref
(
0
);
const
entitiesCountBy50PercentRules
=
ref
({
ruleCount
:
0
,
totalCount
:
0
});
const
precedingEvents
=
shallowRef
([]);
const
panel6
=
ref
([]);
const
panel6CurrentPage
=
ref
(
1
);
const
panel6PageSize
=
ref
(
10
);
const
panel6Loading
=
ref
(
false
);
const
panel6NoMoreData
=
ref
(
false
);
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
try
{
try
{
const
[
organizationInfoData
,
sanReasonSelectData
,
entitiesCountBy50PercentRulesData
]
=
await
Promise
.
all
([
const
[
organizationInfoData
,
sanReasonSelectData
,
entitiesCountBy50PercentRulesData
,
precedingEventsData
]
=
getOrganizationInfo
(),
await
Promise
.
all
([
// getPersonList(),
getOrganizationInfo
(),
getSanReasonSelect
(
route
.
query
.
startTime
),
// getPersonList(),
getEntitiesCountBy50PercentRules
(
"实体清单"
,
currentPage
.
value
,
pageSize
.
value
)
getSanReasonSelect
(
route
.
query
.
startTime
),
// getSelectEntitiesList(route.query.startTime)
getEntitiesCountBy50PercentRules
(
"实体清单"
,
currentPage
.
value
,
pageSize
.
value
),
]);
// getSelectEntitiesList(route.query.startTime),
getPrecedingEvents
(
route
.
query
.
startTime
)
]);
console
.
log
(
"entitiesCountBy50PercentRulesData"
,
entitiesCountBy50PercentRulesData
);
console
.
log
(
"entitiesCountBy50PercentRulesData"
,
entitiesCountBy50PercentRulesData
);
entitiesCountBy50PercentRules
.
value
=
{
ruleCount
:
entitiesCountBy50PercentRulesData
?.
ruleCount
||
0
,
totalCount
:
entitiesCountBy50PercentRulesData
?.
totalCount
||
0
};
organizationInfo
.
value
=
{
organizationInfo
.
value
=
{
img
:
panel1_1
,
img
:
panel1_1
,
mingcheng
:
organizationInfoData
?.
orgNameZh
,
mingcheng
:
organizationInfoData
?.
orgNameZh
,
...
@@ -307,18 +292,12 @@ onMounted(async () => {
...
@@ -307,18 +292,12 @@ onMounted(async () => {
return
{
text
:
item
};
return
{
text
:
item
};
});
});
// selectEntitiesList.value = _.map(selectEntitiesListData, item => {
precedingEvents
.
value
=
precedingEventsData
.
content
||
[];
// return {
panel6
.
value
=
precedingEventsData
.
content
.
map
(
item
=>
({
// name: item?.entityNameZh,
...
item
,
// domains: item.techDomainList,
time
:
formatAnyDateToChinese
(
item
.
eventTime
),
// address: "--",
desc
:
item
.
summary
||
"--"
// time: formatAnyDateToChinese(item?.startTime),
}));
// isUp: true,
// revenue: "--",
// subCompany: "--",
// img: ""
// };
// });
// 初始化加载第一页数据
// 初始化加载第一页数据
await
fetchEntitiesList
(
currentPage
.
value
,
pageSize
.
value
);
await
fetchEntitiesList
(
currentPage
.
value
,
pageSize
.
value
);
...
@@ -427,108 +406,10 @@ const panel5TypeMap = {
...
@@ -427,108 +406,10 @@ const panel5TypeMap = {
通信网络
:
"warning"
,
通信网络
:
"warning"
,
航空航天
:
"success"
航空航天
:
"success"
};
};
const
panel5MockData
=
[
{
name
:
"科大讯飞股份有限公司"
,
domains
:
[
"人工智能"
],
address
:
"深圳"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"讯飞智元信息科技...等15家>"
,
img
:
panel5_1
},
{
name
:
"华为技术有限公司"
,
domains
:
[
"通信网络"
],
address
:
"--"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"海思半导体有限公...等15家>"
,
img
:
panel5_2
},
{
name
:
"中国航空工业集团"
,
domains
:
[
"航空航天"
],
address
:
"--"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"中航科技控股有限...等15家>"
,
img
:
panel5_3
},
{
name
:
"杭州海康威视有限公司"
,
domains
:
[
"航空航天"
],
address
:
"深圳"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"海云智能科技有限...等15家>"
,
img
:
panel5_4
},
{
name
:
"浪潮集团有限公司"
,
domains
:
[
"人工智能"
],
address
:
"--"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"浪潮商用机器有限...等15家>"
,
img
:
panel5_5
},
{
name
:
"中兴通讯股份有限公司"
,
domains
:
[
"航空航天"
],
address
:
"深圳"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"中融讯合通信设备...等15家>"
,
img
:
panel5_6
},
{
name
:
"大疆创新科技有限公司"
,
domains
:
[
"人工智能"
],
address
:
"--"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"大疆智能计算服务...等15家>"
,
img
:
panel5_7
},
{
name
:
"艾睿中国电子贸易有限公司"
,
domains
:
[
"航空航天"
],
address
:
"上海"
,
time
:
"2025年9月"
,
isUp
:
true
,
revenue
:
"325"
,
subCompany
:
"讯飞智元信息科技...等15家>"
,
img
:
panel5_8
}
];
// 历次制裁过程
const
panel6
=
ref
([
{
time
:
"2025-09-02"
,
title
:
"传感器和仪器仪表技术咨询委员会将于2024年5月9日召开部分闭门会议"
,
desc
:
"传感器与仪器仪表技术咨询委员会(以下简称“委员会”)将于美国东部夏令时间2024年5月9日星期四下午1:00至2:30召开会议。本次会议将通过微软团队(MS Teams)以线上形式举行。根据美国商务部第10-16号《部门组织》文件。"
},
{
time
:
"2025-04-17"
,
title
:
"美国对华加征关税至20%并扩大科技制裁"
,
desc
:
'美国以"芬太尼问题"为由提高对华关税至20%,恢复钢铁铝关税;同时推动《恢复贸易公平法案》,计划对中国商品征收100%关税。系统性打压中国高科技产业,关税措施实质为经济勒索。'
},
{
time
:
"2025-04-17"
,
title
:
"中美关税战升级至125%与反制措施"
,
desc
:
'美国将对华关税从34%提升至84%(总税率104%),中方同步对美商品加征同等税率,并暂停进口美国影片、限制留学合作。特朗普政府通过"基准关税+对等关税+额外加征"策略施压,引发全球供应链震荡。'
}
]);
const
handleOrgClick
=
item
=>
{
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
console
.
log
(
item
);
if
(
item
.
entityType
!=
2
)
return
;
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
path
:
"/companyPages"
,
query
:
{
query
:
{
...
@@ -537,6 +418,47 @@ const handleOrgClick = item => {
...
@@ -537,6 +418,47 @@ const handleOrgClick = item => {
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
// 处理"查看更多"点击事件
const
handleMoreClick
=
async
()
=>
{
if
(
panel6Loading
.
value
||
panel6NoMoreData
.
value
)
return
;
panel6Loading
.
value
=
true
;
try
{
// 增加页码
panel6CurrentPage
.
value
++
;
// 获取更多数据
const
moreEvents
=
await
getPrecedingEvents
(
route
.
query
.
startTime
,
panel6CurrentPage
.
value
,
panel6PageSize
.
value
);
if
(
moreEvents
&&
Array
.
isArray
(
moreEvents
.
content
)
&&
moreEvents
.
content
.
length
>
0
)
{
// 处理新数据
const
newEvents
=
moreEvents
.
content
.
map
(
item
=>
({
...
item
,
time
:
formatAnyDateToChinese
(
item
.
eventTime
),
desc
:
item
.
summary
||
"--"
}));
// 追加到现有数据
panel6
.
value
=
[...
panel6
.
value
,
...
newEvents
];
// 检查是否还有更多数据(简单的检查方式)
// 如果返回的数据少于请求的数量,则认为没有更多数据
if
(
newEvents
.
length
<
panel6PageSize
.
value
)
{
panel6NoMoreData
.
value
=
true
;
}
}
else
{
// 没有更多数据
panel6NoMoreData
.
value
=
true
;
}
}
catch
(
error
)
{
console
.
error
(
"获取更多前序事件失败:"
,
error
);
// 出错时回退页码
panel6CurrentPage
.
value
--
;
}
finally
{
panel6Loading
.
value
=
false
;
}
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -826,10 +748,16 @@ const handleOrgClick = item => {
...
@@ -826,10 +748,16 @@ const handleOrgClick = item => {
}
}
.panel6
{
.panel6
{
height
:
100%
;
height
:
100%
;
padding
:
6px
45px
0
28px
;
padding
:
6px
45px
20px
28px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
align-items
:
center
;
.panel6-list
{
height
:
90%
;
overflow-y
:
auto
;
margin-bottom
:
auto
;
padding-left
:
5px
;
}
.item
{
.item
{
display
:
flex
;
display
:
flex
;
.left
{
.left
{
...
...
src/views/exportControl/components/dialog.vue
浏览文件 @
57543ed6
<
template
>
<
template
>
<div
class=
"message-bubble"
>
<div
class=
"message-bubble"
>
<div
class=
"avatar-container"
@
click=
"handleClick"
>
<div
class=
"avatar-container"
@
click=
"handleClick"
>
<img
:src=
"avatar"
:alt=
"name"
class=
"avatar"
/>
<img
:src=
"avatar
|| avatarUser
"
:alt=
"name"
class=
"avatar"
/>
</div>
</div>
<div
class=
"bubble-container"
>
<div
class=
"bubble-container"
>
<div
class=
"bubble"
>
<div
class=
"bubble"
>
...
@@ -19,6 +19,8 @@
...
@@ -19,6 +19,8 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
import
avatarUser
from
"@/assets/images/avatar_user.png"
;
const
emit
=
defineEmits
([
"click"
,
"info-click"
]);
const
emit
=
defineEmits
([
"click"
,
"info-click"
]);
defineProps
({
defineProps
({
avatar
:
{
avatar
:
{
...
...
src/views/exportControl/index.vue
浏览文件 @
57543ed6
...
@@ -220,7 +220,7 @@
...
@@ -220,7 +220,7 @@
<
template
#
default
>
<
template
#
default
>
<div
class=
"news-list"
>
<div
class=
"news-list"
>
<NewsList
:list-data=
"newsList"
@
click=
"handleNewsInfoClick
"
/>
<NewsList
:list-data=
"newsList"
@
item-click=
"item => handleNewsInfoClick(item)
"
/>
</div>
</div>
</
template
>
</
template
>
</custom-container>
</custom-container>
...
@@ -321,7 +321,7 @@
...
@@ -321,7 +321,7 @@
</div>
</div>
<div
class=
"box3-content"
>
<div
class=
"box3-content"
>
<div
class=
"box3-content-title"
>
商业管制清单(CCL)更新频度
</div>
<div
class=
"box3-content-title"
>
商业管制清单(CCL)更新频度
</div>
<el-table
:data=
"tableData
1
"
stripe
style=
"width: 100%"
>
<el-table
:data=
"tableData
2
"
stripe
style=
"width: 100%"
>
<el-table-column
prop=
"year"
label=
"年份"
width=
"150"
/>
<el-table-column
prop=
"year"
label=
"年份"
width=
"150"
/>
<el-table-column
label=
"发布次数"
width=
"200"
>
<el-table-column
label=
"发布次数"
width=
"200"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
...
@@ -694,6 +694,7 @@ import _ from "lodash";
...
@@ -694,6 +694,7 @@ import _ from "lodash";
const
handleCompClick
=
item
=>
{
const
handleCompClick
=
item
=>
{
console
.
log
(
"item"
,
item
);
console
.
log
(
"item"
,
item
);
if
(
item
.
entityType
!=
2
)
return
;
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/companyPages"
,
path
:
"/companyPages"
,
query
:
{
query
:
{
...
@@ -712,6 +713,8 @@ const trendOption = ref({});
...
@@ -712,6 +713,8 @@ const trendOption = ref({});
const
trendChecked
=
ref
(
false
);
const
trendChecked
=
ref
(
false
);
// 发布频度
// 发布频度
const
tableData1
=
ref
([]);
const
tableData1
=
ref
([]);
// CCL发布频度
const
tableData2
=
ref
([]);
// 历次制裁过程
// 历次制裁过程
const
sanctionProcessList
=
ref
([]);
const
sanctionProcessList
=
ref
([]);
const
sanctionPage
=
ref
(
1
);
const
sanctionPage
=
ref
(
1
);
...
@@ -727,10 +730,11 @@ const newsList = ref([]);
...
@@ -727,10 +730,11 @@ const newsList = ref([]);
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
try
{
try
{
const
[
dataCount
,
entitiesDataInfo
,
industryCountByYear
,
countDomainByYear
]
=
await
Promise
.
all
([
const
[
dataCount
,
entitiesDataInfo
,
industryCountByYear
,
cclList
,
countDomainByYear
]
=
await
Promise
.
all
([
getEntitiesDataCount
(),
getEntitiesDataCount
(),
getEntitiesDataInfo
(),
getEntitiesDataInfo
(),
getIndustryCountByYear
(
1
),
getIndustryCountByYear
(
1
),
getIndustryCountByYear
(
13
),
getCountDomainByYear
(
trendChecked
.
value
)
getCountDomainByYear
(
trendChecked
.
value
)
]);
]);
// 交换第二个和第三个元素
// 交换第二个和第三个元素
...
@@ -742,6 +746,7 @@ onMounted(async () => {
...
@@ -742,6 +746,7 @@ onMounted(async () => {
});
});
entitiesDataInfoList
.
value
=
entitiesDataInfo
||
[];
entitiesDataInfoList
.
value
=
entitiesDataInfo
||
[];
const
list
=
_
.
chain
(
industryCountByYear
).
filter
(
"year"
).
orderBy
(
"year"
,
"desc"
).
value
();
const
list
=
_
.
chain
(
industryCountByYear
).
filter
(
"year"
).
orderBy
(
"year"
,
"desc"
).
value
();
const
cclList1
=
_
.
chain
(
cclList
).
filter
(
"year"
).
orderBy
(
"year"
,
"desc"
).
value
();
const
total
=
_
.
sumBy
(
list
,
"count"
);
const
total
=
_
.
sumBy
(
list
,
"count"
);
tableData1
.
value
=
_
.
map
(
list
,
item
=>
{
tableData1
.
value
=
_
.
map
(
list
,
item
=>
{
return
{
return
{
...
@@ -751,6 +756,14 @@ onMounted(async () => {
...
@@ -751,6 +756,14 @@ onMounted(async () => {
tags
:
item
.
domain
tags
:
item
.
domain
};
};
}).
slice
(
0
,
5
);
}).
slice
(
0
,
5
);
tableData2
.
value
=
_
.
map
(
cclList1
,
item
=>
{
return
{
year
:
item
.
year
,
num
:
item
.
count
,
percent
:
item
.
count
/
total
,
tags
:
item
.
domain
};
}).
slice
(
0
,
5
);
console
.
log
(
"countDomainByYear"
,
countDomainByYear
);
console
.
log
(
"countDomainByYear"
,
countDomainByYear
);
// 整理柱状图数据并应用到趋势图
// 整理柱状图数据并应用到趋势图
if
(
countDomainByYear
&&
countDomainByYear
[
0
].
yearDomainCount
)
{
if
(
countDomainByYear
&&
countDomainByYear
[
0
].
yearDomainCount
)
{
...
@@ -1194,6 +1207,7 @@ const fetchNewsInfo = async () => {
...
@@ -1194,6 +1207,7 @@ const fetchNewsInfo = async () => {
const
data
=
await
getNewsInfo
();
const
data
=
await
getNewsInfo
();
if
(
data
&&
Array
.
isArray
(
data
))
{
if
(
data
&&
Array
.
isArray
(
data
))
{
newsList
.
value
=
data
.
map
(
item
=>
({
newsList
.
value
=
data
.
map
(
item
=>
({
...
item
,
avatar
:
item
.
newsImage
,
avatar
:
item
.
newsImage
,
name
:
item
.
newsTitle
,
name
:
item
.
newsTitle
,
time
:
formatTime
(
item
.
newsDate
),
time
:
formatTime
(
item
.
newsDate
),
...
@@ -1439,7 +1453,7 @@ const handleNewsInfoClick = item => {
...
@@ -1439,7 +1453,7 @@ const handleNewsInfoClick = item => {
const
route
=
router
.
resolve
({
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
path
:
"/newsAnalysis"
,
query
:
{
query
:
{
newsId
:
item
.
i
d
newsId
:
item
.
newsI
d
}
}
});
});
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
...
...
src/views/exportControl/utils/charts.js
浏览文件 @
57543ed6
...
@@ -139,6 +139,7 @@ export function getPieOption2(data, title) {
...
@@ -139,6 +139,7 @@ export function getPieOption2(data, title) {
}
}
},
},
legend
:
{
legend
:
{
type
:
"scroll"
,
icon
:
"rect"
,
icon
:
"rect"
,
top
:
"center"
,
top
:
"center"
,
right
:
"40"
,
right
:
"40"
,
...
@@ -825,6 +826,7 @@ export const getMultipleLineChart = obj => {
...
@@ -825,6 +826,7 @@ export const getMultipleLineChart = obj => {
containLabel
:
true
containLabel
:
true
},
},
legend
:
{
legend
:
{
type
:
"scroll"
,
right
:
"5%"
,
right
:
"5%"
,
icon
:
"circle"
,
icon
:
"circle"
,
itemWidth
:
15
,
itemWidth
:
15
,
...
@@ -835,7 +837,7 @@ export const getMultipleLineChart = obj => {
...
@@ -835,7 +837,7 @@ export const getMultipleLineChart = obj => {
},
},
itemGap
:
17
,
itemGap
:
17
,
data
:
obj
.
data
.
map
((
item
,
index
)
=>
{
data
:
obj
.
data
.
map
((
item
,
index
)
=>
{
return
{
name
:
item
.
name
,
itemStyle
:
{
color
:
color
[
index
]
}
};
return
{
name
:
item
.
name
,
itemStyle
:
{
color
:
color
[
index
%
4
]
}
};
})
})
},
},
xAxis
:
{
xAxis
:
{
...
...
出口管制接口-4.md
0 → 100644
浏览文件 @
57543ed6
# 交互消息类
## ApiResult
```
java
public
class
ApiResult
<
T
>
{
@ApiModelProperty
(
"响应码"
)
private
int
code
;
@ApiModelProperty
(
"响应消息"
)
private
String
message
;
@ApiModelProperty
(
"是否成功"
)
private
boolean
success
;
@ApiModelProperty
(
"响应数据"
)
private
T
data
;
}
```
## LatestExportControlInfo
```
java
public
class
LatestExportControlInfo
{
// 出口管制事件ID
private
String
id
;
// 管制信息标题
private
String
name
;
// 管制内容简述
private
String
summary
;
// 发布机构名称
private
String
postOrgName
;
// 发布时间
private
Date
postDate
;
// 涉及领域
private
List
<
String
>
domains
;
// 涉及中国实体数
private
Integer
cnEntityCount
;
// 涉及主要实体
private
List
<
SanctionListBean
>
sanEntities
;
}
```
## AnnualCount
```
java
public
class
AnnualCount
{
// 年份
private
Integer
year
;
// 数量
private
Integer
count
;
// 领域列表
private
List
<
String
>
domain
;
}
```
## DomainCount
```
java
public
class
DomainCount
{
// 制裁类型名称
private
String
sanTypeName
;
// 领域统计信息
private
List
<
BaseCount
>
domainCountInfo
;
}
```
## BaseCount
```
java
public
class
BaseCount
{
// 统计名称
private
String
name
;
// 数量
private
Integer
count
;
}
```
## ExportPageQuery
```
java
public
class
ExportPageQuery
extends
BasePageQuery
{
// 类型名称(实体清单)
private
String
typeName
;
// 制裁时间
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
sanctionDate
;
// 是否只看中国实体
private
Boolean
isCn
;
}
```
## BasePageQuery
```
java
public
class
BasePageQuery
{
// 查询页
private
Integer
pageNum
=
1
;
// 每页数量
private
Integer
pageSize
=
10
;
// 排序字段
private
String
sortField
;
// 排序方式
private
String
sortOrder
;
}
```
## SanctionProcess
```
java
public
class
SanctionProcess
{
// 制裁事件ID
private
String
id
;
// 制裁时间
private
Date
postDate
;
// 制裁标题
private
String
name
;
// 制裁内容简述
private
String
summary
;
// 涉及中国实体数
private
Integer
cnEntityCount
;
}
```
## SanctionListBean
```
java
public
class
SanctionListBean
extends
BaseBean
{
@Id
@Column
(
name
=
"ID"
,
nullable
=
false
)
private
String
id
;
@Column
(
name
=
"ENTITY_NAME"
)
private
String
entityName
;
@Column
(
name
=
"SAN_TYPE_ID"
)
private
Integer
sanTypeId
;
@Column
(
name
=
"ENTITY_TYPE"
)
private
Integer
entityType
;
@Column
(
name
=
"ENTITY_ID"
)
private
String
entityId
;
@Column
(
name
=
"ENTITY_NAME_ZH"
)
private
String
entityNameZh
;
@Column
(
name
=
"COUNTRY_ID"
)
private
String
countryId
;
@Column
(
name
=
"SAN_REASON"
)
private
String
sanReason
;
@Column
(
name
=
"SAN_INTENSITY"
)
private
char
sanIntensity
;
@Column
(
name
=
"START_TIME"
)
private
Date
startTime
;
@Column
(
name
=
"END_TIME"
)
private
Date
endTime
;
@Column
(
name
=
"IS_KEY"
)
private
char
isKey
;
@Transient
private
List
<
TechDomainBean
>
techDomainList
;
/**
* 领域列表
*/
@Transient
private
List
<
String
>
techDomains
;
/**
* 50%规则子企业数
*/
@Transient
private
Integer
ruleOrgCount
;
// 50%规则子企业列表
@Transient
private
List
<
Organization
>
ruleOrgList
;
}
```
## OrgInfo
```
java
public
class
OrgInfo
{
// 机构id
private
String
id
;
// 机构名称
private
String
orgName
;
// 机构中文名称
private
String
orgNameZh
;
// 相关制裁措施列表
private
List
<
String
>
sanTypeList
;
// 机构职责
private
String
orgDuty
;
// 机构图片
private
String
imageUrl
;
// 人员列表
private
List
<
PersonInfo
>
personList
;
// 领域列表
private
List
<
String
>
domainList
;
// 市值
private
Double
marketValue
;
// 市值变化(-1:降低;0:持平:1:上升)
private
Integer
marketChange
;
// 地址
private
String
address
;
// 类型
private
String
orgType
;
// 行业
private
List
<
String
>
industryList
;
// 科研仪器数
private
Integer
instrumentNum
;
}
```
## PersonInfo
```
java
public
class
PersonInfo
{
// id
private
String
id
;
// 人物类别
private
Integer
type
;
// 姓名
private
String
name
;
// 党派
private
String
party
;
// 职位
private
String
position
;
// 头像链接
private
String
imageUrl
;
}
```
## SanCountInfo
```
java
public
class
SanCountInfo
{
// 实体数
private
Integer
entityNum
;
// 实体变动数
private
Integer
entityChange
;
// 上市公司数
private
Integer
listedCompanyNum
;
// 上市公司变动数
private
Integer
listedCompanyChange
;
// 涉及领域名数
private
Integer
domainNum
;
// 涉及领域变动数
private
Integer
domainChange
;
// 实体类型数
private
Integer
typeNum
;
// 实体类型变动数
private
Integer
typeChange
;
}
```
## Chain
```
java
public
class
Chain
{
@Id
@Column
(
name
=
"id"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Integer
id
;
// 名称
@Column
(
name
=
"name"
)
private
String
name
;
// 中文名称
@Column
(
name
=
"name_zh"
)
private
String
nameZh
;
// 值
@Column
(
name
=
"description"
)
private
String
description
;
// 父级id
@Column
(
name
=
"parent_id"
)
private
Integer
parentId
;
// 是否为产业链主分支
@Column
(
name
=
"is_main_branch"
)
private
String
isMainBranch
;
// 下属产业链分支
@Transient
private
List
<
Chain
>
children
;
}
```
## FishboneResp
```
java
public
class
FishboneResp
<
T
>
{
private
String
text
;
private
List
<
T
>
causes
;
}
```
## AreasStreamResp
```
java
public
class
AreasStreamResp
{
// 上游国内企业数量
private
int
upstreamInternalCount
;
// 上游国内占比
private
double
upstreamInternalRate
;
// 上游受制裁企业数量
private
int
upstreamEntityCount
;
// 上游受制裁占比
private
double
upstreamEntityRate
;
// 中游国内企业数量
private
int
midstreamInternalCount
;
// 中游国内占比
private
double
midstreamInternalRate
;
// 中游受制裁企业数量
private
int
midstreamEntityCount
;
// 中游受制裁占比
private
double
midstreamEntityRate
;
// 下游国内企业数量
private
int
downstreamInternalCount
;
// 下游国内占比
private
double
downstreamInternalRate
;
// 下游受制裁企业数量
private
int
downstreamEntityCount
;
// 下游受制裁占比
private
double
downstreamEntityRate
;
}
```
## AnnualDomainQuery
```
java
public
class
AnnualDomainQuery
{
// 开始年份
private
Integer
startYear
;
// 结束年份
private
Integer
endYear
;
// 是否考虑50%规则
private
Boolean
isRule
;
}
```
## AnnualDomainCount
```
java
public
class
AnnualDomainCount
{
// 年度领域统计
private
List
<
DomainCount
>
yearDomainCount
;
// 所有领域
private
List
<
BaseCount
>
domians
;
}
```
## SanctionTypeBean
```
java
public
class
SanctionTypeBean
extends
BaseBean
{
@Id
@Column
(
name
=
"ID"
,
nullable
=
false
)
private
Integer
id
;
@Column
(
name
=
"NAME"
)
private
String
name
;
@Column
(
name
=
"NAME_ZH"
)
private
String
nameZh
;
@Column
(
name
=
"NAME_ABBR"
)
private
String
nameAbbr
;
@Column
(
name
=
"DESCRIPTION"
)
private
String
description
;
// 发布国家
@Column
(
name
=
"POST_COUNTRY_ID"
)
private
String
postCountryId
;
// 发布机构
@Column
(
name
=
"POST_ORG_ID"
)
private
String
postOrgId
;
// 是否出口管制 1:是 0:否
@Column
(
name
=
"IS_EXPORT_CONTROL"
)
private
String
isExportControl
;
// 总发布次数
@Transient
private
Integer
postCount
;
}
```
## Organization
```
java
public
class
Organization
extends
BaseBean
{
// 机构id
@Id
@Column
(
name
=
"id"
,
nullable
=
false
)
private
String
id
;
// 机构名称
@Column
(
name
=
"org_name"
,
nullable
=
false
)
private
String
orgName
;
// 组织机构代码
@Column
(
name
=
"uscc"
)
private
String
uscc
;
// 机构简称
@Column
(
name
=
"org_abb"
)
private
String
orgAbb
;
// 机构英文名称
@Column
(
name
=
"org_name_en"
)
private
String
orgNameEn
;
// 机构英文简称
@Column
(
name
=
"org_abb_en"
)
private
String
orgAbbEn
;
// 机构别名
@Column
(
name
=
"org_alias"
)
private
String
orgAlias
;
// 机构曾用名
@Column
(
name
=
"org_former_name"
)
private
String
orgFormerName
;
// 机构类型id
@Column
(
name
=
"org_type_id"
)
private
Long
orgTypeId
;
// 机构简介
@Column
(
name
=
"org_introduction"
)
private
String
orgIntroduction
;
// 营业范围
@Column
(
name
=
"business_scope"
)
private
String
businessScope
;
// 行业id
@Column
(
name
=
"domain_ids"
)
private
String
domainIds
;
// 行业代码
@Column
(
name
=
"economic_industry_code"
)
private
String
economicIndustryCode
;
// 经济行业名称
@Column
(
name
=
"economic_industry_name"
)
private
String
economicIndustryName
;
// 国家id
@Column
(
name
=
"country_id"
)
private
String
countryId
;
// 省份
@Column
(
name
=
"province"
)
private
String
province
;
// 城市
@Column
(
name
=
"city"
)
private
String
city
;
// 区县
@Column
(
name
=
"county"
)
private
String
county
;
// 详细地址
@Column
(
name
=
"address"
)
private
String
address
;
// 成立时间
@Column
(
name
=
"establishment_date"
)
private
LocalDate
establishmentDate
;
// 变更时间
@Column
(
name
=
"issuing_date"
)
private
String
issuingDate
;
// 营业期限自
@Column
(
name
=
"operation_period_from"
)
private
String
operationPeriodFrom
;
// 营业期限至
@Column
(
name
=
"operation_period_until"
)
private
String
operationPeriodUntil
;
// 营业状态
@Column
(
name
=
"business_status"
)
private
String
businessStatus
;
// 法人id
@Column
(
name
=
"legal_representative_id"
)
private
String
legalRepresentativeId
;
/// 法人
@Column
(
name
=
"legal_representative"
)
private
String
legalRepresentative
;
// 联系电话
@Column
(
name
=
"telephone"
)
private
String
telephone
;
// 邮箱
@Column
(
name
=
"email"
)
private
String
email
;
// 邮政编码
@Column
(
name
=
"postcode"
)
private
String
postcode
;
// 网址
@Column
(
name
=
"url"
)
private
String
url
;
// 员工人数
@Column
(
name
=
"number_of_employees"
)
private
String
numberOfEmployees
;
// 注册资金
@Column
(
name
=
"registered_capital"
)
private
String
registeredCapital
;
// LOGO链接
@Column
(
name
=
"logo_url"
)
private
String
logoUrl
;
@Column
(
name
=
"create_by"
)
private
String
createBy
;
@Column
(
name
=
"update_by"
)
private
String
updateBy
;
@Column
(
name
=
"p_org_id"
)
private
String
pOrgId
;
}
```
## EventInfo
```
java
public
class
EventInfo
extends
BaseBean
{
@Id
@Column
(
name
=
"id"
)
@ApiModelProperty
(
value
=
"唯一标识"
)
private
String
id
;
@Column
(
name
=
"title"
)
@ApiModelProperty
(
value
=
"标题"
)
private
String
title
;
@Column
(
name
=
"event_time"
)
@ApiModelProperty
(
value
=
"事件时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
eventTime
;
@Column
(
name
=
"summary"
)
@ApiModelProperty
(
value
=
"摘要"
)
private
String
summary
;
@Column
(
name
=
"summary_zh"
)
@ApiModelProperty
(
value
=
"摘要译文"
)
private
String
summaryZh
;
@Column
(
name
=
"event_type"
)
@ApiModelProperty
(
value
=
"事件类别"
)
private
String
eventType
;
@Column
(
name
=
"CONTENT"
)
@ApiModelProperty
(
value
=
"主要内容"
)
private
String
content
;
@Column
(
name
=
"title_zh"
)
@ApiModelProperty
(
value
=
"标题译文"
)
private
String
titleZh
;
@Column
(
name
=
"content_zh"
)
@ApiModelProperty
(
value
=
"主要内容译文"
)
private
String
contentZh
;
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"事件类别"
)
private
String
type
;
@Column
(
name
=
"LOCATION"
)
@ApiModelProperty
(
value
=
"事件地点"
)
private
String
location
;
@Column
(
name
=
"country"
)
@ApiModelProperty
(
value
=
"国家"
)
private
String
country
;
}
```
## RegionCount
```
java
public
class
RegionCount
{
// 名称
private
String
name
;
// 数量
private
Integer
count
;
// 经度
private
Double
lon
;
// 纬度
private
Double
lat
;
}
```
## EventQuery
```
java
public
class
EventQuery
extends
BasePageQuery
{
// 制裁记录ID (暂时无作用,后续根据ID查)
private
Integer
sanctionId
;
// 制裁时间
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
sanctionDate
;
}
```
## RuleEntityCount
```
JAVA
public class RuleEntityCount {
// 总数
private Integer totalCount;
// 50%规则关联数
private Integer ruleCount;
}
```
## RiskSignalVO
```
java
public
class
RiskSignalVO
{
@ApiModelProperty
(
"风险信号id"
)
private
Long
signalId
;
@ApiModelProperty
(
"风险信号标题"
)
private
String
signalTitle
;
@ApiModelProperty
(
"风险信号时间"
)
private
LocalDate
signalTime
;
@ApiModelProperty
(
"风险信号等级"
)
private
String
signalLevel
;
@ApiModelProperty
(
"风险信号关联法案id"
)
private
String
billId
;
@ApiModelProperty
(
"风险信号关联政令id"
)
private
Long
orderId
;
@ApiModelProperty
(
"风险信号关联报告id"
)
private
String
reportId
;
@ApiModelProperty
(
"风险信号关联制裁id"
)
private
Integer
sanId
;
}
```
## NewsVO
```
java
public
class
NewsVO
{
@ApiModelProperty
(
value
=
"新闻id"
)
private
String
newsId
;
@ApiModelProperty
(
value
=
"新闻时间"
)
private
LocalDate
newsDate
;
@ApiModelProperty
(
value
=
"新闻内容"
)
private
String
newsContent
;
@ApiModelProperty
(
value
=
"新闻标题"
)
private
String
newsTitle
;
@ApiModelProperty
(
value
=
"新闻机构"
)
private
String
newsOrg
;
@ApiModelProperty
(
value
=
"新闻图片"
)
private
String
newsImage
;
}
```
## RemarksVO
```
java
public
class
RemarksVO
{
@ApiModelProperty
(
value
=
"人物id"
)
private
String
personId
;
@ApiModelProperty
(
value
=
"人物图像"
)
private
String
personImage
;
@ApiModelProperty
(
value
=
"人物名称"
)
private
String
personName
;
@ApiModelProperty
(
value
=
"言论ID"
)
private
Long
remarksId
;
@ApiModelProperty
(
value
=
"人物言论"
)
private
String
remarks
;
@ApiModelProperty
(
value
=
"时间"
)
private
LocalDateTime
time
;
@ApiModelProperty
(
value
=
"言论平台名称"
)
private
String
orgName
;
}
```
# 字典
## 领域类别(id:name)
1:人工智能、2:生物科技、3:新一代信息技术、4:量子科技、5:新能源、6:集成电路、7:海洋、8:先进制造、9:新材料、10:航空航天、11:深海、12:极地、13:太空、14:核
## 实体类别(id:name)
1:人物、2:机构、7:地址
## 人物类别(待定)
1:政府官员、2:科技领袖、3:顶级科学家、4:国会议员
# 出口管制
## **获取出口管制类清单统计信息**
请求地址:/sanctionList/export/getTotalInfo
请求类型:GET
输入参数:
参数:无输入
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
SanctionTypeBean
>
>
## 最新出口管制政策(4条)
请求地址:/entitiesDataInfo/getLatestInfo
请求类型:GET
输入参数:
参数:无输入
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<LatestExportControlInfo>
## 发布(更新)频度
请求地址:/entitiesDataCount/getAnnualCount
请求类型:GET
输入参数:
参数:Integer sanTypeId(制裁类别)
实体清单发布频度:1;CCL发布频度:13
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **制裁领域分析**(20251215)
请求地址:/entitiesDataCount/getSanDomainCount
请求类型:GET
输入参数:
参数:Boolean rule(是否勾选50%规则)
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
DomainCount
>
>
## **历次制裁过程**
请求地址:/entitiesDataCount/getSanctionProcess
请求类型:POST
输入参数:
参数:ExportPageQuery exportPageQuery
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<Page
<
SanctionProcess
>
>
## **制裁实体清单**列表(20251215)
请求地址:/sanctionList/pageQuery
请求类型:POST
输入参数:
参数:ExportPageQuery exportPageQuery
出口管制-概览页请求时:typeName=实体清单
实体清单-制裁概览页请求时:typeName=实体清单,sanctionDate=该次制裁的具体时间
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<Page
<
SanctionListBean
>
>
## **发布机构与重点人物**
请求地址:/sanctionList/getPublishedOrg
请求类型:GET
输入参数:
参数:Integer sanTypeId
暂时固定输入:1;对应实体清单发布机构
请求头:携带token
输出结果:ApiResult
<OrgInfo>
## **领域分布查询**
请求地址:/entitiesDataInfo/getDomianDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **类型分布查询**
请求地址:/entitiesDataInfo/getTypeDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **区域分布查询**
请求地址:/entitiesDataInfo/getRegionDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
RegionCount
>
>
## **制裁理由查询**
请求地址:/entitiesDataInfo/getSanReason
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
String
>
>
## **深度挖掘-制裁信息变化统计**
请求地址:/entitiesDataInfo/getSanCountInfo
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<SanCountInfo>
## **年度实体数统计**
请求地址:/entitiesDataInfo/getCountByDomianAndType
请求类型:GET
输入参数:
参数:String domianId (非必需,领域类别ID),Integer typeId (非必需,实体类别ID)
参考字典
请求头:携带token
输出结果:ApiResult
<SanCountInfo>
## **重点实体列表查询**
请求地址:/entitiesDataInfo/getKeyEntities
请求类型:GET
输入参数:
参数:String sanctionDate(必需),String searchText(非必需,检索文本)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **上市企业制裁强度**
请求地址:/entitiesDataInfo/listedEntity/sanInfo
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **上市企业融资变化情况**
请求地址:/entitiesDataInfo/listedEntity/financing
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **上市企业市值变化情况**
请求地址:/entitiesDataInfo/listedEntity/market
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **重点上市企业列表**
请求地址:/entitiesDataInfo/listedEntity/keyEntity
请求类型:GET
输入参数:
参数:String sanctionDate(必需),String searchText(非必需,检索文本)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **历次制裁涉及领域数查询**
请求地址:/entitiesDataInfo/getPreviousDomian
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **具体领域的制裁实体数统计**
请求地址:/entitiesDataInfo/getDomianAnnual
请求类型:GET
输入参数:
参数:String domainId
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **具体实体类型的制裁实体数统计**
请求地址:/entitiesDataInfo/getEntityTypeAnnual
请求类型:GET
输入参数:
参数:Integer entityTypeId
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **产业链结构查询**
请求地址:/chain/getChainTree
请求类型:GET
输入参数:
参数:Integer chainId,非必需
请求头:携带token
输出结果:ApiResult
<List
<
Chain
>
>
## **根据领域获取产业链信息**
请求地址:/chain/getChainInfo
请求类型:GET
输入参数:
参数:Integer domainId,领域ID
请求头:携带token
输出结果:ApiResult
<List
<
Chain
>
>
## **产业链鱼骨图信息查询**
请求地址:/chain/getChainFishbone
请求类型:GET
输入参数:
参数:Integer chainId
请求头:携带token
输出结果:ApiResult
<FishboneResp>
## **产业链中国企业实体信息查询**
请求地址:/chain/getChainEntityStat
请求类型:GET
输入参数:
参数:Integer chainId
请求头:携带token
输出结果:ApiResult
<AreasStreamResp>
## **实体列表查询**
请求地址:/entitiesDataInfo/getEntityList
请求类型:GET
输入参数:
参数:String sanctionDate(制裁时间),String domainId(领域ID)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **历年制裁领域统计**
请求地址:/entitiesDataCount/getAnnualSanDomain
请求类型:POST
输入参数:
参数:AnnualDomainQuery annualDomainQuery
请求头:携带token
输出结果:ApiResult
<List
<
AnnualDomainCount
>
>
## **新增实体数量增长趋势**
请求地址:/entitiesDataInfo/yoyComparison
请求类型:GET
输入参数:
参数:无输入
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **获取机构的详情信息**
请求地址:/organization/getDetail/{id}
请求类型:GET
输入参数:
参数:机构ID
请求头:携带token
输出结果:ApiResult
<Organization>
## **获取美国前序事件**
请求地址:/entitiesDataInfo/precedingEvents
请求类型:POST
输入参数:
参数:EventQuery eventQuery
请求头:携带token
输出结果:ApiResult
<Page
<
EventInfo
>
>
## **新增科研机构列表**
请求地址:/entitiesDataInfo/scientificImpact/entityList
请求类型:GET
输入参数:
参数:String sanctionDate
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **各类别仪器对美依赖情况**
请求地址:/instrument/getDependencyUS
请求类型:GET
输入参数:
参数:List
<String>
orgIds 机构公司ID列表
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **仪器对美依赖度升高风险分析**
请求地址:/instrument/getDependencyUSRisk
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **仪器进口国可替代性分析**
请求地址:/instrument/getOriginCount
请求类型:GET
输入参数:
参数:List
<String>
orgIds 机构公司ID列表
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **仪器国产化降低风险分析**
请求地址:/instrument/getLocalizationRisk
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **制裁实体清单50%规则实体数**
请求地址:/sanctionList/getRuleCount
请求类型:POST
输入参数:
参数:ExportPageQuery exportPageQuery
请求头:携带token
输出结果:ApiResult
<RuleEntityCount>
## **科研院所类实体历史制裁情况**
请求地址:/entitiesDataInfo/annual/researchInstitute
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **企业类实体历史制裁情况**
请求地址:/entitiesDataInfo/annual/enterprise
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **风险信号**
请求地址:/commonFeature/riskSignal/{moduleId}
请求类型:GET
输入参数:
参数:moduleId
请求头:携带token
输出结果:ApiResult
<List
<
RiskSignalVO
>
>
## **新闻资讯**
请求地址:/commonFeature/news/{moduleId}
请求类型:GET
输入参数:
参数:moduleId
请求头:携带token
输出结果:ApiResult
<List
<
NewsVO
>
>
## **社交媒体**
请求地址:/commonFeature/remarks/{moduleId}
请求类型:GET
输入参数:
参数:moduleId
请求头:携带token
输出结果:ApiResult
<List
<
RemarksVO
>
>
\ No newline at end of file
出口管制接口.xlsx
deleted
100644 → 0
浏览文件 @
52826e66
File deleted
出口管制接口new.md
0 → 100644
浏览文件 @
57543ed6
# 交互消息类
## ApiResult
```
java
public
class
ApiResult
<
T
>
{
@ApiModelProperty
(
"响应码"
)
private
int
code
;
@ApiModelProperty
(
"响应消息"
)
private
String
message
;
@ApiModelProperty
(
"是否成功"
)
private
boolean
success
;
@ApiModelProperty
(
"响应数据"
)
private
T
data
;
}
```
## LatestExportControlInfo
```
java
public
class
LatestExportControlInfo
{
// 出口管制事件ID
private
String
id
;
// 管制信息标题
private
String
name
;
// 管制内容简述
private
String
summary
;
// 发布机构名称
private
String
postOrgName
;
// 发布时间
private
Date
postDate
;
// 涉及领域
private
List
<
String
>
domains
;
// 涉及中国实体数
private
Integer
cnEntityCount
;
// 涉及主要实体
private
List
<
SanctionListBean
>
sanEntities
;
}
```
## AnnualCount
```
java
public
class
AnnualCount
{
// 年份
private
Integer
year
;
// 数量
private
Integer
count
;
// 领域列表
private
List
<
String
>
domain
;
}
```
## DomainCount
```
java
public
class
DomainCount
{
// 制裁类型名称
private
String
sanTypeName
;
// 领域统计信息
private
List
<
BaseCount
>
domainCountInfo
;
}
```
## BaseCount
```
java
public
class
BaseCount
{
// 统计名称
private
String
name
;
// 数量
private
Integer
count
;
}
```
## ExportPageQuery
```
java
public
class
ExportPageQuery
extends
BasePageQuery
{
// 类型名称(实体清单)
private
String
typeName
;
// 制裁时间
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
,
timezone
=
"GMT+8"
)
private
Date
sanctionDate
;
// 是否只看中国实体
private
Boolean
isCn
;
}
```
## BasePageQuery
```
java
public
class
BasePageQuery
{
// 查询页
private
Integer
pageNum
=
1
;
// 每页数量
private
Integer
pageSize
=
10
;
// 排序字段
private
String
sortField
;
// 排序方式
private
String
sortOrder
;
}
```
## SanctionProcess
```
java
public
class
SanctionProcess
{
// 制裁事件ID
private
String
id
;
// 制裁时间
private
Date
postDate
;
// 制裁标题
private
String
name
;
// 制裁内容简述
private
String
summary
;
// 涉及中国实体数
private
Integer
cnEntityCount
;
}
```
## SanctionListBean
```
java
public
class
SanctionListBean
extends
BaseBean
{
@Id
@Column
(
name
=
"ID"
,
nullable
=
false
)
private
String
id
;
@Column
(
name
=
"ENTITY_NAME"
)
private
String
entityName
;
@Column
(
name
=
"SAN_TYPE_ID"
)
private
Integer
sanTypeId
;
@Column
(
name
=
"ENTITY_TYPE"
)
private
Integer
entityType
;
@Column
(
name
=
"ENTITY_ID"
)
private
String
entityId
;
@Column
(
name
=
"ENTITY_NAME_ZH"
)
private
String
entityNameZh
;
@Column
(
name
=
"COUNTRY_ID"
)
private
String
countryId
;
@Column
(
name
=
"SAN_REASON"
)
private
String
sanReason
;
@Column
(
name
=
"SAN_INTENSITY"
)
private
char
sanIntensity
;
@Column
(
name
=
"START_TIME"
)
private
Date
startTime
;
@Column
(
name
=
"END_TIME"
)
private
Date
endTime
;
@Column
(
name
=
"IS_KEY"
)
private
char
isKey
;
@Transient
private
List
<
TechDomainBean
>
techDomainList
;
/**
* 领域列表
*/
@Transient
private
List
<
String
>
techDomains
;
/**
* 50%规则子企业数
*/
@Transient
private
Integer
ruleOrgCount
;
// 50%规则子企业列表
@Transient
private
List
<
Organization
>
ruleOrgList
;
}
```
## OrgInfo
```
java
public
class
OrgInfo
{
// 机构id
private
String
id
;
// 机构名称
private
String
orgName
;
// 相关制裁措施列表
private
List
<
String
>
sanTypeList
;
// 机构职责
private
String
orgDuty
;
// 机构图片
private
String
imageUrl
;
// 人员列表
private
List
<
PersonInfo
>
personList
;
}
```
## PersonInfo
```
java
public
class
PersonInfo
{
// id
private
String
id
;
// 人物类别
private
Integer
type
;
// 姓名
private
String
name
;
// 党派
private
String
party
;
// 职位
private
String
position
;
// 头像链接
private
String
imageUrl
;
}
```
## SanCountInfo
```
java
public
class
SanCountInfo
{
// 实体数
private
Integer
entityNum
;
// 实体变动数
private
Integer
entityChange
;
// 上市公司数
private
Integer
listedCompanyNum
;
// 上市公司变动数
private
Integer
listedCompanyChange
;
// 涉及领域名数
private
Integer
domainNum
;
// 涉及领域变动数
private
Integer
domainChange
;
// 实体类型数
private
Integer
typeNum
;
// 实体类型变动数
private
Integer
typeChange
;
}
```
## Chain
```
java
public
class
Chain
{
@Id
@Column
(
name
=
"id"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Integer
id
;
// 名称
@Column
(
name
=
"name"
)
private
String
name
;
// 中文名称
@Column
(
name
=
"name_zh"
)
private
String
nameZh
;
// 值
@Column
(
name
=
"description"
)
private
String
description
;
// 父级id
@Column
(
name
=
"parent_id"
)
private
Integer
parentId
;
// 是否为产业链主分支
@Column
(
name
=
"is_main_branch"
)
private
String
isMainBranch
;
// 下属产业链分支
@Transient
private
List
<
Chain
>
children
;
}
```
## FishboneResp
```
java
public
class
FishboneResp
<
T
>
{
private
String
text
;
private
List
<
T
>
causes
;
}
```
## AreasStreamResp
```
java
public
class
AreasStreamResp
{
// 上游国内企业数量
private
int
upstreamInternalCount
;
// 上游国内占比
private
double
upstreamInternalRate
;
// 上游受制裁企业数量
private
int
upstreamEntityCount
;
// 上游受制裁占比
private
double
upstreamEntityRate
;
// 中游国内企业数量
private
int
midstreamInternalCount
;
// 中游国内占比
private
double
midstreamInternalRate
;
// 中游受制裁企业数量
private
int
midstreamEntityCount
;
// 中游受制裁占比
private
double
midstreamEntityRate
;
// 下游国内企业数量
private
int
downstreamInternalCount
;
// 下游国内占比
private
double
downstreamInternalRate
;
// 下游受制裁企业数量
private
int
downstreamEntityCount
;
// 下游受制裁占比
private
double
downstreamEntityRate
;
}
```
## AnnualDomainQuery
```
java
public
class
AnnualDomainQuery
{
// 开始年份
private
Integer
startYear
;
// 结束年份
private
Integer
endYear
;
// 是否考虑50%规则
private
Boolean
isRule
;
}
```
## AnnualDomainCount
```
java
public
class
AnnualDomainCount
{
// 年度领域统计
private
List
<
DomainCount
>
yearDomainCount
;
// 所有领域
private
List
<
BaseCount
>
domians
;
}
```
## SanctionTypeBean
```
java
public
class
SanctionTypeBean
extends
BaseBean
{
@Id
@Column
(
name
=
"ID"
,
nullable
=
false
)
private
Integer
id
;
@Column
(
name
=
"NAME"
)
private
String
name
;
@Column
(
name
=
"NAME_ZH"
)
private
String
nameZh
;
@Column
(
name
=
"NAME_ABBR"
)
private
String
nameAbbr
;
@Column
(
name
=
"DESCRIPTION"
)
private
String
description
;
// 发布国家
@Column
(
name
=
"POST_COUNTRY_ID"
)
private
String
postCountryId
;
// 发布机构
@Column
(
name
=
"POST_ORG_ID"
)
private
String
postOrgId
;
// 是否出口管制 1:是 0:否
@Column
(
name
=
"IS_EXPORT_CONTROL"
)
private
String
isExportControl
;
// 总发布次数
@Transient
private
Integer
postCount
;
}
```
## Organization
```
java
public
class
Organization
extends
BaseBean
{
// 机构id
@Id
@Column
(
name
=
"id"
,
nullable
=
false
)
private
String
id
;
// 机构名称
@Column
(
name
=
"org_name"
,
nullable
=
false
)
private
String
orgName
;
// 组织机构代码
@Column
(
name
=
"uscc"
)
private
String
uscc
;
// 机构简称
@Column
(
name
=
"org_abb"
)
private
String
orgAbb
;
// 机构英文名称
@Column
(
name
=
"org_name_en"
)
private
String
orgNameEn
;
// 机构英文简称
@Column
(
name
=
"org_abb_en"
)
private
String
orgAbbEn
;
// 机构别名
@Column
(
name
=
"org_alias"
)
private
String
orgAlias
;
// 机构曾用名
@Column
(
name
=
"org_former_name"
)
private
String
orgFormerName
;
// 机构类型id
@Column
(
name
=
"org_type_id"
)
private
Long
orgTypeId
;
// 机构简介
@Column
(
name
=
"org_introduction"
)
private
String
orgIntroduction
;
// 营业范围
@Column
(
name
=
"business_scope"
)
private
String
businessScope
;
// 行业id
@Column
(
name
=
"domain_ids"
)
private
String
domainIds
;
// 行业代码
@Column
(
name
=
"economic_industry_code"
)
private
String
economicIndustryCode
;
// 经济行业名称
@Column
(
name
=
"economic_industry_name"
)
private
String
economicIndustryName
;
// 国家id
@Column
(
name
=
"country_id"
)
private
String
countryId
;
// 省份
@Column
(
name
=
"province"
)
private
String
province
;
// 城市
@Column
(
name
=
"city"
)
private
String
city
;
// 区县
@Column
(
name
=
"county"
)
private
String
county
;
// 详细地址
@Column
(
name
=
"address"
)
private
String
address
;
// 成立时间
@Column
(
name
=
"establishment_date"
)
private
LocalDate
establishmentDate
;
// 变更时间
@Column
(
name
=
"issuing_date"
)
private
String
issuingDate
;
// 营业期限自
@Column
(
name
=
"operation_period_from"
)
private
String
operationPeriodFrom
;
// 营业期限至
@Column
(
name
=
"operation_period_until"
)
private
String
operationPeriodUntil
;
// 营业状态
@Column
(
name
=
"business_status"
)
private
String
businessStatus
;
// 法人id
@Column
(
name
=
"legal_representative_id"
)
private
String
legalRepresentativeId
;
/// 法人
@Column
(
name
=
"legal_representative"
)
private
String
legalRepresentative
;
// 联系电话
@Column
(
name
=
"telephone"
)
private
String
telephone
;
// 邮箱
@Column
(
name
=
"email"
)
private
String
email
;
// 邮政编码
@Column
(
name
=
"postcode"
)
private
String
postcode
;
// 网址
@Column
(
name
=
"url"
)
private
String
url
;
// 员工人数
@Column
(
name
=
"number_of_employees"
)
private
String
numberOfEmployees
;
// 注册资金
@Column
(
name
=
"registered_capital"
)
private
String
registeredCapital
;
// LOGO链接
@Column
(
name
=
"logo_url"
)
private
String
logoUrl
;
@Column
(
name
=
"create_by"
)
private
String
createBy
;
@Column
(
name
=
"update_by"
)
private
String
updateBy
;
@Column
(
name
=
"p_org_id"
)
private
String
pOrgId
;
}
```
## EventInfo
```
java
public
class
EventInfo
extends
BaseBean
{
@Id
@Column
(
name
=
"id"
)
@ApiModelProperty
(
value
=
"唯一标识"
)
private
String
id
;
@Column
(
name
=
"title"
)
@ApiModelProperty
(
value
=
"标题"
)
private
String
title
;
@Column
(
name
=
"event_time"
)
@ApiModelProperty
(
value
=
"事件时间"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
eventTime
;
@Column
(
name
=
"summary"
)
@ApiModelProperty
(
value
=
"摘要"
)
private
String
summary
;
@Column
(
name
=
"summary_zh"
)
@ApiModelProperty
(
value
=
"摘要译文"
)
private
String
summaryZh
;
@Column
(
name
=
"event_type"
)
@ApiModelProperty
(
value
=
"事件类别"
)
private
String
eventType
;
@Column
(
name
=
"CONTENT"
)
@ApiModelProperty
(
value
=
"主要内容"
)
private
String
content
;
@Column
(
name
=
"title_zh"
)
@ApiModelProperty
(
value
=
"标题译文"
)
private
String
titleZh
;
@Column
(
name
=
"content_zh"
)
@ApiModelProperty
(
value
=
"主要内容译文"
)
private
String
contentZh
;
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"事件类别"
)
private
String
type
;
@Column
(
name
=
"LOCATION"
)
@ApiModelProperty
(
value
=
"事件地点"
)
private
String
location
;
@Column
(
name
=
"country"
)
@ApiModelProperty
(
value
=
"国家"
)
private
String
country
;
}
```
# 字典
## 领域类别(id:name)
1:人工智能、2:生物科技、3:新一代信息技术、4:量子科技、5:新能源、6:集成电路、7:海洋、8:先进制造、9:新材料、10:航空航天、11:深海、12:极地、13:太空、14:核
## 实体类别(id:name)
1:人物、2:机构、7:地址
## 人物类别(待定)
1:政府官员、2:科技领袖、3:顶级科学家、4:国会议员
# 出口管制
## **获取出口管制类清单统计信息**
请求地址:/sanctionList/export/getTotalInfo
请求类型:GET
输入参数:
参数:无输入
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
SanctionTypeBean
>
>
## 最新出口管制政策(4条)
请求地址:http://8.140.26.4:9085/entitiesDataInfo/getLatestInfo
请求类型:GET
输入参数:
参数:无输入
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<LatestExportControlInfo>
## 发布(更新)频度
请求地址:http://8.140.26.4:9085/entitiesDataCount/getAnnualCount
请求类型:GET
输入参数:
参数:Integer sanTypeId(制裁类别)
实体清单发布频度:1;CCL发布频度:X(待定,暂无数据)
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **制裁领域分析**(20251215)
请求地址:http://8.140.26.4:9085/entitiesDataCount/getSanDomainCount
请求类型:GET
输入参数:
参数:Boolean rule(是否勾选50%规则)
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<List
<
DomainCount
>
>
## **历次制裁过程**
请求地址:http://8.140.26.4:9085/entitiesDataCount/getSanctionProcess
请求类型:POST
输入参数:
参数:ExportPageQuery exportPageQuery
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<Page
<
SanctionProcess
>
>
## **制裁实体清单**列表(20251215)
请求地址:/sanctionList/pageQuery
请求类型:POST
输入参数:
参数:ExportPageQuery exportPageQuery
出口管制-概览页请求时:typeName=实体清单
实体清单-制裁概览页请求时:typeName=实体清单,sanctionDate=该次制裁的具体时间
请求头:携带token,内容为:
```
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJkYXRhLWNlbnRlciIsImF1ZCI6IndlYiIsImlzcyI6ImRhdGEtY2VudGVyIiwiZXhwIjozODI1ODM1NTkxLCJpYXQiOjE2NzgzNTE5NTMsImp0aSI6IjI4YmY1NTZjMTc0MDQ3YjJiNTExNWM3NzVhYjhlNWRmIiwidXNlcm5hbWUiOiJzdXBlcl91c2VyIn0.zHyVzsleX2lEqjDBYRpwluu_wy2nZKGl0dw3IUGnKNw
```
输出结果:ApiResult
<Page
<
SanctionListBean
>
>
## **发布机构与重点人物**
请求地址:/sanctionList/getPublishedOrg
请求类型:GET
输入参数:
参数:Integer sanTypeId
暂时固定输入:1;对应实体清单发布机构
请求头:携带token
输出结果:ApiResult
<OrgInfo>
## **领域分布查询**
请求地址:/entitiesDataInfo/getDomianDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **类型分布查询**
请求地址:/entitiesDataInfo/getTypeDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **区域分布查询**
请求地址:/entitiesDataInfo/getRegionDistribution
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **制裁理由查询**
请求地址:/entitiesDataInfo/getSanReason
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<List
<
String
>
>
## **深度挖掘-制裁信息变化统计**
请求地址:/entitiesDataInfo/getSanCountInfo
请求类型:GET
输入参数:
参数:String sanctionDate (制裁时间)
请求头:携带token
输出结果:ApiResult
<SanCountInfo>
## **年度实体数统计**
请求地址:/entitiesDataInfo/getCountByDomianAndType
请求类型:GET
输入参数:
参数:String domianId (非必需,领域类别ID),Integer typeId (非必需,实体类别ID)
参考字典
请求头:携带token
输出结果:ApiResult
<SanCountInfo>
## **重点实体列表查询**
请求地址:/entitiesDataInfo/getKeyEntities
请求类型:GET
输入参数:
参数:String sanctionDate(必需),String searchText(非必需,检索文本)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **上市企业制裁强度**
请求地址:/entitiesDataInfo/listedEntity/sanInfo
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **上市企业融资变化情况**
请求地址:/entitiesDataInfo/listedEntity/financing
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **上市企业市值变化情况**
请求地址:/entitiesDataInfo/listedEntity/market
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **重点上市企业列表**
请求地址:/entitiesDataInfo/listedEntity/keyEntity
请求类型:GET
输入参数:
参数:String sanctionDate(必需),String searchText(非必需,检索文本)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **历次制裁涉及领域数查询**
请求地址:/entitiesDataInfo/getPreviousDomian
请求类型:GET
输入参数:
参数:无
请求头:携带token
输出结果:ApiResult
<List
<
BaseCount
>
>
## **具体领域的制裁实体数统计**
请求地址:/entitiesDataInfo/getDomianAnnual
请求类型:GET
输入参数:
参数:String domainId
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **具体实体类型的制裁实体数统计**
请求地址:/entitiesDataInfo/getEntityTypeAnnual
请求类型:GET
输入参数:
参数:Integer entityTypeId
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **产业链结构查询**
请求地址:/chain/getChainTree
请求类型:GET
输入参数:
参数:Integer chainId,非必需
请求头:携带token
输出结果:ApiResult
<List
<
Chain
>
>
## **产业链鱼骨图信息查询**
请求地址:/chain/getChainFishbone
请求类型:GET
输入参数:
参数:Integer chainId
请求头:携带token
输出结果:ApiResult
<FishboneResp>
## **产业链中国企业实体信息查询**
请求地址:/chain/getChainEntityStat
请求类型:GET
输入参数:
参数:Integer chainId
请求头:携带token
输出结果:ApiResult
<AreasStreamResp>
## **实体列表查询**
请求地址:/entitiesDataInfo/getEntityList
请求类型:GET
输入参数:
参数:String sanctionDate(制裁时间),String domainId(领域ID)
请求头:携带token
输出结果:ApiResult
<List
<
OrgInfo
>
>
## **历年制裁领域统计**
请求地址:/entitiesDataCount/getAnnualSanDomain
请求类型:POST
输入参数:
参数:AnnualDomainQuery annualDomainQuery
请求头:携带token
输出结果:ApiResult
<List
<
AnnualDomainCount
>
>
## **新增实体数量增长趋势**
请求地址:/entitiesDataInfo/yoyComparison
请求类型:GET
输入参数:
参数:无输入
请求头:携带token
输出结果:ApiResult
<List
<
AnnualCount
>
>
## **获取机构的详情信息**
请求地址:/organization/getDetail/{id}
请求类型:GET
输入参数:
参数:机构ID
请求头:携带token
输出结果:ApiResult
<Organization>
## **获取5条美国前序事件**
请求地址:/entitiesDataInfo/precedingEvents
请求类型:GET
输入参数:
参数:String sanctionDate 制裁时间
请求头:携带token
输出结果:ApiResult
<List
<
EventInfo
>
>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论