Commit 8dcb22c7 by chenjinjing

no message

parent 7b05eda2
......@@ -1360,6 +1360,11 @@
"resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
"integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
},
"ws": {
"version": "8.13.0",
"resolved": "https://registry.npmmirror.com/ws/-/ws-8.13.0.tgz",
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA=="
},
"xlsx": {
"version": "0.16.9",
"resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.16.9.tgz",
......
......@@ -21,6 +21,7 @@
"pyfl": "^1.1.4",
"request": "^2.88.0",
"svg-captcha": "^1.3.12",
"ws": "^8.13.0",
"xml2js": "^0.4.23"
},
"devDependencies": {},
......
......@@ -2,22 +2,22 @@
"success": true,
"message": "success",
"code": 200,
"timestamp": 1689143182840,
"timestamp": 1701151792542,
"result": [
{
"id": "6e61d3c737a1117d79e724f0888b8bc0",
"lineId": "469529aefc627f86ec176ca1c4d6754",
"lineName": "20号线",
"sectionId": "6e61d3c737a1117d79e724f0888b8bc0",
"sectionName": "上海西站站",
"id": "393d13abc3a76a19fdb20881635168a8",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "393d13abc3a76a19fdb20881635168a8",
"sectionName": "诸光路站",
"sectionType": "基坑",
"code": "st_20_shxzz",
"code": "st_13_zglz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -29,19 +29,19 @@
"tbmUrl": null
},
{
"id": "3077b7fa4a4279246052ddb2d0ea3fd1",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "3077b7fa4a4279246052ddb2d0ea3fd1",
"sectionName": "通南路站",
"id": "e2d2c38d22e74915530854d7d17d83e3",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "e2d2c38d22e74915530854d7d17d83e3",
"sectionName": "紫竹高新区站",
"sectionType": "基坑",
"code": "st_18_tnlz",
"code": "st_23_zzgxqz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -53,19 +53,19 @@
"tbmUrl": null
},
{
"id": "748355362fbe1ad01bca31479d9e9018",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "748355362fbe1ad01bca31479d9e9018",
"sectionName": "申江路站",
"id": "3077b7fa4a4279246052ddb2d0ea3fd1",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "3077b7fa4a4279246052ddb2d0ea3fd1",
"sectionName": "通南路站",
"sectionType": "基坑",
"code": "st_cm_sjldtz",
"code": "st_18_tnlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.08,
"outShapeValue": 2.41,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -77,19 +77,19 @@
"tbmUrl": null
},
{
"id": "393d13abc3a76a19fdb20881635168a8",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "393d13abc3a76a19fdb20881635168a8",
"sectionName": "诸光路站",
"id": "aebdb8ff12aec619273a64e086d46cc9",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "aebdb8ff12aec619273a64e086d46cc9",
"sectionName": "张江站",
"sectionType": "基坑",
"code": "st_13_zglz",
"code": "st_21_zj",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"outShapeValue": 4.7,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"riskFlag": true,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -110,10 +110,10 @@
"code": "st_23_shtycz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 4.77,
"outShapeValue": 4.9,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -125,19 +125,19 @@
"tbmUrl": null
},
{
"id": "a09f9a4fe49d7c2357b4e052828c9038",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "a09f9a4fe49d7c2357b4e052828c9038",
"sectionName": "广兰路站",
"id": "e65cf40a99db961a63944a0c826cccf5",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "e65cf40a99db961a63944a0c826cccf5",
"sectionName": "龙瑞路站",
"sectionType": "基坑",
"code": "st_21_gllz",
"code": "st_23_lrlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.72,
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -149,19 +149,19 @@
"tbmUrl": null
},
{
"id": "aebdb8ff12aec619273a64e086d46cc9",
"id": "d396f406ff4666034c852ba279619820",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "aebdb8ff12aec619273a64e086d46cc9",
"sectionName": "张江站",
"sectionId": "d396f406ff4666034c852ba279619820",
"sectionName": "杨高北路站",
"sectionType": "基坑",
"code": "st_21_zj",
"code": "st_21_ygblz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 1.84,
"outShapeValue": 2.88,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -173,19 +173,19 @@
"tbmUrl": null
},
{
"id": "c71726b6c7c2b0de582b91c236fb42ec",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "c71726b6c7c2b0de582b91c236fb42ec",
"sectionName": "浦东足球场站",
"id": "6e61d3c737a1117d79e724f0888b8bc0",
"lineId": "469529aefc627f86ec176ca1c4d6754",
"lineName": "20号线",
"sectionId": "6e61d3c737a1117d79e724f0888b8bc0",
"sectionName": "上海西站站",
"sectionType": "基坑",
"code": "st_21_pdzqc",
"code": "st_20_shxzz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.04,
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -197,19 +197,19 @@
"tbmUrl": null
},
{
"id": "d396f406ff4666034c852ba279619820",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "d396f406ff4666034c852ba279619820",
"sectionName": "杨高北路站",
"id": "748355362fbe1ad01bca31479d9e9018",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "748355362fbe1ad01bca31479d9e9018",
"sectionName": "申江路站",
"sectionType": "基坑",
"code": "st_21_ygblz",
"code": "st_cm_sjldtz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"outShapeValue": 3.42,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -245,6 +245,30 @@
"tbmUrl": null
},
{
"id": "9e7b2280325bd3c2ecdcee7aa62f0c65",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "9e7b2280325bd3c2ecdcee7aa62f0c65",
"sectionName": "幸乐路逃生井",
"sectionType": "基坑",
"code": "st_13_xlltsj",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "4713cac3e94f66dbf6ea59d5a84fad1c",
"lineId": "1769529aefc627f86ec176ca1c4d6754",
"lineName": "17号线",
......@@ -269,6 +293,54 @@
"tbmUrl": null
},
{
"id": "a09f9a4fe49d7c2357b4e052828c9038",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "a09f9a4fe49d7c2357b4e052828c9038",
"sectionName": "广兰路站",
"sectionType": "基坑",
"code": "st_21_gllz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.72,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "c71726b6c7c2b0de582b91c236fb42ec",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "c71726b6c7c2b0de582b91c236fb42ec",
"sectionName": "浦东足球场站",
"sectionType": "基坑",
"code": "st_21_pdzqc",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.04,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "67b084e70b97dde6504e0e2c67c4323c",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
......@@ -281,7 +353,7 @@
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -293,11 +365,83 @@
"tbmUrl": null
},
{
"id": "09eb109851f522dc40a93aa10cce7740",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "09eb109851f522dc40a93aa10cce7740",
"sectionName": "大康路站",
"sectionType": "基坑",
"code": "st_18_tklz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "705d8f4c1d443a090a42a61c827dbc67",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "705d8f4c1d443a090a42a61c827dbc67",
"sectionName": "华泾路站",
"sectionType": "基坑",
"code": "st_23_hjlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "2f252bae6f658af43f99c5a8b72eb205",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "2f252bae6f658af43f99c5a8b72eb205",
"sectionName": "江杨南路站~爱辉路站区间",
"sectionType": "区间",
"code": "st_18_jynlz_ahlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": "下行",
"totalRings": 1321,
"digedRings": 207,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "bc672ae575a1e5e5c5e84a8fd9514c30",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "bc672ae575a1e5e5c5e84a8fd9514c30",
"sectionName": "浦东大小盾构转换段-1#大小盾构转换段",
"sectionName": "浦东大小盾构转换段~1#大小盾构转换段区间",
"sectionType": "区间",
"code": "st_cm_pddxdgzhd_dxdgzhdqjsd",
"riskLevel": "一级重大风险",
......@@ -305,10 +449,10 @@
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": "单线",
"totalRings": 3871,
"digedRings": 808,
"digedRings": 2095,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -321,7 +465,7 @@
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "8c493026d9e5da0e030b7b833c6a6d1c",
"sectionName": "2#大小盾构转换段-3#大小盾构转换段",
"sectionName": "2#大小盾构转换段~3#大小盾构转换段区间",
"sectionType": "区间",
"code": "st_cm_2_dxdgzhd_3_dxdgzhdbgddgqj",
"riskLevel": "一级重大风险",
......@@ -329,10 +473,274 @@
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "单线",
"totalRings": 4512,
"digedRings": 279,
"alarmTime": "2023-11-28",
"direction": "单线",
"totalRings": 4512,
"digedRings": 1542,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "fa6bdcd2011aecf972bdcd291fadacbf",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "fa6bdcd2011aecf972bdcd291fadacbf",
"sectionName": "凌河路站",
"sectionType": "基坑",
"code": "st_21_lhlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 5.09,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-26",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "0761e75c65b9d94c634cb52430ddb06c",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "0761e75c65b9d94c634cb52430ddb06c",
"sectionName": "申江南路站",
"sectionType": "基坑",
"code": "st_21_sjnlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 5.97,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "ba3a5ee761d662677182e74c5cc53bf9",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "ba3a5ee761d662677182e74c5cc53bf9",
"sectionName": "唐黄路站",
"sectionType": "基坑",
"code": "st_21_thlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.55,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "bf520af17aeb7b2e5a30291371ea83ab",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "bf520af17aeb7b2e5a30291371ea83ab",
"sectionName": "呼兰路站",
"sectionType": "基坑",
"code": "st_18_hllz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.43,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "e6c512ae6aa9306459b668234f11042f",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "e6c512ae6aa9306459b668234f11042f",
"sectionName": "六陈路站",
"sectionType": "基坑",
"code": "st_21_lclz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "a06fcb303a410c187e46a4bd3414e4d7",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "a06fcb303a410c187e46a4bd3414e4d7",
"sectionName": "东靖路站",
"sectionType": "基坑",
"code": "st_21_djlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.75,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "a39cb004310bbbce75c92c50fa3051c2",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "a39cb004310bbbce75c92c50fa3051c2",
"sectionName": "文井路站",
"sectionType": "基坑",
"code": "st_23_wjlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "eb54346b9191a11e30daff4c7ecdb4b7",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "eb54346b9191a11e30daff4c7ecdb4b7",
"sectionName": "东滩站",
"sectionType": "基坑",
"code": "st_cm_dtz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "480e5cd4c6cc9e2b7bf7ed59415865fb",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "480e5cd4c6cc9e2b7bf7ed59415865fb",
"sectionName": "徐浦大桥站",
"sectionType": "基坑",
"code": "st_23_xpdqz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 4.63,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "b99aef546fd4a9f364eed718fb2f03b5",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "b99aef546fd4a9f364eed718fb2f03b5",
"sectionName": "高斯路站",
"sectionType": "基坑",
"code": "st_21_gslz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 0.45,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "70dde71b93a3376e45e6d23af8028c4f",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "70dde71b93a3376e45e6d23af8028c4f",
"sectionName": "浦东大小盾构转换井",
"sectionType": "基坑",
"code": "st_cm_pdddgzhj",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.37,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -341,19 +749,19 @@
"tbmUrl": null
},
{
"id": "b99aef546fd4a9f364eed718fb2f03b5",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "b99aef546fd4a9f364eed718fb2f03b5",
"sectionName": "高斯路站",
"id": "f0f44233ceb507db0c83eb7fb1437114",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "f0f44233ceb507db0c83eb7fb1437114",
"sectionName": "华宁路站",
"sectionType": "基坑",
"code": "st_21_gslz",
"code": "st_23_hnlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -365,19 +773,19 @@
"tbmUrl": null
},
{
"id": "bf520af17aeb7b2e5a30291371ea83ab",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "bf520af17aeb7b2e5a30291371ea83ab",
"sectionName": "呼兰路站",
"id": "916cb2beda18a16569a52ec0fb70f23c",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "916cb2beda18a16569a52ec0fb70f23c",
"sectionName": "景联路站",
"sectionType": "基坑",
"code": "st_18_hllz",
"code": "st_23_jllz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"outShapeValue": 2.98,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -389,19 +797,19 @@
"tbmUrl": null
},
{
"id": "a06fcb303a410c187e46a4bd3414e4d7",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "a06fcb303a410c187e46a4bd3414e4d7",
"sectionName": "东靖路站",
"id": "3703e7d2bbf6181455826cb3acc59dc5",
"lineId": "9369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线",
"sectionId": "3703e7d2bbf6181455826cb3acc59dc5",
"sectionName": "高科中路站",
"sectionType": "基坑",
"code": "st_21_djlz",
"code": "st_13_east_gkzlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 1.66,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -413,19 +821,19 @@
"tbmUrl": null
},
{
"id": "916cb2beda18a16569a52ec0fb70f23c",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "916cb2beda18a16569a52ec0fb70f23c",
"sectionName": "景联路站",
"id": "288bdab37e2ffd8cdf243985736c0a53",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "288bdab37e2ffd8cdf243985736c0a53",
"sectionName": "后滩",
"sectionType": "基坑",
"code": "st_23_jllz",
"code": "st_19_ht",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"outShapeValue": 0,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -437,19 +845,19 @@
"tbmUrl": null
},
{
"id": "0761e75c65b9d94c634cb52430ddb06c",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "0761e75c65b9d94c634cb52430ddb06c",
"sectionName": "申江南路站",
"id": "b568d7b31e598378f315347412f60505",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "b568d7b31e598378f315347412f60505",
"sectionName": "高宝路站",
"sectionType": "基坑",
"code": "st_21_sjnlz",
"code": "st_cm_gbl",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"outShapeValue": 1.85,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -461,19 +869,19 @@
"tbmUrl": null
},
{
"id": "fa6bdcd2011aecf972bdcd291fadacbf",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "fa6bdcd2011aecf972bdcd291fadacbf",
"sectionName": "凌河路站",
"id": "d0b16f73deaef887abe9b3407bc7e7dc",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "d0b16f73deaef887abe9b3407bc7e7dc",
"sectionName": "江杨南路",
"sectionType": "基坑",
"code": "st_21_lhlz",
"code": "st_18_jynl",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 3.81,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"outShapeValue": 2.32,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -485,19 +893,19 @@
"tbmUrl": null
},
{
"id": "6d40b389321a93442fd0bf92fc858dd5",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "6d40b389321a93442fd0bf92fc858dd5",
"sectionName": "徐泾东工作井",
"id": "908940219fed85dc65725d47c18a67cb",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "908940219fed85dc65725d47c18a67cb",
"sectionName": "长江西路",
"sectionType": "基坑",
"code": "st_2_xjdgzj",
"code": "st_18_cjxl",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -509,19 +917,19 @@
"tbmUrl": null
},
{
"id": "70dde71b93a3376e45e6d23af8028c4f",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "70dde71b93a3376e45e6d23af8028c4f",
"sectionName": "浦东大小盾构转换井",
"id": "501362ac89fac1ff405841f2fee905b7",
"lineId": "469529aefc627f86ec176ca1c4d6754",
"lineName": "20号线",
"sectionId": "501362ac89fac1ff405841f2fee905b7",
"sectionName": "彭越浦路站",
"sectionType": "基坑",
"code": "st_cm_pdddgzhj",
"code": "st_20_pyplz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -533,19 +941,19 @@
"tbmUrl": null
},
{
"id": "288bdab37e2ffd8cdf243985736c0a53",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "288bdab37e2ffd8cdf243985736c0a53",
"sectionName": "后滩",
"id": "2e469a247b4ac692ffb1484da5a42a9c",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "2e469a247b4ac692ffb1484da5a42a9c",
"sectionName": "金桥站",
"sectionType": "基坑",
"code": "st_19_ht",
"code": "st_21_jqz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 0,
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": null,
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -557,19 +965,19 @@
"tbmUrl": null
},
{
"id": "d0b16f73deaef887abe9b3407bc7e7dc",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "d0b16f73deaef887abe9b3407bc7e7dc",
"sectionName": "江杨南路",
"id": "9850bda73a8fb0d7a5305a810d0bf04d",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "9850bda73a8fb0d7a5305a810d0bf04d",
"sectionName": "金吉路站",
"sectionType": "基坑",
"code": "st_18_jynl",
"code": "st_cm_jjlz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.32,
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-06-20",
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -581,19 +989,19 @@
"tbmUrl": null
},
{
"id": "480e5cd4c6cc9e2b7bf7ed59415865fb",
"id": "9129c09b75e3f983886126d9e7a13aed",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "480e5cd4c6cc9e2b7bf7ed59415865fb",
"sectionName": "徐浦大桥站",
"sectionId": "9129c09b75e3f983886126d9e7a13aed",
"sectionName": "沪金高速站",
"sectionType": "基坑",
"code": "st_23_xpdqz",
"code": "st_23_hjgsz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -605,22 +1013,22 @@
"tbmUrl": null
},
{
"id": "bb862fa455b2d23099dcc6a74e9443d0",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "bb862fa455b2d23099dcc6a74e9443d0",
"sectionName": "纪翟路站-红卫河中间风井",
"id": "4e152461bb1d23050901f4c7fd76dcd0",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "4e152461bb1d23050901f4c7fd76dcd0",
"sectionName": "通南路站~长江西路站区间",
"sectionType": "区间",
"code": "st_13_jzlz_hwhzjfj",
"code": "st_18_tnlz_cjxlzqj",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": "上行",
"totalRings": 612,
"digedRings": 482,
"totalRings": 616,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -629,19 +1037,19 @@
"tbmUrl": null
},
{
"id": "b568d7b31e598378f315347412f60505",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "b568d7b31e598378f315347412f60505",
"sectionName": "高宝路站",
"id": "6d40b389321a93442fd0bf92fc858dd5",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "6d40b389321a93442fd0bf92fc858dd5",
"sectionName": "徐泾东工作井",
"sectionType": "基坑",
"code": "st_cm_gbl",
"riskLevel": "级",
"code": "st_2_xjdgzj",
"riskLevel": "级",
"buildStatus": "开工",
"outShapeValue": 1.85,
"safeStatus": "风险可控",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-08",
"alarmTime": "2023-12-15",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -665,7 +1073,7 @@
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-10",
"alarmTime": "2023-11-26",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -677,19 +1085,19 @@
"tbmUrl": null
},
{
"id": "109a493722d046c50cf3a37febe01558",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "109a493722d046c50cf3a37febe01558",
"sectionName": "蟠祥路站",
"id": "bb120bdeea7bf6673bc640e7d58b8329",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "bb120bdeea7bf6673bc640e7d58b8329",
"sectionName": "墨江路站",
"sectionType": "基坑",
"code": "st_2_pxlz",
"code": "st_23_mjlz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 3.88,
"outShapeValue": 4.91,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-11",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -712,8 +1120,8 @@
"buildStatus": "开工",
"outShapeValue": 4.06,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"riskFlag": true,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -725,19 +1133,19 @@
"tbmUrl": null
},
{
"id": "5d939bb4b02db33552ec12fbf1284d36",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "5d939bb4b02db33552ec12fbf1284d36",
"sectionName": "红卫河中间风井",
"id": "109a493722d046c50cf3a37febe01558",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "109a493722d046c50cf3a37febe01558",
"sectionName": "蟠祥路站",
"sectionType": "基坑",
"code": "st_13_hwhzjfj",
"code": "st_2_pxlz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 0,
"outShapeValue": 3.88,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -749,19 +1157,19 @@
"tbmUrl": null
},
{
"id": "9baa6e124b8c30edd368f770506fe43f",
"id": "175be34eb7b0acd4174d4d3102131102",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "9baa6e124b8c30edd368f770506fe43f",
"sectionName": "江川东路站",
"sectionId": "175be34eb7b0acd4174d4d3102131102",
"sectionName": "紫龙路站",
"sectionType": "基坑",
"code": "st_23_jcdlz",
"code": "st_23_zllz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 2.61,
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"riskFlag": false,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -782,7 +1190,55 @@
"code": "st_cm_lkblz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"outShapeValue": 3.29,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "ce8091559bfa90270c0679ecbf61ab79",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "ce8091559bfa90270c0679ecbf61ab79",
"sectionName": "康南路站",
"sectionType": "基坑",
"code": "st_21_knl",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 9.58,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "9baa6e124b8c30edd368f770506fe43f",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "9baa6e124b8c30edd368f770506fe43f",
"sectionName": "江川东路站",
"sectionType": "基坑",
"code": "st_23_jcdlz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 3.35,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
......@@ -797,21 +1253,21 @@
"tbmUrl": null
},
{
"id": "3703e7d2bbf6181455826cb3acc59dc5",
"lineId": "9369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线",
"sectionId": "3703e7d2bbf6181455826cb3acc59dc5",
"sectionName": "高科中路站",
"sectionType": "基坑",
"code": "st_13_east_gkzlz",
"id": "984877acf838704d5e55a9511cf661cd",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "984877acf838704d5e55a9511cf661cd",
"sectionName": "长兴岛站~2#大小盾构转换段区间",
"sectionType": "区间",
"code": "st_cm_zxdz_2_dxdgzhdqj",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"direction": "下行",
"totalRings": 795,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
......@@ -821,19 +1277,19 @@
"tbmUrl": null
},
{
"id": "ce8091559bfa90270c0679ecbf61ab79",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "ce8091559bfa90270c0679ecbf61ab79",
"sectionName": "康南路站",
"id": "c11c8219f9059f1d43af4baa0560d226",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "c11c8219f9059f1d43af4baa0560d226",
"sectionName": "季乐路站",
"sectionType": "基坑",
"code": "st_21_knl",
"code": "st_13_jllz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 4.93,
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-11",
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -845,19 +1301,19 @@
"tbmUrl": null
},
{
"id": "bb120bdeea7bf6673bc640e7d58b8329",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "bb120bdeea7bf6673bc640e7d58b8329",
"sectionName": "墨江路站",
"id": "764833d9ca12901837a11d2d3cefa736",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "764833d9ca12901837a11d2d3cefa736",
"sectionName": "封浜中间风井",
"sectionType": "基坑",
"code": "st_23_mjlz",
"code": "st_13_fbzjfj",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"alarmTime": "2023-11-28",
"direction": null,
"totalRings": null,
"digedRings": null,
......@@ -869,22 +1325,22 @@
"tbmUrl": null
},
{
"id": "984877acf838704d5e55a9511cf661cd",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "984877acf838704d5e55a9511cf661cd",
"sectionName": "长兴岛站-2#大小盾构转换段",
"id": "134a9f088414501c2aa5852f318c5ec7",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "134a9f088414501c2aa5852f318c5ec7",
"sectionName": "蟠祥路站~徐泾东站区间",
"sectionType": "区间",
"code": "st_cm_zxdz_2_dxdgzhdqj",
"riskLevel": "级",
"code": "st_2_pxlz_xjdzqj",
"riskLevel": "级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"riskFlag": false,
"alarmTime": null,
"direction": "下行",
"totalRings": 790,
"digedRings": 376,
"totalRings": 873,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -893,22 +1349,22 @@
"tbmUrl": null
},
{
"id": "b3a7418133343cca38a5d0a477700220",
"id": "698065f503b4ce7a905a36ae34f8933b",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "b3a7418133343cca38a5d0a477700220",
"sectionName": "长江西路站-江杨南路站",
"sectionType": "区间",
"code": "st_18_cjxl_jynlzqj",
"riskLevel": "级",
"sectionId": "698065f503b4ce7a905a36ae34f8933b",
"sectionName": "长江西路站~江杨南路站1#旁通道",
"sectionType": "旁通道",
"code": "st_18_cjxlz_jynlzqj1_",
"riskLevel": "级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "下行",
"totalRings": 692,
"digedRings": 254,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -917,14 +1373,14 @@
"tbmUrl": null
},
{
"id": "5750c984d4e9f1f0ed1a394526d3d8ed",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "5750c984d4e9f1f0ed1a394526d3d8ed",
"sectionName": "康南路~军民公路站区间",
"sectionType": "区间",
"code": "st_21_knl_jml",
"riskLevel": "三级",
"id": "e4fa3944bfb67351647c978e11e2fd74",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "e4fa3944bfb67351647c978e11e2fd74",
"sectionName": "爱辉路站2#风亭",
"sectionType": "基坑",
"code": "st_18_ahlz2_ft",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
......@@ -941,22 +1397,22 @@
"tbmUrl": null
},
{
"id": "134a9f088414501c2aa5852f318c5ec7",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "134a9f088414501c2aa5852f318c5ec7",
"sectionName": "蟠祥路站-徐泾东站",
"sectionType": "区间",
"code": "st_2_pxlz_xjdzqj",
"riskLevel": "三级",
"id": "dd27563ef78856497a29fe91f44bbfd0",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "dd27563ef78856497a29fe91f44bbfd0",
"sectionName": "北翟路停车场",
"sectionType": "基坑",
"code": "st_13_bzltcc",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "下行",
"totalRings": 873,
"digedRings": 174,
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
......@@ -965,13 +1421,13 @@
"tbmUrl": null
},
{
"id": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"sectionName": "世博大道2号出入口1号风亭",
"id": "d80569d68609132d8a77b97c94f558df",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "d80569d68609132d8a77b97c94f558df",
"sectionName": "市政配套4标",
"sectionType": "基坑",
"code": "st_19_sbdd1hfj",
"code": "st_12_west_szpt4b",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -989,13 +1445,13 @@
"tbmUrl": null
},
{
"id": "d80569d68609132d8a77b97c94f558df",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "d80569d68609132d8a77b97c94f558df",
"sectionName": "市政配套4标",
"id": "169814310f98c976affae46c4f954983",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "169814310f98c976affae46c4f954983",
"sectionName": "后滩站2#风亭",
"sectionType": "基坑",
"code": "st_12_west_szpt4b",
"code": "st_19_ht2hft",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1013,13 +1469,13 @@
"tbmUrl": null
},
{
"id": "f9576f459ef213199e550f9d11bfef97",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "f9576f459ef213199e550f9d11bfef97",
"sectionName": "市政配套3标",
"id": "ebdb7601f4ebddf7ed64db755ccadb17",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "ebdb7601f4ebddf7ed64db755ccadb17",
"sectionName": "世博大道4#出入口",
"sectionType": "基坑",
"code": "st_23_szpt3b",
"code": "st_19_sbdd4_crk",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1037,13 +1493,13 @@
"tbmUrl": null
},
{
"id": "d1548977a1e191b922493c662b9a32ec",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "d1548977a1e191b922493c662b9a32ec",
"sectionName": "市政配套2标",
"id": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"sectionName": "世博大道2号出入口1号风亭",
"sectionType": "基坑",
"code": "st_23_szpt2b",
"code": "st_19_sbdd1hfj",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1061,13 +1517,13 @@
"tbmUrl": null
},
{
"id": "070d39ebd3e949cb2c4e7614ebbf9786",
"id": "f9576f459ef213199e550f9d11bfef97",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "070d39ebd3e949cb2c4e7614ebbf9786",
"sectionName": "市政配套4标",
"sectionId": "f9576f459ef213199e550f9d11bfef97",
"sectionName": "市政配套3标",
"sectionType": "基坑",
"code": "st_23_szpt4b",
"code": "st_23_szpt3b",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1085,13 +1541,13 @@
"tbmUrl": null
},
{
"id": "e4fa3944bfb67351647c978e11e2fd74",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "e4fa3944bfb67351647c978e11e2fd74",
"sectionName": "爱辉路站2#风亭",
"id": "070d39ebd3e949cb2c4e7614ebbf9786",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "070d39ebd3e949cb2c4e7614ebbf9786",
"sectionName": "市政配套4标",
"sectionType": "基坑",
"code": "st_18_ahlz2#ft",
"code": "st_23_szpt4b",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1109,18 +1565,18 @@
"tbmUrl": null
},
{
"id": "ebdb7601f4ebddf7ed64db755ccadb17",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "ebdb7601f4ebddf7ed64db755ccadb17",
"sectionName": "世博大道4#出入口",
"id": "d24e42f1f2c3e7374aed972a0d2ece4a",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "d24e42f1f2c3e7374aed972a0d2ece4a",
"sectionName": "澄江路车辆段水系调整工程",
"sectionType": "基坑",
"code": "st_19_sbdd4#crk",
"code": "st_23_tccsxlhgc",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
......@@ -1133,13 +1589,13 @@
"tbmUrl": null
},
{
"id": "ca9b6841c3283fe478bc5e5aa8f9b0c2",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "ca9b6841c3283fe478bc5e5aa8f9b0c2",
"sectionName": "世博大道3#出入口",
"id": "d1548977a1e191b922493c662b9a32ec",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "d1548977a1e191b922493c662b9a32ec",
"sectionName": "市政配套2标",
"sectionType": "基坑",
"code": "st_19_sbdd",
"code": "st_23_szpt2b",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1283,7 +1739,7 @@
"sectionId": "b937099ae36559248851cbaa5c4625c5",
"sectionName": "世博大道1#出入口",
"sectionType": "基坑",
"code": "st_19_sbdd1#crk",
"code": "st_19_sbdd1_crk",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1307,7 +1763,7 @@
"sectionId": "a255ef310a7685af35b68d4b25191ae7",
"sectionName": "爱辉路站1#风亭",
"sectionType": "基坑",
"code": "st_18_ahlz1#ft",
"code": "st_18_ahlz1_ft",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1349,13 +1805,13 @@
"tbmUrl": null
},
{
"id": "33e61572703b97d6a74d3b5bc42c5331",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "33e61572703b97d6a74d3b5bc42c5331",
"sectionName": "市政配套1标",
"id": "9519cd55236e19c2b28a4078609c8528",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "9519cd55236e19c2b28a4078609c8528",
"sectionName": "长江西路站1#风亭",
"sectionType": "基坑",
"code": "st_23_szpt1b",
"code": "st_18_zjxlz1#ft",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
......@@ -1397,6 +1853,30 @@
"tbmUrl": null
},
{
"id": "33e61572703b97d6a74d3b5bc42c5331",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "33e61572703b97d6a74d3b5bc42c5331",
"sectionName": "市政配套1标",
"sectionType": "基坑",
"code": "st_23_szpt1b",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "706ebb7da721f4dc7da762110a210a8a",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
......@@ -1421,6 +1901,78 @@
"tbmUrl": null
},
{
"id": "6b6bfff2fd826e24bc748ffaeb9826a7",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "6b6bfff2fd826e24bc748ffaeb9826a7",
"sectionName": "徐泾东工作井附属风亭",
"sectionType": "基坑",
"code": "xjdgzjfuft",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "ca9b6841c3283fe478bc5e5aa8f9b0c2",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "ca9b6841c3283fe478bc5e5aa8f9b0c2",
"sectionName": "世博大道3#出入口",
"sectionType": "基坑",
"code": "st_19_sbdd",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "d4617bb5befa4dfc078d6ae942671554",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "d4617bb5befa4dfc078d6ae942671554",
"sectionName": "宝凌中间风井",
"sectionType": "基坑",
"code": "st_cm_blzjfj",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-11-27",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": null,
"lineId": null,
"lineName": "全线网",
......@@ -1430,7 +1982,7 @@
"code": null,
"riskLevel": null,
"buildStatus": null,
"outShapeValue": 2.31,
"outShapeValue": 3.5,
"safeStatus": null,
"riskFlag": null,
"alarmTime": null,
......@@ -1445,5 +1997,5 @@
"tbmUrl": null
}
],
"requestId": "c49e17ca-a883-4215-a671-87b761529fbf"
"requestId": "965c0592-0f0d-4b40-8b24-192f0bdbb1b4"
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<config>
<port>40006</port>
<monitorUrl>http://127.0.0.1:40001</monitorUrl>
<port>40000</port>
<monitorUrl>http://127.0.0.1:40005</monitorUrl>
<wsPath>ws://.........</wsPath>
</config>
\ No newline at end of file
/**
* 建设指挥 业财融合指标面板 3.5 逻辑
* 处理数据
* 建设指挥 业财融合指标面板 4.0 逻辑
* 处理数据 单位(亿元)
*/
import { estimateTableData, investmentStatusTableData } from "../../data/table/业财融合";
import { change } from "../../dataPackage/inBackOut";
import { BUSINESSFINANCE } from "../../config/titleEnum";
import { readQualityData } from "../../data/interface/writeJson";
import * as lineEnum from "../../config/lineEnum";
const path = require('path');
/**
......@@ -18,80 +21,81 @@ import { BUSINESSFINANCE } from "../../config/titleEnum";
* @return 总体投资: overallInvestment
* @return 支付完成情况: paymentSituation
*/
export function getEstimate(req, res) {
let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let line = req.query.line || "全网"; //线路
let tableData = estimateTableData();
// export function getEstimate(req, res) {
// let planningPeriod = req.query.planningPeriod || "全网"; //类型
// let line = req.query.line || "全网"; //线路
// let tableData = estimateTableData();
let result:any = {};
result["title"] = BUSINESSFINANCE.概算总数;
// let result:any = {};
// result["title"] = BUSINESSFINANCE.概算总数;
let data = change(["type", "line", "各线路概算金额", "投资完成", "投资计划", "用款累计执行", "用款计划"], tableData["概算总数数据"].bodyList );
// let data = change(["type", "line", "各线路概算金额", "投资完成", "投资计划", "用款累计执行", "用款计划"], tableData["概算总数数据"].bodyList );
let lineEstimateData = {};
let estimatedTotal = 0; //概算总数
let overallInvestment = []; //总体投资
let paymentSituation = []; //支付完成情况
// let lineEstimateData = {};
// let estimatedTotal = 0; //概算总数
// let overallInvestment = {}; //总体投资
// let paymentSituation = {}; //支付完成情况
let overallConf = ["投资完成", "投资计划"];
let paymentConf = ["用款累计执行", "用款计划"];
// let overallConf = ["投资完成", "投资计划"];
// let paymentConf = ["用款累计执行", "用款计划"];
data.forEach(item => {
let dataType = item.type;
let dataLine = item.line;
// data.forEach(item => {
// let dataType = item.type;
// let dataLine = item.line;
/**全网总概算 */
estimatedTotal += item.各线路概算金额;
// /**全网总概算 */
// estimatedTotal += item.各线路概算金额;
/**各线路概算 */
let estimatedValue = Math.round(item.各线路概算金额 * 100) / 100;
if (!lineEstimateData[dataType]) lineEstimateData[dataType] = {"全网":[]};
if (!lineEstimateData[dataType][dataLine]) lineEstimateData[dataType][dataLine] = [];
lineEstimateData[dataType][dataLine].push({key: item.line, value: estimatedValue});
lineEstimateData[dataType]["全网"].push({key: item.line, value: estimatedValue});
// /**各线路概算 */
// let estimatedValue = Math.round(item.各线路概算金额 * 100) / 100;
// if (!lineEstimateData[dataType]) lineEstimateData[dataType] = {"全网":[]};
// if (!lineEstimateData[dataType][dataLine]) lineEstimateData[dataType][dataLine] = [];
// lineEstimateData[dataType][dataLine].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100});
// lineEstimateData[dataType]["全网"].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100});
/**总体投资完成比 */
if (!overallInvestment[dataType]) overallInvestment[dataType] = {"全网":{}};
if (!overallInvestment[dataType][dataLine]) overallInvestment[dataType][dataLine] = {};
for (let name in overallConf) {
overallInvestment[dataType][dataLine][overallConf[name]] = item[overallConf[name]];
if (!overallInvestment[dataType]["全网"][overallConf[name]]) overallInvestment[dataType]["全网"][overallConf[name]] = 0;
overallInvestment[dataType]["全网"][overallConf[name]] += item[overallConf[name]];
}
// /**总体投资完成比 */
// if (!overallInvestment[dataType]) overallInvestment[dataType] = {"全网":{}};
// if (!overallInvestment[dataType][dataLine]) overallInvestment[dataType][dataLine] = {};
// for (let name in overallConf) {
// overallInvestment[dataType][dataLine][overallConf[name]] = item[overallConf[name]];
// if (!overallInvestment[dataType]["全网"][overallConf[name]]) overallInvestment[dataType]["全网"][overallConf[name]] = 0;
// overallInvestment[dataType]["全网"][overallConf[name]] += item[overallConf[name]];
// }
/**支付完成情况 */
if (!paymentSituation[dataType]) paymentSituation[dataType] = {"全网":{}};
if (!paymentSituation[dataType][dataLine]) paymentSituation[dataType][dataLine] = {};
for (let name in paymentConf) {
paymentSituation[dataType][dataLine][paymentConf[name]] = item[paymentConf[name]];
if (!paymentSituation[dataType]["全网"][paymentConf[name]]) paymentSituation[dataType]["全网"][paymentConf[name]] = 0;
paymentSituation[dataType]["全网"][paymentConf[name]] += item[paymentConf[name]];
}
// /**支付完成情况 */
// if (!paymentSituation[dataType]) paymentSituation[dataType] = {"全网":{}};
// if (!paymentSituation[dataType][dataLine]) paymentSituation[dataType][dataLine] = {};
// for (let name in paymentConf) {
// paymentSituation[dataType][dataLine][paymentConf[name]] = item[paymentConf[name]];
// if (!paymentSituation[dataType]["全网"][paymentConf[name]]) paymentSituation[dataType]["全网"][paymentConf[name]] = 0;
// paymentSituation[dataType]["全网"][paymentConf[name]] += item[paymentConf[name]];
// }
});
// });
result["estimatedTotal"] = {key: "全网总概算", value: Math.round(estimatedTotal * 100) / 100};
result["lineEstimate"] = lineEstimateData[planningPeriod][line];
// result["estimatedTotal"] = {key: "全网总概算(亿元)", value: Math.round(estimatedTotal/10000 * 100) / 100};
// result["lineEstimate"] = lineEstimateData[planningPeriod][line];
let overallInvestmentData = overallInvestment[planningPeriod][line]; //投资完成、投资计划
let accumulatedProportion = (overallInvestmentData["投资完成"] / overallInvestmentData["投资计划"]*100 ).toFixed(2);
result["overallInvestment"] = {
"proportion": overallInvestmentData["建设期累计占比"] == 0 ? 0 : accumulatedProportion || 0,//建设期累计占比=投资完成/投资计划
"complete": (overallInvestmentData["投资完成"] / 10000).toFixed(2),
"plan": (overallInvestmentData["投资计划"] / 10000).toFixed(2)
};
// let overallInvestmentData = overallInvestment[planningPeriod][line]; //投资完成、投资计划
// let accumulatedProportion = Math.round((overallInvestmentData["投资完成"] / overallInvestmentData["投资计划"]*100 || 0 ) *100)/100;
// result["overallInvestment"] = {
// "proportion": overallInvestmentData["建设期累计占比"] == 0 ? 0 : accumulatedProportion || 0,//建设期累计占比=投资完成/投资计划
// "complete": Math.round((overallInvestmentData["投资完成"] / 10000)*100)/100,
// "plan": Math.round((overallInvestmentData["投资计划"] / 10000)*100)/100
// };
let paymentSituationData = paymentSituation[planningPeriod][line]; //投资完成、投资计划
// let paymentSituationData = paymentSituation[planningPeriod][line]; //投资完成、投资计划
let percentComplete = (paymentSituationData["用款累计执行"] / paymentSituationData["用款计划"]*100 ).toFixed(2);
result["paymentSituation"] = {
"proportion": paymentSituationData["建设期累计完成比"] == 0 ? 0 : percentComplete || 0,//建设期累计完成比=用款累计执行/用款计划
"complete": (paymentSituationData["用款累计执行"] / 10000).toFixed(2),
"plan": (paymentSituationData["用款计划"] / 10000).toFixed(2)
};
// let percentComplete = Math.round((paymentSituationData["用款累计执行"] / paymentSituationData["用款计划"]*100 || 0 )*100)/100;
// result["paymentSituation"] = {
// "proportion": paymentSituationData["建设期累计完成比"] == 0 ? 0 : percentComplete || 0,//建设期累计完成比=用款累计执行/用款计划
// "complete": Math.round((paymentSituationData["用款累计执行"] / 10000)*100)/100,
// "plan": Math.round((paymentSituationData["用款计划"] / 10000)*100)/100
// };
res.send(result);
}
// res.send(result);
// }
......@@ -106,8 +110,9 @@ export async function getInvestmentCompletion(req, res) {
let line = "全网"
let tableData = investmentStatusTableData();
let data = change(["line", "年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let conf = ["年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"];
// let data = change(["line", "年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let data = change(["line", "一月至今累计完成", "一月至今累计动拆迁", "一月至今计划完成", "一月至今计划动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let conf = ["一月至今累计完成", "一月至今累计动拆迁", "一月至今计划完成", "一月至今计划动拆迁", "年度投资计划", "年度投资计划动拆迁"];
let result:any = {};
result["title"] = BUSINESSFINANCE.投资完成情况;
......@@ -137,19 +142,176 @@ export async function getInvestmentCompletion(req, res) {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
}
let annualAccumulationData = annualAccumulation[line] || defalut;
let annualProportion = (annualAccumulationData["年度累计"] / annualAccumulationData["年度投资计划"]*100 ).toFixed(2)
let annualProportion = Math.round((annualAccumulationData["一月至今累计完成"] / annualAccumulationData["年度投资计划"]*100 || 0 )*100)/100
result["annualAccumulation"] = {
"proportion": annualAccumulationData["年度累计占比"] == 0 ? 0 : annualProportion || 0,//年度累计占比=一月至今累计完成/年度投资计划
"count": Math.round((annualAccumulationData["一月至今累计完成"] / 10000)*100)/100 || 0,//一月至今累计完成
"countRelocation": Math.round((annualAccumulationData["一月至今累计动拆迁"] / 10000)*100)/100 || 0,//一月至今累计动拆迁
"plan": Math.round((annualAccumulationData["一月至今计划完成"] / 10000)*100)/100 || 0,//一月至今计划完成
"planRelocation": Math.round((annualAccumulationData["一月至今计划动拆迁"] / 10000)*100)/100 || 0,//一月至今计划动拆迁
"expected": Math.round((annualAccumulationData["年度投资计划"] / 10000)*100)/100 || 0,//年度投资计划
"expectedRelocation": Math.round((annualAccumulationData["年度投资计划动拆迁"] / 10000)*100)/100 || 0,//年度投资计划动拆迁
};
res.send(result);
}
export function getEstimate(req, res) {
let planningPeriod = req.query.planningPeriod || "全网"; //规划期
let line = req.query.line || "全网"; //线路
let tableData = estimateTableData();
let result:any = {};
result["title"] = BUSINESSFINANCE.概算总数;
let data = change(["type", "line", "各线路概算金额", "建设期累计完成", "总投资额", "建设期累计用款执行", "动态成本", "1月至今累计完成", "1月至今累计动拆迁", "1月至今计划", "1月至今计划动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["概算总数数据"].bodyList );
let lineEstimateData = {"全网":{"全网":[]}};
let estimatedTotal = 0; //概算总数
let overallInvestment = {"全网":{"全网":{"建设期累计完成":0, "总投资额":0}}}; //总体投资
let paymentSituation = {"全网":{"全网":{"建设期累计用款执行":0, "动态成本":0}}}; //支付完成情况
let annualAccumulation = {"全网":{"全网":{"1月至今累计完成":0, "1月至今累计动拆迁":0, "1月至今计划":0, "1月至今计划动拆迁":0, "年度投资计划":0, "年度投资计划动拆迁":0}}}; //2023投资完成情况
let overallConf = ["建设期累计完成", "总投资额"];
let paymentConf = ["建设期累计用款执行", "动态成本"];
let annualAccumulationConf = ["1月至今累计完成", "1月至今累计动拆迁", "1月至今计划", "1月至今计划动拆迁", "年度投资计划", "年度投资计划动拆迁"];
data.forEach(item => {
let dataType = item.type;
let dataLine = item.line;
/**全网总概算 */
estimatedTotal += item.各线路概算金额;
/**各线路概算 */
let estimatedValue = Math.round(item.各线路概算金额 * 100) / 100;
lineEstimateData["全网"]["全网"].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100}); //规划期“全网”、线路“全网”
if(!lineEstimateData["全网"][dataLine]) lineEstimateData["全网"][dataLine] = []; //规划期“全网”、线路“选择”
lineEstimateData["全网"][dataLine].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100});
if(!lineEstimateData[dataType]) lineEstimateData[dataType] = {"全网":[]}; //规划期“选择”、线路“全网”
if(!lineEstimateData[dataType]["全网"]) lineEstimateData[dataType]["全网"] = [];
lineEstimateData[dataType]["全网"].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100});
if (!lineEstimateData[dataType][dataLine]) lineEstimateData[dataType][dataLine] = []; //规划期“选择”、线路“选择”
lineEstimateData[dataType][dataLine].push({key: item.line, value: Math.round(estimatedValue/10000 *100)/100});
/**总体投资完成比 */
overallInvestment = getConfData(overallInvestment, overallConf, dataType, dataLine, item);
/**支付完成情况 */
paymentSituation = getConfData(paymentSituation, paymentConf, dataType, dataLine, item);
/**2023投资完成情况 */
annualAccumulation = getConfData(annualAccumulation, annualAccumulationConf, dataType, dataLine, item);
});
result["estimatedTotal"] = {key: "全网总概算(亿元)", value: Math.round(estimatedTotal/10000 * 100) / 100};
result["lineEstimate"] = lineEstimateData[planningPeriod][line];
let overallInvestmentData = overallInvestment[planningPeriod][line]; //建设期累计完成、总投资额
let accumulatedProportion = Math.round((overallInvestmentData["建设期累计完成"] / overallInvestmentData["总投资额"]*100 || 0 ) *100)/100;
result["overallInvestment"] = {
"proportion": overallInvestmentData["建设期累计占比"] == 0 ? 0 : accumulatedProportion || 0,//建设期累计占比=建设期累计完成/总投资额
"complete": Math.round((overallInvestmentData["建设期累计完成"] / 10000)*100)/100,
"plan": Math.round((overallInvestmentData["总投资额"] / 10000)*100)/100
};
let paymentSituationData = paymentSituation[planningPeriod][line]; //投资完成、投资计划
let url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res/投资管控指标面板json", "response_1686904561486.json");
let dynamicCost = readQualityData(url);
let extData = {"全网": 0}
dynamicCost.forEach( item => {
let name = item.name;
let 动态成本 = item.extData.节点概算成本Model.动态成本;
extData[name] = 动态成本;
extData["全网"] += 动态成本;
})
for(let key in extData) {
if (planningPeriod) {
let lineEnumData = lineEnum.三期规划ENUM;
for(let enumKey in lineEnumData) {
if(key == enumKey) {
paymentSituationData["动态成本"] += extData[key];
}
}
} else {
if(key == line) {
paymentSituationData["动态成本"] += extData[key];
}
}
}
let percentComplete = Math.round((paymentSituationData["建设期累计用款执行"] / paymentSituationData["动态成本"]*100 || 0 )*100)/100;
result["paymentSituation"] = {
"proportion": paymentSituationData["建设期累计完成比"] == 0 ? 0 : percentComplete || 0,//建设期累计完成比=建设期累计用款执行/动态成本
"complete": Math.round((paymentSituationData["建设期累计用款执行"] / 10000)*100)/100,
"plan": Math.round((paymentSituationData["动态成本"]/ 10000000000)*100)/100
};
let defalut = {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
}
let annualAccumulationData = annualAccumulation[planningPeriod][line] || defalut;
let annualProportion = Math.round((annualAccumulationData["1月至今累计完成"] / annualAccumulationData["年度投资计划"]*100 || 0 )*100)/100
result["annualAccumulation"] = {
"proportion": annualAccumulationData["年度累计占比"] == 0 ? 0 : annualProportion || 0,//年度累计占比=年度累计/年度投资计划
"count": (annualAccumulationData["年度累计"] / 10000).toFixed(2) || 0,//年度累计
"countRelocation":(annualAccumulationData["年度累计动拆迁"] / 10000).toFixed(2) || 0,//年度动拆迁
"expected":(annualAccumulationData["年度投资计划"] / 10000).toFixed(2) || 0,//年度投资计划
"expectedRelocation":(annualAccumulationData["年度投资计划动拆迁"] / 10000).toFixed(2) || 0,//年度投资计划动拆迁
"proportion": annualAccumulationData["年度累计占比"] == 0 ? 0 : annualProportion || 0,//年度累计占比=一月至今累计完成/年度投资计划
"count": Math.round((annualAccumulationData["1月至今累计完成"] / 10000)*100)/100 || 0,//一月至今累计完成
"countRelocation": Math.round((annualAccumulationData["1月至今累计动拆迁"] / 10000)*100)/100 || 0,//一月至今累计动拆迁
"plan": Math.round((annualAccumulationData["1月至今计划"] / 10000)*100)/100 || 0,//一月至今计划完成
"planRelocation": Math.round((annualAccumulationData["1月至今计划动拆迁"] / 10000)*100)/100 || 0,//一月至今计划动拆迁
"expected": Math.round((annualAccumulationData["年度投资计划"] / 10000)*100)/100 || 0,//年度投资计划
"expectedRelocation": Math.round((annualAccumulationData["年度投资计划动拆迁"] / 10000)*100)/100 || 0,//年度投资计划动拆迁
};
res.send(result);
return result;
}
function getConfData(data, conf, type, line, item) {
if(!data["全网"][line]) data["全网"][line] = {}; //规划期“全网”、线路“选择”
if(!data[type]) data[type] = {"全网": {}}; //规划期“选择”、线路“全网”
if(!data[type][line]) data[type][line] = {}; //规划期“选择”、线路“选择”
for (let name in conf) {
data[type][line][conf[name]] = item[conf[name]];
if(!data["全网"]["全网"][conf[name]]) data["全网"]["全网"][conf[name]] = 0;
if(!data[type]["全网"][conf[name]]) data[type]["全网"][conf[name]] = 0;
data["全网"]["全网"][conf[name]] += item[conf[name]];
data[type]["全网"][conf[name]] += item[conf[name]];
if(!data["全网"][line][conf[name]]) data["全网"][line][conf[name]] = 0;
data["全网"][line][conf[name]] += item[conf[name]];
}
return data;
}
/**
* 建设指挥 投资管控指标面板 合同预警弹窗 3.5 逻辑
* 建设指挥 投资管控指标面板 合同预警弹窗 4.0 逻辑
* 处理数据
*/
import { budgetwarningTableData, detailedTableData, targetcostTableData } from "../../data/table/投资管控";
import { budgetwarningTableData, detailedTableData, estimateEarlyWarningTableData, targetcostTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
import { tablePackage } from "../../dataPackage/inFrontOut";
import { getTableOut } from "../../dataPackage/out";
import { getKeyValueOut, getTableOut } from "../../dataPackage/out";
/**
* 概算预警浮窗
* @param req
* @param res
*/
export function getEstimateEarlyWarning(req, res) {
let tableData = estimateEarlyWarningTableData();
let ret:any = {};
let estimateEarlyWarning = change(["key", "value", "url"], tableData["概算预警"].bodyList);
// let estimateEarlyWarning = getKeyValueOut("概算预警", tableData['概算预警'].dataList)
ret["estimateEarlyWarning"] = estimateEarlyWarning;
res.send(ret);
}
/**
* 三级概算预警详情
* 弃用
* @param req
* @param res
*/
......@@ -28,6 +48,7 @@ export function getBudgetWarning(req, res) {
/**
* 线路概算——目标成本
* 弃用
* @param req
* @param res
*/
......@@ -53,6 +74,7 @@ export function getTargetCost(req, res) {
/**
* 线路概算——下拉选择类型
* 弃用
* @param req
* @param res
*/
......@@ -77,6 +99,7 @@ export function getType(req, res) {
/**
* 线路概算——详情
* 弃用
* @param req
* @param res
*/
......
/**
* 建设指挥 投资管控指标面板 决算弹窗 4.0 逻辑
* 处理数据
*/
import { finalAcountsTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
/**
* 概算预警浮窗
* @param req
* @param res
*/
export function getEstimateEarlyWarning(req, res) {
let tableData = finalAcountsTableData();
let ret:any = {};
let estimateEarlyWarning = change(["key", "value", "url"], tableData["概算预警"].bodyList);
ret["estimateEarlyWarning"] = estimateEarlyWarning;
res.send(ret);
}
\ No newline at end of file
/**
* 建设指挥 投资管控指标面板 3.5 逻辑
* 建设指挥 投资管控指标面板 4.0 逻辑
* 处理数据
*/
......@@ -16,6 +16,8 @@ export function getInvest(req, res) {
let result:any = {};
//规划期、线路、执行完成百分比、距计划偏差、年度用款计划、一月至今计划、一月至今累计完成、
//完成百分比、年度用款计划、年度实际用款
let paymentExecutionData = change(
[
"planningPeriod", "line", "executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate",
......@@ -33,28 +35,60 @@ export function getInvest(req, res) {
let dataType = item.planningPeriod;
let dataLine = item.line;
for (let name = 0; name < paymentExecutionConf.length; name++){
if (!paymentExecution[dataType]) paymentExecution[dataType] = {"全网":{"executionCompletedProportion":0, "deviationFromPlan":0, "annualPaymentPlan1":0, "JanPlanToDate":0, "JanSoFarCummulativeComplete":0}};
if (!paymentExecution[dataType][dataLine]) paymentExecution[dataType][dataLine] = {"executionCompletedProportion":0, "deviationFromPlan":0, "annualPaymentPlan1":0, "JanPlanToDate":0, "JanSoFarCummulativeComplete":0};
if (!paymentExecution[dataType]) paymentExecution[dataType] = {
"全网":{
"executionCompletedProportion":0,
"deviationFromPlan":0,
"annualPaymentPlan1":0,
"JanPlanToDate":0,
"JanSoFarCummulativeComplete":0
}
};
if (!paymentExecution[dataType][dataLine]) paymentExecution[dataType][dataLine] = {
"executionCompletedProportion":0,
"deviationFromPlan":0,
"annualPaymentPlan1":0,
"JanPlanToDate":0,
"JanSoFarCummulativeComplete":0
};
paymentExecution[dataType]["全网"][paymentExecutionConf[name]] += item[paymentExecutionConf[name]] || 0;
paymentExecution[dataType][dataLine][paymentExecutionConf[name]] += item[paymentExecutionConf[name]] || 0;
}
for (let name = 0; name < specialPurposeBondsConf.length; name++) {
if (!specialPurposeBonds[dataType]) specialPurposeBonds[dataType] = {"全网":{"completionPercentage":0, "annualPaymentPlan2":0, "annualActualExpenditure":0}};
if (!specialPurposeBonds[dataType][dataLine]) specialPurposeBonds[dataType][dataLine] = {"completionPercentage":0, "annualPaymentPlan2":0, "annualActualExpenditure":0};
if (!specialPurposeBonds[dataType]) specialPurposeBonds[dataType] = {
"全网":{
"completionPercentage":0,
"annualPaymentPlan2":0,
"annualActualExpenditure":0
}
};
if (!specialPurposeBonds[dataType][dataLine]) specialPurposeBonds[dataType][dataLine] = {
"completionPercentage":0,
"annualPaymentPlan2":0,
"annualActualExpenditure":0
};
specialPurposeBonds[dataType]["全网"][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
specialPurposeBonds[dataType][dataLine][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
}
})
paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] = (paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] / Object.keys(paymentExecution[planningPeriod]).length * 100).toFixed(2);
let planningPeriodData = paymentExecution[planningPeriod][line]; //--------报错
for (let name = 0; name < paymentExecutionConf.length; name++){
paymentExecution[planningPeriod][line][paymentExecutionConf[name]] = Math.round((planningPeriodData[paymentExecutionConf[name]] / 10000)*100)/100;
}
for (let name = 0; name < specialPurposeBondsConf.length; name++) {
specialPurposeBonds[planningPeriod][line][specialPurposeBondsConf[name]] = Math.round((specialPurposeBonds[planningPeriod][line][specialPurposeBondsConf[name]] / 10000)*100)/100;
}
paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] = ((paymentExecution[planningPeriod]["全网"]["JanSoFarCummulativeComplete"]/paymentExecution[planningPeriod]["全网"]["annualPaymentPlan1"])*100).toFixed(2);
// paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] = (paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] / Object.keys(paymentExecution[planningPeriod]).length).toFixed(2);
result["paymentExecutionTitle"] = INVEST.用款执行;
result["paymentExecution"] = paymentExecution[planningPeriod][line];
specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = (specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] / Object.keys(specialPurposeBonds[planningPeriod]).length * 100).toFixed(2);
specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = ((specialPurposeBonds[planningPeriod]["全网"]["annualActualExpenditure"]/specialPurposeBonds[planningPeriod]["全网"]["annualPaymentPlan2"])*100).toFixed(2);
// specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = (specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] / Object.keys(specialPurposeBonds[planningPeriod]).length).toFixed(2);
result["specialPurposeBondsTitle"] = INVEST.专项债;
result["specialPurposeBonds"] = specialPurposeBonds[planningPeriod][line];
......
......@@ -3,11 +3,13 @@
* 处理数据
*/
import { lineConstructTableData, mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out';
import { lineConstructTableData, mapLineTableData, mapSiteJsonTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage, stringListPackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut, getStringOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut';
import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
import { readQualityData } from '../../data/interface/writeJson';
const path = require('path');
export function getMap(req, res) {
......@@ -70,12 +72,118 @@ export function getMap(req, res) {
})
let mapChangeLineData = [];
mapLineData.forEach( data => {
data.value = data.lineList.length;
let changeData = data;
if (data.lineList) changeData.value = data.lineList.length;
mapChangeLineData.push(changeData);
})
// ret['dt'] = defaultConfig.mapDefault;
ret['dt'] = {title: "线路列表", dataList: mapLineData};
res.send(ret);
}
\ No newline at end of file
}
/**
* 警报图片
* @param req
* @param res
*/
export function getEarlyWarning(req, res) {
let ret:any = {};
let earlyWarningData = [
{
type: 'warn',
position: { //警报地址
x: 6378135.248040633,
y: -1491.9380484303829,
z: 1850.1137940254034
},
img1: 'map/警报1.png',
img2: 'map/警报2.png',
img3: 'map/警报3.png',
img4: 'map/警报4.png',
},
{
type: 'normal',
position: { //警报地址
x: 6378136.284846687,
y: 2563.7555093702085,
z: -1815.1290212400193
},
img1: 'map/正常1.png',
img2: 'map/正常2.png',
img3: 'map/正常3.png',
img4: 'map/正常4.png'
}
];
ret['earlyWarning'] = earlyWarningData;
res.send(ret);
}
/**
* 站点锚点坐标
* @param req
* @param res
*/
export function getSiteCoordinates(req, res) {
let jsonname = req.query.jsonname || "19号线线路20221212.geojson";
let siteJsonTable = mapSiteJsonTableData();
let ret:any = {};
let siteJsonDataList = siteJsonTable['坐标json数据'].dataList;
ret['siteJson'] = {title: "线路对应坐标json", dataList: siteJsonDataList};
let url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res/车站坐标json", jsonname);
let data = readQualityData(url);
let features = data["features"];
let img = [];
let siteCoordinates = [];
features.forEach( item => {
let {type, geometry, properties} = item;
let geometryType = geometry["type"];
let geometryCoordinates = geometry["coordinates"] || [0, 0, 0];
let position = {
x: geometryCoordinates[0],
y: geometryCoordinates[1],
z: geometryCoordinates[2]
};
let line = "";
siteJsonDataList.forEach( item => {
let { key, value } = item;
if (value == jsonname) {
line = key;
}
})
if (geometryType == "Point") {
let warnTypeNum = Math.floor(Math.random() + 0.5);
let warnType = "";
if (warnTypeNum > 0) {
warnType = "warn";
img = ["map/警报1.png", "map/警报2.png", "map/警报3.png", "map/警报4.png"]
} else {
warnType = "normal";
img = ["map/正常1.png", "map/正常2.png", "map/正常3.png", "map/正常4.png"];
}
siteCoordinates.push({line, site: properties["name"], warnType, position, img });
}
})
ret["siteCoordinates"] = siteCoordinates;
res.send(ret);
}
import { readFolderData } from "../data/interface/writeJson";
import { lineTableData, planningPeriodTableData, yearTableData } from "../data/table/publicData";
import { change } from "../dataPackage/inBackOut";
import { stringListPackage } from "../dataPackage/inFrontOut";
import { getStringOut } from "../dataPackage/out";
const path = require('path');
export function getLine(req, res) {
......@@ -15,6 +17,19 @@ export function getLine(req, res) {
}
export function getLineJson(req, res) {
let url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res/车站坐标json");
// let url = "";
let lineData = readFolderData(url);
let ret:any = {};
ret['lineJson'] = lineData;
res.send(ret);
}
/**年份 */
export function getYear(req, res) {
let excelData = yearTableData();
......@@ -60,7 +75,7 @@ export function getPlanningPeriod(req, res) {
* @param res
*/
export function getLineByPlanningPeriod(req, res) {
let type = req.query.type || "三期规划调整";
let planningPeriod = req.query.planningPeriod || "三期规划调整";
let excelData = planningPeriodTableData();
let ret:any = {};
......@@ -72,7 +87,7 @@ export function getLineByPlanningPeriod(req, res) {
typeList[item.type].push(item.line);
})
let lineData = typeList[type];
let lineData = typeList[planningPeriod];
let lineDataList = [];
lineData.forEach( info=> {
......
......@@ -22,10 +22,10 @@ export async function getConstructionMilestones(req, res) {
let site = req.query.site || "西岑站";
let tableData = constructionMilestonesTableData();
//"线路", "站点名称", "站点状态", "建设内容", "时间", "建设状态"
let data = change(["line", "site", "state", "constructionContent", "constructionTime", "constructionStatus"], tableData["建设里程碑数据"].bodyList );
//"线路", "站点名称", "站点状态", "建设内容", "实际完成时间", "计划完成时间", "建设状态"
let data = change(["line", "site", "state", "constructionContent", "constructionTime", "plannedCompletionTime", "constructionStatus"], tableData["建设里程碑数据"].bodyList );
let conf = ["constructionContent", "constructionTime", "constructionStatus"];
let conf = ["constructionContent", "constructionTime", "plannedCompletionTime", "constructionStatus"];
let constructionMilestones = getPopupMoreData(line, data, conf);
......
......@@ -30,7 +30,7 @@ export async function getRemainingProblems(req, res) {
let remainingProblems = getPopupMoreData(line, data, conf);
let result = {"remainingProblems": remainingProblems[site]}
result["remainingProblems"]["total"] = result["remainingProblems"]["data"].length || 0;
res.send(result);
return result;
......
import { logError } from "../util/log";
import { Socket } from "../net/socket_server";
import { getDpData } from "../data/interface/wsData";
let connectionPool = {};
let data = [
{
type:'warn',
position:{
x: 6378135.248040633,
y: -1491.9380484303829,
z: 1850.1137940254034
},
vfx: {
width: '100px',
height: '200px',
img: 'http://192.168.0.71:40001/kineticEffect/色相饱和度994.png' //图片地址
}
}
]
export function broadcastMsg(data) {
for (let key in connectionPool) {
let result = {code:200, success:true, data};
try {
connectionPool[key].send(JSON.stringify(result));
} catch(err) {
logError(`广播消息失败: ${err}`);
}
}
}
function analysisUserUrl(req) {
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress;
return ip;
}
export async function initSocketServer(port) {
Socket.createServer(port, function (wss) {
wss.on('connection', function(ws, req) {
let ip = analysisUserUrl(req);
connectionPool[ip] = ws;
ws.on('message', function(data) {
//回应心跳包
if (data == 'i am heart') ws.send(JSON.stringify({success:true, code:199}));
});
ws.on('close', function (data){
if ( ws._socket && ws._socket._peername && ws._socket._peername.address ) {
let userId = ws._socket._peername.address;
console.log("close", userId);
delete connectionPool[userId];
}
});
let {initList, count} = getDpData();
// console.log(`前端连接本服务成功 => userId:${ip}, 发送初始化车辆:${count} 辆`);
initList.forEach(info => {
ws.send(JSON.stringify({code:200, success:true, data:info}));
});
});
});
}
......@@ -1369,30 +1369,24 @@ export const pipelineRelocationDetails = [
* 质量安全指标面板对接接口版本
*/
export const significantRiskDefault = {
"全网": {
"基坑": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"特大桥": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"区间": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
}
};
"基坑": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"旁通道": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
"区间": { level1MajorRisks: 0, riskTotal: 0, secure: 0, control: 0, focus: 0},
}
export const currentRiskDefault = {
"全线网": {
outShapeValue: 3.29,
bottomLoseRate: 4.8,
dbcjVariable: 0,
}
};
outShapeValue: 1.8,
bottomLoseRate: 4.8,
dbcjVariable: 0,
}
export const currentRiskDetailDefault = {
"全网": {
pit: 0,
interval: 0,
superMajorBridge: 0,
pitCount: 0,
intervalCount: 0,
superMajorBridgeCount: 0,
}
}
pit: 0,
interval: 0,
superMajorBridge: 0,
pitCount: 0,
intervalCount: 0,
superMajorBridgeCount: 0,
}
/**
* 线路对应名称
*/
export enum LINEENUM {
"长宁线(二号线西延伸)" = "长宁线(二号线西延伸)",
"长宁线(二号线西西延伸)(淞虹路~诸光路)" = "长宁线(二号线西西延伸)(淞虹路~诸光路)",
"二号线东延伸(龙阳路~浦东机场)" = "2号线东延伸(龙阳路~浦东机场)",
"二号线东延伸4改8项目" = "2号线东延伸4改8项目",
"明珠线二期(四号线)" = "明珠线二期(四号线)",
"五号线南延伸" = "5号线南延伸",
"五号线既有线改造工程" = "5号线既有设施改造",
"六号线(港城路~济阳路)" = "6号线(港城路~济阳路)",
"六号线港城路停车场扩建" = "6号线港城路停车场改扩建",
"七号线(锦秋路~芳甸路)" = "7号线(锦秋路~芳甸路)",
"七号线北延伸(锦秋路~罗店)" = "7号线北延伸(锦秋路~罗店)",
"七号线陈太路停车场扩建" = "7号线陈太路停车场扩建",
"杨浦线一期(市光路~成山路)" = "杨浦线一期(市光路~成山路)",
"杨浦线二期(成山路~航天公园)" = "杨浦线二期(成山路~航天公园)",
"浦江镇停车场扩建" = "8号线浦江镇停车场改造",
"八号线三期" = "8号线三期",
"九号线一期(松江新城~宜山路)" = "9号线一期(松江新城~宜山路)",
"九号线二期(宜山路~杨高中路)" = "9号线二期(宜山路~杨高中路)",
"九号线三期(南延伸)(松江南站~松江)" = "9号线三期南延伸",
"九号线三期(东延伸)" = "9号线东延伸",
"十号线(新江湾城~虹桥机场,含支线)" = "10号线(新江湾城~虹桥机场,含支线)",
"十号线二期" = "10号线二期",
"十一号线" = "11号线",
"十一号线二期" = "11号线二期",
"十一号线迪斯尼段" = "11号线迪斯尼段",
"十一号线陈翔路项目" = "11号线陈翔路项目",
"十二号线(七莘路~金海路)" = "12号线(七莘路~金海路)",
"十三号线一期" = "13号线一期",
"十三号线二期" = "13号线二期",
"十三号线三期" = "13号线三期",
"十六号线(原十一号线南段)" = "16号线(原十一号线南段)",
"十七号线(东方绿舟~虹桥火车站)" = "17号线(东方绿舟~虹桥火车站)",
"十五号线" = "15号线",
"十四号线" = "14号线",
"十八号线一期" = "18号线一期",
"三号线江杨北路停车场扩建" = "3号线江杨北路停车场扩建",
"上海市轨道交通网络运营指挥调度大楼" = "上海轨道交通指挥调度大楼",
"世博文化公园地下空间预留工程" = "19号线世博文化公园地下空间预留工程",
"通信服务平台" = "通信服务平台",
"崇明线" = "崇明线",
"二号线西延伸(徐泾东站-蟠祥路站)" = "2号线西延伸(徐泾东站-蟠祥路站)",
"十三号线西延伸(诸光路站-金运路站)" = "13号线西延伸(诸光路站-金运路站)",
"十七号线西延伸(西岑站-东方绿舟站)" = "17号线西延伸(西岑站-东方绿舟站)",
"十八号线二期(长江南路站-大康路站)" = "18号线二期(长江南路站-大康路站)",
"二十一号线一期(六陈路站-东靖路站)" = "21号线一期(六陈路站-东靖路站)",
"二十三号线(上海体育场站-闵行开发区)" = "23号线(上海体育场站-闵行开发区)",
"二十号线一期西段" = "20号线一期西段",
"十二号线西延伸" = "12号线西延伸",
"十三号线东延伸" = "13号线东延伸",
"十九号线(含北延伸)" = "19号线",
"十五号线南延伸" = "15号线南延伸",
"二十号线一期东段" = "20号线一期东段",
"二十号线一期东延伸" = "20号线一期东延伸",
"二十一号线一期东延伸" = "21号线一期东延伸",
"3/4号线综合改造(宝山段)" = "3/4号线综合改造(宝山段)",
"一号线车辆续购项目(16列)" = "1号线车辆续购项目(16列)",
"二号线车辆增购(21列)" = "2号线车辆增购(21列)",
"三四号线改造车辆增购" = "三四号线改造车辆增购",
"七号线车辆增购" = "7号线车辆增购",
"一号线车辆增购" = "1号线车辆增购",
"第三批六号线车辆增购" = "第三批6号线车辆增购",
"第三批八号线车辆增购" = "第三批8号线车辆增购",
"二号线东延伸车辆增购" = "2号线东延伸车辆增购",
"十号线一期车辆增购" = "10号线一期车辆增购",
"十二号线车辆增购" = "12号线车辆增购",
"5号线南延伸车辆采购40辆" = "5号线南延伸车辆采购40辆",
"6号线车辆增购补短板项目" = "6号线车辆增购补短板项目",
"8号线车辆增购补短板项目" = "8号线车辆增购补短板项目",
"1号线车辆增购补短板项目" = "1号线车辆增购补短板项目",
"9号线车辆增购补短板项目" = "9号线车辆增购补短板项目",
"12号线车辆增购补短板项目" = "12号线车辆增购补短板项目",
"7号线车辆增购补短板项目" = "7号线车辆增购补短板项目",
"16号线车辆增购补短板项目" = "16号线车辆增购补短板项目",
"2022年因合同调整事宜缓付车辆采购款" = "2022年因合同调整事宜缓付车辆采购款",
"行业数据中心" = "行业数据中心",
"高速数据网" = "高速数据网",
"进口博览会轨道交通专项安全保障系统" = "进口博览会轨道交通专项安全保障系统",
"2号线信号新增cbtc系统" = "2号线信号新增cbtc系统",
"网络大型装备增购" = "网络大型装备增购",
"网络大型专用检测维护与应急抢修设" = "网络大型专用检测维护与应急抢修设",
"1、2号线公安无线通信接入系统" = "1、2号线公安无线通信接入系统",
"3/4号线综合改造(信号系统更新改造)" = "3/4号线综合改造(信号系统)",
"川杨河基地和北翟路基地建造大型检测维护装备大修库" = "川杨河基地和北翟路基地建造大型检测维护装备大修库",
"6号线信号系统及配套改造工程" = "6号线信号系统及配套改造工程",
"13号线车地无线通信系统改造工程" = "13号线车地无线通信系统改造工程",
"11号线北段工程严御路站改造工程" = "11号线北段工程严御路站改造工程",
}
export enum 三期规划调整ENUM {
"12号线西延伸" = "十二号线西延伸",
"13号线东延伸" = "十三号线东延伸",
"15号线南延伸" = "十五号线南延伸",
"19号线北延伸" = "十九号线(含北延伸)",
"20号线一期东延伸" = "二十号线一期东延伸",
"21号线一期东延伸" = "二十一号线一期东延伸",
}
export enum 三期规划ENUM {
"2号线西延伸" = "二号线西延伸(徐泾东站-蟠祥路站)",
"13号线西延伸" = "十三号线西延伸(诸光路站-金运路站)",
"17号线西延伸" = "十七号线西延伸(西岑站-东方绿舟站)",
"18号线二期" = "十八号线二期(长江南路站-大康路站)",
"19号线" = "十九号线(含北延伸)",
"20号线一期东段" = "二十号线一期东段",
"20号线一期西段" = "二十号线一期西段",
"21号线一期" = "二十一号线一期(六陈路站-东靖路站)",
"23号线一期" = "二十三号线(上海体育场站-闵行开发区)",
"崇明线" = "崇明线",
}
export enum 二期规划ENUM {
"5号线南延伸" = "五号线南延伸",
"9号线东延伸" = "九号线三期(东延伸)",
"13号线二期" = "十三号线二期",
"14号线" = "十四号线",
"15号线" = "十五号线",
"17号线" = "十七号线(东方绿舟~虹桥火车站)",
"18号线一期" = "十八号线一期",
}
export enum 二期规划调整ENUM {
"8号线三期" = "八号线三期",
"10号线二期" = "十号线二期",
"13号线三期" = "十三号线三期",
}
export enum 一期规划ENUM {
"13号线一期" = "十三号线一期",
"2号线东延伸" = "二号线东延伸(龙阳路~浦东机场)",
}
export enum 已投运项目ENUM {
"2号线东延伸4改8项目" = "二号线东延伸4改8项目",
"3号线江杨北路停车场扩建" = "三号线江杨北路停车场扩建",
"7号线陈太路停车场扩建" = "七号线陈太路停车场扩建",
"浦江镇停车场扩建" = "浦江镇停车场扩建",
"9号线一期" = "九号线一期(松江新城~宜山路)",
"9号线三期南延伸" = "九号线三期(南延伸)(松江南站~松江)",
"10号线" = "十号线(新江湾城~虹桥机场,含支线)",
}
export enum 车辆增购项目ENUM {
"1号线车辆增购" = "一号线车辆增购",
"1号线车辆增购补短板项目" = "1号线车辆增购补短板项目",
"2号线东延伸车辆增购" = "二号线东延伸车辆增购",
"5号线南延伸车辆采购40辆" = "5号线南延伸车辆采购40辆",
"6号线车辆增购补短板项目" = "6号线车辆增购补短板项目",
"7号线车辆增购" = "七号线车辆增购",
"7号线车辆增购补短板项目" = "7号线车辆增购补短板项目",
"8号线车辆增购补短板项目" = "8号线车辆增购补短板项目",
"9号线车辆增购补短板项目" = "9号线车辆增购补短板项目",
"10号线一期车辆增购" = "十号线一期车辆增购",
"12号线车辆增购" = "十二号线车辆增购",
"12号线车辆增购补短板项目" = "12号线车辆增购补短板项目",
"16号线车辆增购补短板项目" = "16号线车辆增购补短板项目",
}
export enum 存量项目ENUM {
"行业数据中心" = "行业数据中心",
"2号线信号新增cbtc系统" = "2号线信号新增cbtc系统",
"网络大型设备" = "网络大型装备增购",
"网络大型专用检测维护与应急抢修设" = "网络大型专用检测维护与应急抢修设",
}
export enum 三年计划基建项目ENUM {
"3号线宝钢车辆段" = "3号线宝钢车辆段",
"3/4号线综合改造(信号系统)" = "3/4号线综合改造(信号系统更新改造)",
"川杨河基地和北翟路基地建造大型检测维护装备大修库" = "川杨河基地和北翟路基地建造大型检测维护装备大修库",
"6号线信号系统及配套改造工程" = "6号线信号系统及配套改造工程",
}
export enum 中期调整ENUM {
"11号线北段工程严御路站改造工程" = "11号线北段工程严御路站改造工程",
"13号线车地无线通信系统改造工程" = "13号线车地无线通信系统改造工程",
}
export enum 其他ENUM {
"5号线既有设施改造" = "五号线既有线改造工程",
"6号线港城路停车场改扩建" = "六号线港城路停车场扩建",
"8号线浦江镇停车场改造" = "浦江镇停车场扩建",
"11号线" = "十一号线",
"13号线世调段" = "13号线世调段",
"19号线世博文化公园地下空间预留工程" = "世博文化公园地下空间预留工程",
"上海轨道交通指挥调度大楼" = "上海市轨道交通网络运营指挥调度大楼",
"申通建设集团装修项目" = "申通建设集团装修项目",
}
......@@ -16,14 +16,16 @@ export async function initConfig() {
if (!configInfo || !configInfo.config) console.log("xml中无配置加载");
else {
//必要配置
let integralConfig = ["port", "monitorUrl"];
let integralConfig = ["port", "monitorUrl", "wsPath"];
checkConfig(integralConfig, configInfo.config);
let {port, monitorUrl} = configInfo.config;
let {port, monitorUrl, wsPath} = configInfo.config;
systemConfig.port = parseInt(port[0]);
systemConfig.monitorUrl = monitorUrl[0];
//ws
systemConfig.wsPath = wsPath[0];
}
} catch(err) {
......
......@@ -5,5 +5,6 @@
export class ServerConfig {
port:number;
monitorUrl:string;
qualitySafetyPanel:string //质量安全面板
qualitySafetyPanel:string; //质量安全面板
wsPath:string;
}
\ No newline at end of file
......@@ -10,9 +10,9 @@ import { INTERFACEREQUESTTYPEENUM } from "../../config/enum";
// }
// http://112.64.195.226:8899/api/openapi/v1/auth/getToken
export const Config = {
"获取token接口":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://112.64.195.226:8899/api/openapi/v1/auth/getToken", reqType:"post", header:{}, body:{}},
"质量安全指标面板":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://112.64.195.226:8899/api/openapi/v1/project/getSectionList", reqType:"post", header:{}, body:{}},
"获取token接口":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://10.151.2.2:8899/api/openapi/v1/auth/getToken", reqType:"post", header:{}, body:{}},
"质量安全指标面板":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://10.151.2.2:8899/api/openapi/v1/project/getSectionList", reqType:"post", header:{}, body:{}},
// "质量安全指标面板暂存json接口":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://192.168.0.71:40003/quality", reqType:"post", header:{}, body:{}},
};
......@@ -6,9 +6,12 @@
import { BizError } from "../../util/bizError";
import { readQualityData } from "./writeJson";
const path = require('path');
let url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'quality.json');
export async function getQualitySafetyPanel() {
let data = await readQualityData();
let data = await readQualityData(url);
// let data = await getInterfaceByInterfaceName("质量安全指标面板暂存json接口", {});
if (!data) throw new BizError("获取json数据失败");
......@@ -29,8 +32,14 @@ export async function getQualitySafetyPanel() {
if (!significantRisk[lineName]) significantRisk[lineName] = {};
if (sectionType != "特大桥") {
if (!significantRisk[lineName][sectionType]) significantRisk[lineName][sectionType] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk[lineName]["基坑"]) significantRisk[lineName]["基坑"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk[lineName]["旁通道"]) significantRisk[lineName]["旁通道"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk[lineName]["区间"]) significantRisk[lineName]["区间"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"][sectionType]) significantRisk["全网"][sectionType] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"]["基坑"]) significantRisk["全网"]["基坑"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"]["旁通道"]) significantRisk["全网"]["旁通道"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (!significantRisk["全网"]["区间"]) significantRisk["全网"]["区间"] = {level1MajorRisks:0, riskTotal:0, secure:0, control:0, focus:0};
if (riskLevel == "一级重大风险") { //一级重大风险
significantRisk[lineName][sectionType].level1MajorRisks = significantRisk[lineName][sectionType].level1MajorRisks + 1;
......
......@@ -5,15 +5,14 @@
import { BizError } from "../../util/bizError";
const fs = require('fs');
const path = require('path');
const url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'quality.json');
// const path = require('path');
// const url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'quality.json');
/**
* 写入json文件
* @param data
*/
export function writeQualityDataInJson(data) {
export function writeQualityDataInJson(data, url) {
let str = JSON.stringify(data, null, "\t");
fs.writeFileSync(url, str, function(err) {
if (err) {
......@@ -28,7 +27,7 @@ export function writeQualityDataInJson(data) {
/**
* 读取json文件
*/
export function readQualityData() {
export function readQualityData(url) {
let person = JSON.parse(fs.readFileSync(url));
if (!person) throw new BizError("读取文件数据失败");
return person;
......@@ -36,9 +35,19 @@ export function readQualityData() {
/**
* 读取文件夹里所有的json文件
*/
export function readFolderData(url) {
let files = fs.readdirSync(url);
if (!files) throw new BizError("获取文件夹数据失败");
return files;
}
/**
* 读取文件然后在原有文件内容的基础上添加内容,如果key名重复则覆盖
*/
function addData(data) {
function addData(data, url) {
fs.readFile(url, "utf-8", function (err, data) {
if (err) {
console.log(err);
......
import moment = require("moment");
import { broadcastMsg } from "../../biz/wsData";
import { systemConfig } from "../../config/serverConfig";
import { logHandle } from "../../util/log";
export let vehicleLocData = [];
let lockReconnect = false;
async function reconnect() {
if(lockReconnect) return;
lockReconnect = true;
await sleep(5 * 1000);
createSocket();
}
async function sleep(ms) {
return new Promise((resolve, reject)=>{
setTimeout(async function () {
resolve(true);
}, ms);
})
}
let heartCount = 0;
//心跳
let heart = {
timeout:10*1000,//10秒一次心跳包
timeoutObj:null,
reconnectTimeout:5 * 1000, //重连延迟
start:(ws) => {
if (!heartCount) {
heartCount = 1;
}
heart.timeoutObj && clearInterval(heart.timeoutObj);
heart.timeoutObj = setInterval( () => {
//发送心跳包
console.log("本机call目标服务 发送心跳包");
ws.send("i am heart");
}, heart.timeout);
},
reset: () => {//重置
clearInterval(heart.timeoutObj);
}
}
//ws客户端
async function createSocket() {
console.log(systemConfig.wsPath);
let ws = new WebSocket(systemConfig.wsPath);
ws.onclose = async (err) => {
console.log("连接关闭: ", err);
lockReconnect = false;
heartCount = 0;
heart.reset();
//断线重连
reconnect();
}
ws.onmessage = (msg) => {
//接收数据
stats(msg.data);
}
ws.onerror = (error) => {
ws.close();
}
ws.onopen = () => {
heart.start(ws);
}
console.log(`连接汽车数据socket服务: ${systemConfig.wsPath} 成功`);
}
export async function initWSData() {
await createSocket();
}
//在线车辆
let dp = {};//数据池 {"id":{lastMs:最新的时间, list:[{},{},{}], index:0 } }
let dpNewDate = '';
//结构:{"vid":{s:{lng:, lat:''}, e:{}, t:"" , lastCheckMs:0,}}
let test = {};
// let = 0;
//模式缓存
let driveModeQueue = {};//{"vid":{driveMode, velocity}}
export function getDriveModeAndVelocity(vin) {
if (!driveModeQueue[vin]) return {driveMode:"人工", velocity:"0公里/小时"};
return {
driveMode:driveModeQueue[vin].driveMode == 1? "自动":"人工",
velocity:`${Math.round(driveModeQueue[vin].velocity)}公里/小时`
}
}
export function stats(data) {
let dateFormat = moment().format('YYYYMMDD');
if (!dpNewDate) dpNewDate = dateFormat;
if (typeof data == "string") {
try{
// console.log(data);
let dataJson = JSON.parse(data);
if (dataJson.VehicleLoc) {
let {vin, latitude, longitude, positionTime, driveMode, vehicleId, velocity, daymileage, dayduration, totalMileage, totalDuration} = dataJson.VehicleLoc;
vehicleLocData.push({vin, daymileage, dayduration, totalMileage, totalDuration}); //当日实时测试里程,当日实时测试时长,累计测试里程,累计测试时长
// console.log("收到小车位置", vin);
// broadcastMsg({lng:longitude||0.0, lat:latitude||0.0, vin, vehicleid:vehicleId});
//加入到缓存
let lastMs = positionTime || new Date().valueOf();
if ( lastMs ) {//数据包里有时间就缓存
checkData(dateFormat);
if ( !dp[vin] ) dp[vin] = {lastMs, list:[], index:0 };//初始化缓存
//每个小车缓存4个数据,新连接进来的时候下发缓存好的数据,看起来不会很突兀
dp[vin].list[dp[vin].index] = {lng:longitude||0.0, lat:latitude||0.0, vin, lastMs, vehicleid:vehicleId};
dp[vin].index += 1;
if (dp[vin].index > 4) dp[vin].index = 0;
driveModeQueue[vin] = {velocity, driveMode};
//==测试代码
if (!positionTime) return;
if (!test[vin] ) test[vin] = {s:{lng:longitude||0.0, lat:latitude||0.0}, e:{lng:0, lat:0}, st:positionTime, et:0, lastCheckMs:new Date().valueOf()};
if ( ( new Date().valueOf() - test[vin].lastCheckMs ) >= 1000) {
if ( !test[vin].et ) {
//初始车
test[vin].e = {lng:longitude||0.0, lat:latitude||0.0};
} else {
//非初始车
test[vin].s = test[vin].e;
test[vin].st = test[vin].et;
test[vin].e = {lng:longitude||0.0, lat:latitude||0.0};
}
test[vin].et = positionTime;
test[vin].t = test[vin].et - test[vin].st;
test[vin].lastCheckMs = new Date().valueOf();
//发送消息给小车
broadcastMsg(test[vin]);
}
//==测试代码结束
}
}
} catch(err) {
logHandle("ws 返回数据不是json --> "+ data);
}
} else {
logHandle(`ws 返回数据不符合规范 类型:${typeof data} --> `+ data)
}
}
function checkData(time) {
if (time != dpNewDate) {
dpNewDate = time;
dp = {};
}
}
export function getDpData() {
let result = [];
for (let key in dp) {
dp[key].list.forEach(info => {
result.push(info);
});
}
result.sort( (a, b) => {return a.lastMs - b.lastMs});
let initList = [];
result.forEach(info => {
let {lng, lat, vehicleid, vin, lastMs} = info;
initList.push({lng, lat, vin});
});
return {initList, count:Object.keys(dp).length};
}
export function getOnlieCarCount() {
return Object.keys(dp).length;
}
//控制端获取在线小车列表
//最后在线时间如果大于1分钟,判定为下线,不下发到控制端的小车列表里
export function controlGetOnlieCarList() {
let ms = new Date().valueOf();
let onlineCarList = [];
for (let key in dp) {
let {lastMs, list, index} = dp[key];
if ((ms -lastMs) > 1*60*1000) continue;
if (index == 0) continue;
let {vin, vehicleid} = list[index-1];
onlineCarList.push({id:vin, vehicleid});
}
return onlineCarList;
}
......@@ -269,3 +269,17 @@ export function mapSiteTableData() {
return result;
}
export function mapSiteJsonTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/建设指挥平台地图.xlsx', '坐标json');
let keyValueOrTitleList = ["坐标json数据"];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =[];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
/**
/**
......@@ -39,12 +39,40 @@ export function contractWarningTableData() {
}
export function budgetwarningTableData() {
export function estimateEarlyWarningTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '合同预警');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["概算预警"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function finalAcountsTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '决算');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["概算预警"];//适配 表格
let titltListConfig = {};
let result = packageDataProcess(blockDataList, titltListConfig, keyValueOrTitleList, barChartList, stringList, decollatePlanarList);
return result;
}
export function budgetwarningTableData() {
let blockDataList = onceSheetBecomeOfblockData('建设指挥平台/投资管控.xlsx', '三级概算预警');
let keyValueOrTitleList = [];//适配 饼图 键值以及需要多个key的
let barChartList = []; //适配 柱状图 折线图
let stringList = [];
let decollatePlanarList =["三级概算预警"];//适配 表格
let titltListConfig = {};
......
......@@ -5,11 +5,12 @@ import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig";
import { getToken } from "./middleware/getToken";
import { writeQualityDataInJson } from "./data/interface/writeJson";
const path = require('path');
async function lanuch() {
await initConfig();
initInterfaceData();
// dataInJson();
// initInterfaceData();
dataInJson();
httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.');
......@@ -18,7 +19,16 @@ async function lanuch() {
async function dataInJson() {
let token = await getToken();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token});
writeQualityDataInJson(data);
let url = path.join(__dirname.substring(0,__dirname.indexOf("out")), "res", 'quality.json');
writeQualityDataInJson(data, url);
}
lanuch();
function test() {
}
import * as WebSocket from 'ws';
export class Socket {
static createServer(port, callback) {
const wss = new WebSocket.Server({
port,
threshold:1024, // 大小(以字节为单位),低于此大小的消息不压缩
maxPayload:9999,
});
callback(wss);
console.log("socketServer listen on port:"+port);
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import * as mapBiz from '../biz/construct/map';
import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as investBiz from '../biz/construct/invest';
import * as contractWarningBiz from '../biz/construct/contractWarning';
import * as finalAcountsBiz from '../biz/construct/finalAcounts';
export function setRouter(httpServer) {
/**计划进度指标面板 */
......@@ -34,20 +35,77 @@ export function setRouter(httpServer) {
/**地图 */
httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) ); //4.0
//地图预警
// httpServer.get('/construct/map/earlyWarning', asyncHandler(mapBiz.getEarlyWarning) ); //预警信息 4.0
httpServer.get('/construct/map/earlyWarning', asyncHandler(mapBiz.getSiteCoordinates) ); //站点坐标预警动效 4.0
// httpServer.get('/construct/map/sitecoordinates', asyncHandler(mapBiz.getSiteCoordinates) ); //站点坐标 4.0
// 3.0 ----------------------------------------
/**业财融合指标面板 */
/**投资管控指标面板 */
httpServer.get('/construct/businessfinance/estimate', asyncHandler(businessfinanceBiz.getEstimate) ); //概算总数
httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(businessfinanceBiz.getInvestmentCompletion) ); //投资完成情况
/**投资管控指标面板 */
/**业财融合指标面板 */
httpServer.get('/construct/invest', asyncHandler(investBiz.getInvest) );
/**合同预警弹窗 */
httpServer.get('/construct/contractWarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警
httpServer.get('/construct/contractWarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本
httpServer.get('/construct/contractWarning/type', asyncHandler(contractWarningBiz.getType) ); //下拉选择类型
httpServer.get('/construct/contractWarning/detailed', asyncHandler(contractWarningBiz.getDetailed) ); //线路概算详情
httpServer.get('/construct/contractwarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警详情 暂时舍弃
httpServer.get('/construct/contractwarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本 暂时舍弃
httpServer.get('/construct/contractwarning/type', asyncHandler(contractWarningBiz.getType) ); //下拉选择类型 暂时舍弃
httpServer.get('/construct/contractwarning/detailed', asyncHandler(contractWarningBiz.getDetailed) ); //线路概算详情 暂时舍弃
httpServer.get('/construct/contractwarning/estimateearlywarning', asyncHandler(contractWarningBiz.getEstimateEarlyWarning) ); //概算预警
/**决算 */
httpServer.get('/construct/finalaccounts/estimateearlywarning', asyncHandler(finalAcountsBiz.getEstimateEarlyWarning) ); //概算预警
}
// export function setRouter(httpServer) {
// /**计划进度指标面板 */
// httpServer.get('/construct/prophase', asyncHandler(plannedprogressBiz.getProphase) );//证照办理
// httpServer.get('/construct/relocation', asyncHandler(plannedprogressBiz.getRelocation) );//动迁腾地
// httpServer.get('/construct/schedule', asyncHandler(plannedprogressBiz.getSchedule) );//建设计划
// // httpServer.get('/construct/plannedprogress/milestone', asyncHandler(plannedprogressBiz.getMilestone) );//里程碑节点完成情况
// /**质量安全指标面板 */
// httpServer.get('/construct/fatality', asyncHandler(qualityBiz.getFatality) );//重大风险分布
// httpServer.get('/construct/risk', asyncHandler(qualityBiz.getRisk) );//当前风险节点
// httpServer.get('/construct/engineering', asyncHandler(qualityBiz.getEngineering) );//工程安全状态
// /**投资管控指标面板 弃用 */
// // httpServer.get('/construct/invest/financialestimates', asyncHandler(investBiz.getFinancialestimates) ); //概算总数
// // httpServer.get('/construct/invest/investmentcontrol', asyncHandler(investBiz.getInvestmentcontrol) ); //投控建设
// // httpServer.get('/construct/invest/finalaccounts', asyncHandler(investBiz.getFinalaccounts) ); //决算统计
// /**业财融合指标面板 弃用 */
// // httpServer.get('/construct/businessfinance/invest', asyncHandler(businessfinanceBiz.getInvest) );//投资完成情况
// // httpServer.get('/construct/businessfinance/earlywarning', asyncHandler(businessfinanceBiz.getEarlywarning) );//合同金额预警总览
// // httpServer.get('/construct/businessfinance/detailed', asyncHandler(businessfinanceBiz.getDetailedData) );//合同金额预警总览详细浮窗
// /**地图 */
// httpServer.get('/construct/map', asyncHandler(mapBiz.getMap) ); //4.0
// //地图预警
// // httpServer.get('/construct/map/earlyWarning', asyncHandler(mapBiz.getEarlyWarning) ); //预警信息 4.0
// httpServer.get('/construct/earlyWarning', asyncHandler(mapBiz.getSiteCoordinates) ); //站点坐标预警动效 4.0
// // httpServer.get('/construct/map/sitecoordinates', asyncHandler(mapBiz.getSiteCoordinates) ); //站点坐标 4.0
// // 3.0 ----------------------------------------
// /**投资管控指标面板 */
// httpServer.get('/construct/estimate', asyncHandler(businessfinanceBiz.getEstimate) ); //概算总数
// httpServer.get('/construct/investmentcompletion', asyncHandler(businessfinanceBiz.getInvestmentCompletion) ); //投资完成情况
// /**业财融合指标面板 */
// httpServer.get('/construct/invest', asyncHandler(investBiz.getInvest) );
// /**合同预警弹窗 */
// httpServer.get('/construct/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警详情 暂时舍弃
// httpServer.get('/construct/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本 暂时舍弃
// httpServer.get('/construct/type', asyncHandler(contractWarningBiz.getType) ); //下拉选择类型 暂时舍弃
// httpServer.get('/construct/detailed', asyncHandler(contractWarningBiz.getDetailed) ); //线路概算详情 暂时舍弃
// httpServer.get('/construct/estimateearlywarning', asyncHandler(contractWarningBiz.getEstimateEarlyWarning) ); //概算预警
// /**决算 */
// httpServer.get('/construct/finalaccounts', asyncHandler(finalAcountsBiz.getEstimateEarlyWarning) ); //概算预警
// }
......@@ -8,7 +8,7 @@ import * as publicBiz from '../biz/public';
export function setRouter(httpServer) {
httpServer.get('/public/line', asyncHandler(publicBiz.getLine));//线路
// httpServer.get('/public/year', asyncHandler(publicBiz.getYear) );//下拉框选择年份
httpServer.get('/public/linejson', asyncHandler(publicBiz.getLineJson) );//下拉框选择年份
httpServer.get('/public/planningperiod', asyncHandler(publicBiz.getPlanningPeriod) );//下拉框选择规划期类型
httpServer.get('/public/lineplanningperiod', asyncHandler(publicBiz.getLineByPlanningPeriod) );//下拉框根据规划期类型选择线路
......
......@@ -46,4 +46,40 @@ export function setRouter(httpServer) {
httpServer.get('/stationpopup/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0
// httpServer.get('/stationpopup/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0 设计图还没有定内容
}
\ No newline at end of file
}
// export function setRouter(httpServer) {
// httpServer.get('/stationpopup/station', asyncHandler(stationInfoBiz.getStation)); //车站信息 4.0
// httpServer.get('/stationpopup/participatingunits', asyncHandler(participatingUnitsBiz.getParticipatingUnits)); //参建单位 4.0
// httpServer.get('/stationpopup/earlycertification', asyncHandler(earlyCertificationBiz.getEarlyCertification)); //前期证照 4.0
// httpServer.get('/stationpopup/relocationtengdi', asyncHandler(relocationTengdiBiz.getRelocationTengdi)); //动迁腾地
// httpServer.get('/stationpopup/pipelinerelocation', asyncHandler(pipelineRelocationBiz.getPipelineRelocation)); //管线搬迁 4.0
// httpServer.get('/stationpopup/pipelinerelocationDetails', asyncHandler(pipelineRelocationBiz.getPipelineRelocationDetails)); //管线搬迁详情
// httpServer.get('/stationpopup/civilengineering', asyncHandler(civilEngineeringBiz.getCivilEngineering)); //土建形象进度
// httpServer.get('/stationpopup/civilengineeringDetails', asyncHandler(civilEngineeringBiz.getCivilEngineeringDetails)); //土建形象进度 工序完成情况
// httpServer.get('/stationpopup/constructionmilestones', asyncHandler(constructionMilestonesBiz.getConstructionMilestones)); //建设里程碑 4.0
// httpServer.get('/stationpopup/smartConstructionSite', asyncHandler(smartConstructionSiteBiz.getSmartConstructionSite)); //智慧工地 4.0
// httpServer.get('/stationpopup/smartConstructionSiteGateData', asyncHandler(smartConstructionSiteBiz.getGateData)); //智慧工地 人员实名制 4.0
// httpServer.get('/stationpopup/smartConstructionSiteMonitoringData', asyncHandler(smartConstructionSiteBiz.getMonitoringData)); //智慧工地 监测数据
// httpServer.get('/stationpopup/riskHazards', asyncHandler(riskHazardsBiz.getRiskHazards)); //风险预警 4.0
// httpServer.get('/stationpopup/riskHazardsDetails', asyncHandler(riskHazardsBiz.getRiskHazardsDetails)); //风险预警详情 4.0
// httpServer.get('/stationpopup/constructionMaterials', asyncHandler(constructionMaterialsBiz.getConstructionMaterials)); //建设资料
// httpServer.get('/stationpopup/constructionMaterialsDetails', asyncHandler(constructionMaterialsBiz.getConstructionMaterialsDetails)); //建设资料详情
// httpServer.get('/stationpopup/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0
// // httpServer.get('/stationpopup/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0 设计图还没有定内容
// }
File added
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment