Commit 7b05eda2 by chenjinjing

4.0版本弹窗修改

parent c94458b7
{
"success": true,
"message": "success",
"code": 200,
"timestamp": 1689143182840,
"result": [
{
"id": "6e61d3c737a1117d79e724f0888b8bc0",
"lineId": "469529aefc627f86ec176ca1c4d6754",
"lineName": "20号线",
"sectionId": "6e61d3c737a1117d79e724f0888b8bc0",
"sectionName": "上海西站站",
"sectionType": "基坑",
"code": "st_20_shxzz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "3077b7fa4a4279246052ddb2d0ea3fd1",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "3077b7fa4a4279246052ddb2d0ea3fd1",
"sectionName": "通南路站",
"sectionType": "基坑",
"code": "st_18_tnlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "748355362fbe1ad01bca31479d9e9018",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "748355362fbe1ad01bca31479d9e9018",
"sectionName": "申江路站",
"sectionType": "基坑",
"code": "st_cm_sjldtz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 3.08,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "393d13abc3a76a19fdb20881635168a8",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "393d13abc3a76a19fdb20881635168a8",
"sectionName": "诸光路站",
"sectionType": "基坑",
"code": "st_13_zglz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "5fc59546b4f753c3f4b70f7722ffc68c",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "5fc59546b4f753c3f4b70f7722ffc68c",
"sectionName": "上海体育场站",
"sectionType": "基坑",
"code": "st_23_shtycz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 4.77,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"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": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "aebdb8ff12aec619273a64e086d46cc9",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "aebdb8ff12aec619273a64e086d46cc9",
"sectionName": "张江站",
"sectionType": "基坑",
"code": "st_21_zj",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": 1.84,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"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": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "d396f406ff4666034c852ba279619820",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "d396f406ff4666034c852ba279619820",
"sectionName": "杨高北路站",
"sectionType": "基坑",
"code": "st_21_ygblz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "935ae188c4e8c237daf69d9bd594498b",
"lineId": "1769529aefc627f86ec176ca1c4d6754",
"lineName": "17号线",
"sectionId": "935ae188c4e8c237daf69d9bd594498b",
"sectionName": "拦路港桥",
"sectionType": "特大桥",
"code": "st_17_llgq",
"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号线",
"sectionId": "4713cac3e94f66dbf6ea59d5a84fad1c",
"sectionName": "G50跨线桥",
"sectionType": "特大桥",
"code": "st_17_G50kxq",
"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": "67b084e70b97dde6504e0e2c67c4323c",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "67b084e70b97dde6504e0e2c67c4323c",
"sectionName": "爱辉路站",
"sectionType": "基坑",
"code": "st_18_ahlz",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "bc672ae575a1e5e5c5e84a8fd9514c30",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "bc672ae575a1e5e5c5e84a8fd9514c30",
"sectionName": "浦东大小盾构转换段-1#大小盾构转换段",
"sectionType": "区间",
"code": "st_cm_pddxdgzhd_dxdgzhdqjsd",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "单线",
"totalRings": 3871,
"digedRings": 808,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "8c493026d9e5da0e030b7b833c6a6d1c",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "8c493026d9e5da0e030b7b833c6a6d1c",
"sectionName": "2#大小盾构转换段-3#大小盾构转换段",
"sectionType": "区间",
"code": "st_cm_2_dxdgzhd_3_dxdgzhdbgddgqj",
"riskLevel": "一级重大风险",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "单线",
"totalRings": 4512,
"digedRings": 279,
"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": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"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": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"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": 1.66,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "916cb2beda18a16569a52ec0fb70f23c",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "916cb2beda18a16569a52ec0fb70f23c",
"sectionName": "景联路站",
"sectionType": "基坑",
"code": "st_23_jllz",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"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": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"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": 3.81,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "6d40b389321a93442fd0bf92fc858dd5",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "6d40b389321a93442fd0bf92fc858dd5",
"sectionName": "徐泾东工作井",
"sectionType": "基坑",
"code": "st_2_xjdgzj",
"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": "70dde71b93a3376e45e6d23af8028c4f",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "70dde71b93a3376e45e6d23af8028c4f",
"sectionName": "浦东大小盾构转换井",
"sectionType": "基坑",
"code": "st_cm_pdddgzhj",
"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": "288bdab37e2ffd8cdf243985736c0a53",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "288bdab37e2ffd8cdf243985736c0a53",
"sectionName": "后滩",
"sectionType": "基坑",
"code": "st_19_ht",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 0,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "d0b16f73deaef887abe9b3407bc7e7dc",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "d0b16f73deaef887abe9b3407bc7e7dc",
"sectionName": "江杨南路",
"sectionType": "基坑",
"code": "st_18_jynl",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": 2.32,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-06-20",
"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": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "bb862fa455b2d23099dcc6a74e9443d0",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "bb862fa455b2d23099dcc6a74e9443d0",
"sectionName": "纪翟路站-红卫河中间风井",
"sectionType": "区间",
"code": "st_13_jzlz_hwhzjfj",
"riskLevel": "一级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "上行",
"totalRings": 612,
"digedRings": 482,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "b568d7b31e598378f315347412f60505",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "b568d7b31e598378f315347412f60505",
"sectionName": "高宝路站",
"sectionType": "基坑",
"code": "st_cm_gbl",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 1.85,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-08",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "44564292ac9835d94f36ed6167f6da73",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "44564292ac9835d94f36ed6167f6da73",
"sectionName": "沪松公路站",
"sectionType": "基坑",
"code": "st_12_west_hsglz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-10",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "109a493722d046c50cf3a37febe01558",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "109a493722d046c50cf3a37febe01558",
"sectionName": "蟠祥路站",
"sectionType": "基坑",
"code": "st_2_pxlz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 3.88,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-11",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "e509372056a72055c6c1180fbbc470bd",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "e509372056a72055c6c1180fbbc470bd",
"sectionName": "长兴岛站",
"sectionType": "基坑",
"code": "st_cm_zxdz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 4.06,
"safeStatus": "风险可控",
"riskFlag": false,
"alarmTime": "2023-07-11",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "5d939bb4b02db33552ec12fbf1284d36",
"lineId": "1369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线西延伸",
"sectionId": "5d939bb4b02db33552ec12fbf1284d36",
"sectionName": "红卫河中间风井",
"sectionType": "基坑",
"code": "st_13_hwhzjfj",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 0,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"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": 2.61,
"safeStatus": "风险可控",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "87f3ea1678645ebb8ba7e5d6d30f7476",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "87f3ea1678645ebb8ba7e5d6d30f7476",
"sectionName": "凌空北路站",
"sectionType": "基坑",
"code": "st_cm_lkblz",
"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": "3703e7d2bbf6181455826cb3acc59dc5",
"lineId": "9369529aefc627f86ec176ca1c4d6754",
"lineName": "13号线",
"sectionId": "3703e7d2bbf6181455826cb3acc59dc5",
"sectionName": "高科中路站",
"sectionType": "基坑",
"code": "st_13_east_gkzlz",
"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": "ce8091559bfa90270c0679ecbf61ab79",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "ce8091559bfa90270c0679ecbf61ab79",
"sectionName": "康南路站",
"sectionType": "基坑",
"code": "st_21_knl",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": 4.93,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-11",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "bb120bdeea7bf6673bc640e7d58b8329",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "bb120bdeea7bf6673bc640e7d58b8329",
"sectionName": "墨江路站",
"sectionType": "基坑",
"code": "st_23_mjlz",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": false,
"alarmTime": "2023-07-12",
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "984877acf838704d5e55a9511cf661cd",
"lineId": "1969529aefc627f86ec176ca1c4d6754",
"lineName": "崇明线",
"sectionId": "984877acf838704d5e55a9511cf661cd",
"sectionName": "长兴岛站-2#大小盾构转换段",
"sectionType": "区间",
"code": "st_cm_zxdz_2_dxdgzhdqj",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "下行",
"totalRings": 790,
"digedRings": 376,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "b3a7418133343cca38a5d0a477700220",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "b3a7418133343cca38a5d0a477700220",
"sectionName": "长江西路站-江杨南路站",
"sectionType": "区间",
"code": "st_18_cjxl_jynlzqj",
"riskLevel": "二级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "下行",
"totalRings": 692,
"digedRings": 254,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "5750c984d4e9f1f0ed1a394526d3d8ed",
"lineId": "1069529aefc627f86ec176ca1c4d6754",
"lineName": "21号线",
"sectionId": "5750c984d4e9f1f0ed1a394526d3d8ed",
"sectionName": "康南路~军民公路站区间",
"sectionType": "区间",
"code": "st_21_knl_jml",
"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": "134a9f088414501c2aa5852f318c5ec7",
"lineId": "0269529aefc627f86ec176ca1c4d6754",
"lineName": "2号线",
"sectionId": "134a9f088414501c2aa5852f318c5ec7",
"sectionName": "蟠祥路站-徐泾东站",
"sectionType": "区间",
"code": "st_2_pxlz_xjdzqj",
"riskLevel": "三级",
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"alarmTime": "2023-07-12",
"direction": "下行",
"totalRings": 873,
"digedRings": 174,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "d2d0fb32cde3151c3a07dca8b1c50ab7",
"sectionName": "世博大道2号出入口1号风亭",
"sectionType": "基坑",
"code": "st_19_sbdd1hfj",
"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": "d80569d68609132d8a77b97c94f558df",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "d80569d68609132d8a77b97c94f558df",
"sectionName": "市政配套4标",
"sectionType": "基坑",
"code": "st_12_west_szpt4b",
"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": "f9576f459ef213199e550f9d11bfef97",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "f9576f459ef213199e550f9d11bfef97",
"sectionName": "市政配套3标",
"sectionType": "基坑",
"code": "st_23_szpt3b",
"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": "d1548977a1e191b922493c662b9a32ec",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "d1548977a1e191b922493c662b9a32ec",
"sectionName": "市政配套2标",
"sectionType": "基坑",
"code": "st_23_szpt2b",
"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": "070d39ebd3e949cb2c4e7614ebbf9786",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "070d39ebd3e949cb2c4e7614ebbf9786",
"sectionName": "市政配套4标",
"sectionType": "基坑",
"code": "st_23_szpt4b",
"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": "e4fa3944bfb67351647c978e11e2fd74",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "e4fa3944bfb67351647c978e11e2fd74",
"sectionName": "爱辉路站2#风亭",
"sectionType": "基坑",
"code": "st_18_ahlz2#ft",
"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": "ebdb7601f4ebddf7ed64db755ccadb17",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "ebdb7601f4ebddf7ed64db755ccadb17",
"sectionName": "世博大道4#出入口",
"sectionType": "基坑",
"code": "st_19_sbdd4#crk",
"riskLevel": null,
"buildStatus": "开工",
"outShapeValue": null,
"safeStatus": "安全",
"riskFlag": true,
"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": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": null,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
},
{
"id": "18e0b24f50bc963580bd76e43c7a1741",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "18e0b24f50bc963580bd76e43c7a1741",
"sectionName": "市政配套1标",
"sectionType": "基坑",
"code": "st_12_west_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": "bf38fa14a43b7ed5ae19f954660fe91b",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "bf38fa14a43b7ed5ae19f954660fe91b",
"sectionName": "市政配套6标",
"sectionType": "基坑",
"code": "st_23_szpt6b",
"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": "1dee53422ca7faeeb09e6accd1211a63",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "1dee53422ca7faeeb09e6accd1211a63",
"sectionName": "市政配套5标",
"sectionType": "基坑",
"code": "st_23_szpt5b",
"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": "bb319c4de2dacbc145ede54adc26f762",
"lineId": "2069529aefc627f86ec176ca1c4d6754",
"lineName": "23号线",
"sectionId": "bb319c4de2dacbc145ede54adc26f762",
"sectionName": "市政配套7标",
"sectionType": "基坑",
"code": "st_23_szpt7b",
"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": "21e4dd363b42aa75faeea4506fe3aced",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "21e4dd363b42aa75faeea4506fe3aced",
"sectionName": "市政配套2标",
"sectionType": "基坑",
"code": "st_12_west_szpt2b",
"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": "b937099ae36559248851cbaa5c4625c5",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "b937099ae36559248851cbaa5c4625c5",
"sectionName": "世博大道1#出入口",
"sectionType": "基坑",
"code": "st_19_sbdd1#crk",
"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": "a255ef310a7685af35b68d4b25191ae7",
"lineId": "1869529aefc627f86ec176ca1c4d6754",
"lineName": "18号线二期",
"sectionId": "a255ef310a7685af35b68d4b25191ae7",
"sectionName": "爱辉路站1#风亭",
"sectionType": "基坑",
"code": "st_18_ahlz1#ft",
"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": "3104f1cfb535ed27de5e98772a47cf60",
"lineId": "2369529aefc627f86ec176ca1c4d6754",
"lineName": "12号线西延伸",
"sectionId": "3104f1cfb535ed27de5e98772a47cf60",
"sectionName": "市政配套3标",
"sectionType": "基坑",
"code": "st_12_west_szpt3b",
"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": "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": "93dd2d42d3f69d045adc233a58189f08",
"lineId": "3069529aefc627f86ec176ca1c4d6754",
"lineName": "19号线",
"sectionId": "93dd2d42d3f69d045adc233a58189f08",
"sectionName": "后滩顶管接收井",
"sectionType": "基坑",
"code": "st_19_htdgjsj",
"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号线",
"sectionId": "706ebb7da721f4dc7da762110a210a8a",
"sectionName": "后滩顶管始发井",
"sectionType": "基坑",
"code": "st_19_htdgsfj",
"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": null,
"lineId": null,
"lineName": "全线网",
"sectionId": null,
"sectionName": null,
"sectionType": "线路",
"code": null,
"riskLevel": null,
"buildStatus": null,
"outShapeValue": 2.31,
"safeStatus": null,
"riskFlag": null,
"alarmTime": null,
"direction": null,
"totalRings": null,
"digedRings": null,
"bottomLoseRate": 4.8,
"dbcjVariable": null,
"overlapping": null,
"createTime": null,
"updateTime": null,
"tbmUrl": null
}
],
"requestId": "c49e17ca-a883-4215-a671-87b761529fbf"
}
\ No newline at end of file
/** /**
* 业财融合指标面板 * 建设指挥 业财融合指标面板 3.5 逻辑
* 弃用 * 处理数据
*/ */
import { earlywarningDetailTableData, earlywarningTableData, investTableData } from "../../data/table/constructData"; import { estimateTableData, investmentStatusTableData } from "../../data/table/业财融合";
import * as defaultConfig from '../../config/defaultConfig' import { change } from "../../dataPackage/inBackOut";
import { BUSINESSFINANCE } from "../../config/titleEnum";
/** /**
* 投资完成情况 * 概算总数
* @param req * @param req
* @param res * @param res
* @return 标题: title
* @return 概算总数:estimatedTotal
* @return 各线路概算:lineEstimate
* @return 总体投资: overallInvestment
* @return 支付完成情况: paymentSituation
*/ */
export async function getInvest(req, res) { export function getEstimate(req, res) {
let line = req.query.line || "全网"; let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let year = req.query.year || 2023; let line = req.query.line || "全网"; //线路
let tableData = investTableData(); let tableData = estimateTableData();
// let data = change(["line", "year", "年度计划", "年度完成", "年度计划动迁", "年度完成动迁", "累计计划", "累计完成", "累计计划动迁", "累计完成动迁"], tableData["投资完成情况"].bodyList );
let data = change(["line", "year", "年度累计", "年度投资计划", "年度计划动迁", "年度完成动迁", "总投资额", "建设期累计", "累计计划动迁", "累计完成动迁"], tableData["投资完成情况"].bodyList );
let ndConf = ["年度累计", "年度投资计划", "年度计划动迁", "年度完成动迁"];
let ztConf = ["总投资额", "建设期累计", "累计计划动迁", "累计完成动迁"];
let result:any = {}; let result:any = {};
result["title"] = BUSINESSFINANCE.概算总数;
let annualAccumulation:any = {}; let data = change(["type", "line", "各线路概算金额", "投资完成", "投资计划", "用款累计执行", "用款计划"], tableData["概算总数数据"].bodyList );
let overall:any = {};
let lineEstimateData = {};
let estimatedTotal = 0; //概算总数
let overallInvestment = []; //总体投资
let paymentSituation = []; //支付完成情况
let overallConf = ["投资完成", "投资计划"];
let paymentConf = ["用款累计执行", "用款计划"];
data.forEach(item => { data.forEach(item => {
let dataType = item.type;
let dataLine = item.line; let dataLine = item.line;
let dataYear = item.year;
if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
if (!annualAccumulation["全网"]) annualAccumulation["全网"] = {};
if (!overall[dataLine]) overall[dataLine] = {}; /**全网总概算 */
if (!overall["全网"]) overall["全网"] = {}; estimatedTotal += item.各线路概算金额;
if (year == dataYear) { /**各线路概算 */
for (let name = 0; name < ndConf.length; name++) { let estimatedValue = Math.round(item.各线路概算金额 * 100) / 100;
for (let key in item) { if (!lineEstimateData[dataType]) lineEstimateData[dataType] = {"全网":[]};
if (key.search(ndConf[name]) > -1) { if (!lineEstimateData[dataType][dataLine]) lineEstimateData[dataType][dataLine] = [];
annualAccumulation[dataLine][key] = item[key]; lineEstimateData[dataType][dataLine].push({key: item.line, value: estimatedValue});
lineEstimateData[dataType]["全网"].push({key: item.line, value: estimatedValue});
/**总体投资完成比 */
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 (!annualAccumulation["全网"][key]) annualAccumulation["全网"][key] = 0; /**支付完成情况 */
annualAccumulation["全网"][key] += item[key]; 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;
for (let name = 0; name < ztConf.length; name++) { paymentSituation[dataType]["全网"][paymentConf[name]] += item[paymentConf[name]];
for (let key in item) {
if (key.search(ztConf[name]) > -1) {
overall[dataLine][key] = item[key];
if (!overall["全网"][key]) overall["全网"][key] = 0;
overall["全网"][key] += item[key];
}
}
}
} }
result["annualAccumulation"] = annualAccumulation;
result["overall"] = overall;
}); });
let defalut = { result["estimatedTotal"] = {key: "全网总概算", value: Math.round(estimatedTotal * 100) / 100};
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0 result["lineEstimate"] = lineEstimateData[planningPeriod][line];
}
let annualAccumulationData = annualAccumulation[line] || defalut; let overallInvestmentData = overallInvestment[planningPeriod][line]; //投资完成、投资计划
let overallData = overall[line] || defalut; let accumulatedProportion = (overallInvestmentData["投资完成"] / overallInvestmentData["投资计划"]*100 ).toFixed(2);
result["annualAccumulation"] = { result["overallInvestment"] = {
"proportion": annualAccumulationData["年度累计"] == 0 ? 0 : Math.round((annualAccumulationData["年度投资计划"] / annualAccumulationData["年度累计"]) * 100)/100 || 0,//年度累计占比 "proportion": overallInvestmentData["建设期累计占比"] == 0 ? 0 : accumulatedProportion || 0,//建设期累计占比=投资完成/投资计划
"count": Math.round((annualAccumulationData["年度累计"] / 10000) * 100) /100 || 0,//年度累计投资额 "complete": (overallInvestmentData["投资完成"] / 10000).toFixed(2),
"countRelocation":Math.round( annualAccumulationData["年度完成动迁"] / 10000) || 0,//年度累计动迁 "plan": (overallInvestmentData["投资计划"] / 10000).toFixed(2)
"expected":Math.round( annualAccumulationData["年度投资计划"] / 10000) || 0,//计划投资额
"expectedRelocation":Math.round( annualAccumulationData["年度计划动迁"] / 10000) || 0,//年度计划动迁
}; };
result["overall"] = {
"proportion": overallData["总投资额"] == 0 ? 0 : Math.round((overallData["建设期累计"] / overallData["总投资额"])* 1000 )/1000 || 0,//年度完成比 let paymentSituationData = paymentSituation[planningPeriod][line]; //投资完成、投资计划
"count": Math.round(overallData["建设期累计"] / 10000) || 0,//年度累计投资额
"countRelocation":Math.round( overallData["累计完成动迁"] / 10000) || 0,//年度累计动迁 单位:(亿元) let percentComplete = (paymentSituationData["用款累计执行"] / paymentSituationData["用款计划"]*100 ).toFixed(2);
"expected":Math.round( overallData["总投资额"] / 10000) || 0,//计划投资额 result["paymentSituation"] = {
"expectedRelocation":Math.round( overallData["累计计划动迁"] / 10000) || 0,//年度计划动迁 "proportion": paymentSituationData["建设期累计完成比"] == 0 ? 0 : percentComplete || 0,//建设期累计完成比=用款累计执行/用款计划
"complete": (paymentSituationData["用款累计执行"] / 10000).toFixed(2),
"plan": (paymentSituationData["用款计划"] / 10000).toFixed(2)
}; };
res.send(result); res.send(result);
return result;
} }
/** /**
* 合同金额预警总览 * 投资完成情况
* @param req * @param req
* @param res * @param res
* @return 标题: title
* @return 投资完成情况:annualAccumulation
*/ */
export async function getEarlywarning(req, res) { export async function getInvestmentCompletion(req, res) {
let line = req.query.line || "全网"; let line = "全网"
let tableData = investmentStatusTableData();
let excelData = earlywarningTableData();
let data = change(["line", "年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let conf = ["年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"];
let result:any = {}; let result:any = {};
result["title"] = BUSINESSFINANCE.投资完成情况;
result["base"] = { let annualAccumulation:any = {};
"accumulatedContractAmountSigned":0,//累计签合同金额
"estimatedTotalValue":0,//概算总值
"totalTargetCost":0,//目标成本总值
};
let titleList = ["车站", "区间", "轨道", "通讯", "信号", "供电", "综合监控"];
result["detailedList"] = [];
if (line == "全网") {
let map = {};
for (let key in excelData) {
let data = change(["总数", "accumulatedContractAmountSigned", "estimatedTotalValue", "totalTargetCost"], excelData[key].bodyList );
let conf = ["accumulatedContractAmountSigned", "estimatedTotalValue", "totalTargetCost"];
let dataList = excelData[key].bodyList[excelData[key].bodyList.length -1];
result["base"].accumulatedContractAmountSigned = Math.ceil( dataList[1] / 10000 ) || 0;
result["base"].estimatedTotalValue = Math.ceil( dataList[2] / 10000 ) || 0;
result["base"].totalTargetCost = Math.ceil( dataList[3] / 10000 ) || 0;
excelData[key].bodyList.forEach(subList => {
let title = subList[0];
if (title == "总数") return;
if (!map[title]) map[title] = {ht:0, gs:0, cb:0};
map[title].ht += subList[1];
map[title].gs += subList[2];
map[title].cb += subList[3];
});
}
titleList.forEach(str => {
let item = map[str];
result["detailedList"].push({
type:str,
estimated: Math.ceil( item.gs / 10000 ),//概算
targetCost: Math.ceil( item.cb / 10000 ),//目标成本
accumulatedContractAmountSigned: Math.ceil( item.ht / 10000 ),//累计签合同金额
});
});
} else {
let checkList = excelData[line]? excelData[line].bodyList : defaultConfig.EarlywarningDefault;
let allList = checkList[checkList.length-1];
result["base"].accumulatedContractAmountSigned = Math.ceil( allList[1] / 10000 ) || 0;
result["base"].estimatedTotalValue = Math.ceil( allList[2] / 10000 ) || 0;
result["base"].totalTargetCost = Math.ceil( allList[3] / 10000 ) || 0;
let map = {};
checkList.forEach(subList => {
let title = subList[0];
if (title == "总数") return;
if (!map[title]) map[title] = {ht:0, gs:0, cb:0};
map[title].ht = subList[1] || 0;
map[title].gs = subList[2] || 0;
map[title].cb = subList[3] || 0;
});
titleList.forEach(str => {
let item = map[str];
result["detailedList"].push({
type:str,
estimated: Math.ceil( item.gs / 10000 ),//概算
targetCost: Math.ceil( item.cb / 10000 ),//目标成本
accumulatedContractAmountSigned: Math.ceil( item.ht / 10000 ),//累计签合同金额
});
});
}
res.send(result);
}
/** data.forEach(item => {
* 合同金额预警总览详细浮窗 let dataLine = item.line;
* @param req
* @param res
*/
export async function getDetailedData(req, res) {
let line = req.query.line || "全网";
let tableData = earlywarningDetailTableData(); if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
let result:any = {}; if (!annualAccumulation["全部"]) annualAccumulation["全部"] = {};
let detailData = {}; for (let name = 0; name < conf.length; name++) {
for (let key in tableData) { for (let key in item) {
let gjqjDetailData = change(["line","feeName","accumulatedSignedContractValue", "estimated", "budgetDifference", "targetCost", "targetDifference"], tableData[key].bodyList ); if (key.search(conf[name]) > -1) {
let dataMap = getDetailData(gjqjDetailData, line, defaultConfig.EarlywarningDetail); annualAccumulation[dataLine][key] = item[key];
let detail = []; if (!annualAccumulation["全部"][key]) annualAccumulation["全部"][key] = 0;
for (let key in dataMap) { annualAccumulation["全部"][key] += item[key];
dataMap[key]['name'] = key; }
detail.push(dataMap[key]); }
} }
});
detailData[key] = detail; let defalut = {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
} }
let annualAccumulationData = annualAccumulation[line] || defalut;
result["czxxsj"] = detailData; let annualProportion = (annualAccumulationData["年度累计"] / annualAccumulationData["年度投资计划"]*100 ).toFixed(2)
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,//年度投资计划动拆迁
};
res.send(result); res.send(result);
}
function change(titleList, dataList) { return result;
let data = [];
dataList.forEach(subList => {
let onceData:any = {};
subList.forEach( (item, index)=> {
let key = titleList[index];
onceData[key] = item;
} );
data.push(onceData);
});
return data;
} }
function getDetailData(data, line, defaultData) {
let result:any = {};
let dataMap = {"全网":{}};
let strConf = ["accumulatedSignedContractValue", "estimated", "budgetDifference", "targetCost", "targetDifference"];
data.forEach(subList => {
let dataLine = subList.line;
let dataName = subList.feeName;
if (!dataMap[dataLine]) dataMap[dataLine] = {};
dataMap[dataLine][dataName] = {};
if (!dataMap["全网"][dataName]) dataMap["全网"][dataName] = {};
// dataMap[dataLine].push(subList);
strConf.forEach(str => {
if (!dataMap[dataLine][dataName][str]) dataMap[dataLine][dataName][str] = 0;
dataMap[dataLine][dataName][str] += Math.round(subList[str] * 100) / 100;
if (!dataMap["全网"][dataName][str]) dataMap["全网"][dataName][str] = 0;
dataMap["全网"][dataName][str] += Math.round(subList[str] * 100) / 100;
})
})
result = dataMap[line] || defaultData;
return result;
}
\ No newline at end of file
/** /**
* 合同预警弹窗 * 建设指挥 投资管控指标面板 合同预警弹窗 3.5 逻辑
* 处理数据
*/ */
import { budgetwarningTableData, detailedTableData, targetcostTableData } from "../../data/table/投资管控"; import { budgetwarningTableData, detailedTableData, targetcostTableData } from "../../data/table/投资管控";
......
/** /**
* 投资管控指标面板 * 建设指挥 投资管控指标面板 3.5 逻辑
* 弃用 * 处理数据
*/ */
import { financialestimatesTableData, finalaccountsTableData, investmentcontrolTableData } from "../../data/table/constructData";
import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
import * as defaultConfig from "../../config/defaultConfig";
import { INVEST } from "../../config/titleEnum";
import { contractWarningTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
/**
* 概算总数
* @param req
* @param res
*/
export function getFinancialestimates(req, res) {
let year = req.query.year || 2023; //年份
let excelData = financialestimatesTableData();
let ret:any = {};
let index = 1; export function getInvest(req, res) {
for (let key in excelData) { let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
if (key.search(year) > -1) { //匹配年份 let line = req.query.line || "全网"; //线路
let gszsPackageData = keyValuePackage(excelData[key].dataList); let tableData = contractWarningTableData();
ret["api" + index] = getKeyValueOut(key, gszsPackageData);
index++;
}
}
res.send(ret);
}
let result:any = {};
/** let paymentExecutionData = change(
* 投控建设 [
* @param req "planningPeriod", "line", "executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate",
* @param res "JanSoFarCummulativeComplete", "completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"
*/
export function getInvestmentcontrol(req, res) { ], tableData["用款执行数据"].bodyList);
let year = req.query.year || 2023; //年份
let excelData = investmentcontrolTableData();
let ret:any = {}; let paymentExecution = {};
let paymentExecutionConf = ["executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate", "JanSoFarCummulativeComplete"];
let specialPurposeBonds = {};
let specialPurposeBondsConf = ["completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"];
let index = 1; paymentExecutionData.forEach( item => {
for (let key in excelData) { let dataType = item.planningPeriod;
if (key.search(year) > -1) { //匹配年份 let dataLine = item.line;
let tkjsPackageData = onceYBarChartPackage( excelData[key], '',''); for (let name = 0; name < paymentExecutionConf.length; name++){
ret["api" + index] = getOnceYBarChartOut(key, tkjsPackageData); if (!paymentExecution[dataType]) paymentExecution[dataType] = {"全网":{"executionCompletedProportion":0, "deviationFromPlan":0, "annualPaymentPlan1":0, "JanPlanToDate":0, "JanSoFarCummulativeComplete":0}};
index ++; 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;
} }
}
res.send(ret);
}
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};
/** specialPurposeBonds[dataType]["全网"][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
* 决算统计 specialPurposeBonds[dataType][dataLine][specialPurposeBondsConf[name]] += item[specialPurposeBondsConf[name]] || 0;
* @param req }
* @param res
*/
export function getFinalaccounts(req, res) {
let year = req.query.year || 2023; //年份
let line = req.query.line || "全网"; //线路
let excelData = finalaccountsTableData();
let ret:any = {}; })
let index = 1;
for (let key in excelData) {
let tkjsExcelData:any = {};
if (key.search(year) > -1) { //匹配年份
let lineData = excelData[key];
lineData.forEach( info => {
let {name, data} = info;
if (line == name) { //判断线路
tkjsExcelData = info;
}
})
if (JSON.stringify(tkjsExcelData) === "{}") { paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] = (paymentExecution[planningPeriod]["全网"]["executionCompletedProportion"] / Object.keys(paymentExecution[planningPeriod]).length * 100).toFixed(2);
switch (index) { result["paymentExecutionTitle"] = INVEST.用款执行;
case 1: result["paymentExecution"] = paymentExecution[planningPeriod][line];
tkjsExcelData = defaultConfig.FinalaccountsDefault;
break; specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = (specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] / Object.keys(specialPurposeBonds[planningPeriod]).length * 100).toFixed(2);
case 2: result["specialPurposeBondsTitle"] = INVEST.专项债;
tkjsExcelData = defaultConfig.ContractTypeDefault; result["specialPurposeBonds"] = specialPurposeBonds[planningPeriod][line];
break;
case 3:
tkjsExcelData = defaultConfig.BusinessDefault;
break;
}
}
ret["api" + index] = tkjsExcelData;
if (index == 2) {
let itemTotal = 0;
tkjsExcelData.data.forEach(item => {
itemTotal += Math.ceil(item.value) || 0;
});
ret["api" + index].total = itemTotal;
}
index++;
}
}
res.send(ret);
}
res.send(result);
}
\ No newline at end of file
/**
* 建设指挥 地图 4.0 逻辑
* 处理数据
*/
import { lineConstructTableData, mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData'; import { lineConstructTableData, mapLineTableData, mapSiteTableData, mapTableData } from '../../data/table/constructData';
import { keyValuePackage } from '../../dataPackage/inFrontOut'; import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out'; import { getKeyValueOut } from '../../dataPackage/out';
import { change } from '../../dataPackage/inBackOut'; import { change } from '../../dataPackage/inBackOut';
import { onceSheetBecomeOfblockData } from '../../util/analysisExcel'; import { onceSheetBecomeOfblockData } from '../../util/analysisExcel';
/*地图*/
export function getMap(req, res) { export function getMap(req, res) {
let mapTable = mapTableData(); let mapTable = mapTableData();
let mapLineTable = mapLineTableData(); //线路 let mapLineTable = mapLineTableData(); //线路
...@@ -46,7 +51,7 @@ export function getMap(req, res) { ...@@ -46,7 +51,7 @@ export function getMap(req, res) {
} }
} }
/**站点 */
for (let siteKey in mapSiteTable) { for (let siteKey in mapSiteTable) {
let mapLineList = []; let mapLineList = [];
let siteCoordinate = {}; let siteCoordinate = {};
......
...@@ -5,9 +5,18 @@ ...@@ -5,9 +5,18 @@
import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData"; import { relocationTableData, prophaseTableData, scheduleTableData, milestoneTableData } from "../../data/table/constructData";
import * as defaultConfig from '../../config/defaultConfig'; import * as defaultConfig from '../../config/defaultConfig';
import { change, getPopupMoreData, getPopupOneData } from "../../dataPackage/inBackOut"; import { change } from "../../dataPackage/inBackOut";
import { PLANNEDPROGRESS } from "../../config/titleEnum"; import { PLANNEDPROGRESS } from "../../config/titleEnum";
/**
* 获取详细数据
* @param data
* @param defaultData
* @param conf
* @param line
* @returns
*/
function getProphaseDetailData(data, defaultData, conf, line) { function getProphaseDetailData(data, defaultData, conf, line) {
let dataMap = {"全网":{"data":{}, "total":0}}; let dataMap = {"全网":{"data":{}, "total":0}};
data.forEach(item => { data.forEach(item => {
......
/** /**
* 建设指挥 质量安全指标面板 逻辑 * 建设指挥 质量安全指标面板 3.5 逻辑
* 处理数据 * 处理数据
*/ */
......
/** ++ /dev/null
/**
* 业财融合指标面板
*/
import { estimateTableData, investmentStatusTableData } from "../../data/table/业财融合";
import { change } from "../../dataPackage/inBackOut";
import { BUSINESSFINANCE } from "../../config/titleEnum";
/**
* 概算总数
* @param req
* @param res
* @return 标题: title
* @return 概算总数:estimatedTotal
* @return 各线路概算:lineEstimate
* @return 总体投资: overallInvestment
* @return 支付完成情况: paymentSituation
*/
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", "各线路概算金额", "投资完成", "投资计划", "用款累计执行", "用款计划"], tableData["概算总数数据"].bodyList );
let lineEstimateData = {};
let estimatedTotal = 0; //概算总数
let overallInvestment = []; //总体投资
let paymentSituation = []; //支付完成情况
let overallConf = ["投资完成", "投资计划"];
let paymentConf = ["用款累计执行", "用款计划"];
data.forEach(item => {
let dataType = item.type;
let dataLine = item.line;
/**全网总概算 */
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});
/**总体投资完成比 */
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]];
}
});
result["estimatedTotal"] = {key: "全网总概算", value: Math.round(estimatedTotal * 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 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)
};
res.send(result);
}
/**
* 投资完成情况
* @param req
* @param res
* @return 标题: title
* @return 投资完成情况:annualAccumulation
*/
export async function getInvestmentCompletion(req, res) {
let line = "全网"
let tableData = investmentStatusTableData();
let data = change(["line", "年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"], tableData["年度投资情况数据"].bodyList );
let conf = ["年度累计", "年度累计动拆迁", "年度投资计划", "年度投资计划动拆迁"];
let result:any = {};
result["title"] = BUSINESSFINANCE.投资完成情况;
let annualAccumulation:any = {};
data.forEach(item => {
let dataLine = item.line;
if (!annualAccumulation[dataLine]) annualAccumulation[dataLine] = {};
if (!annualAccumulation["全部"]) annualAccumulation["全部"] = {};
for (let name = 0; name < conf.length; name++) {
for (let key in item) {
if (key.search(conf[name]) > -1) {
annualAccumulation[dataLine][key] = item[key];
if (!annualAccumulation["全部"][key]) annualAccumulation["全部"][key] = 0;
annualAccumulation["全部"][key] += item[key];
}
}
}
});
let defalut = {
count:0, countRelocation:0, expected:0, expectedRelocation:0, proportion:0
}
let annualAccumulationData = annualAccumulation[line] || defalut;
let annualProportion = (annualAccumulationData["年度累计"] / annualAccumulationData["年度投资计划"]*100 ).toFixed(2)
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,//年度投资计划动拆迁
};
res.send(result);
return result;
}
/** ++ /dev/null
/**
* 投资管控指标面板
*/
import { INVEST } from "../../config/titleEnum";
import { contractWarningTableData } from "../../data/table/投资管控";
import { change } from "../../dataPackage/inBackOut";
export function getInvest(req, res) {
let planningPeriod = req.query.planningPeriod || "三期规划调整"; //类型
let line = req.query.line || "全网"; //线路
let tableData = contractWarningTableData();
let result:any = {};
let paymentExecutionData = change(
[
"planningPeriod", "line", "executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate",
"JanSoFarCummulativeComplete", "completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"
], tableData["用款执行数据"].bodyList);
let paymentExecution = {};
let paymentExecutionConf = ["executionCompletedProportion", "deviationFromPlan", "annualPaymentPlan1", "JanPlanToDate", "JanSoFarCummulativeComplete"];
let specialPurposeBonds = {};
let specialPurposeBondsConf = ["completionPercentage", "annualPaymentPlan2", "annualActualExpenditure"];
paymentExecutionData.forEach( item => {
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};
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};
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);
result["paymentExecutionTitle"] = INVEST.用款执行;
result["paymentExecution"] = paymentExecution[planningPeriod][line];
specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] = (specialPurposeBonds[planningPeriod]["全网"]["completionPercentage"] / Object.keys(specialPurposeBonds[planningPeriod]).length * 100).toFixed(2);
result["specialPurposeBondsTitle"] = INVEST.专项债;
result["specialPurposeBonds"] = specialPurposeBonds[planningPeriod][line];
res.send(result);
}
\ No newline at end of file
/** /**
* 整体概览 逻辑 * 整体概览 建设运营 逻辑
* 处理数据 * 处理数据
*/ */
import { jjcyTableData, jsyyTableData, lcbsjTableData } from "../../data/table/overviewData"; import { jsyyTableData } from "../../data/table/overviewData";
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage, tablePackage } from "../../dataPackage/inFrontOut"; import { keyValuePackage, onceYBarChartPackage } from "../../dataPackage/inFrontOut";
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out"; import { getKeyValueOut, getOnceYBarChartOut } from "../../dataPackage/out";
/**建设运营 */
export function getOperate(req, res) { export function getOperate(req, res) {
let excelData = jsyyTableData(); let excelData = jsyyTableData();
......
/** /**
* 整体概览 逻辑 * 整体概览 经济产业 逻辑
* 处理数据 * 处理数据
*/ */
...@@ -7,7 +7,6 @@ import { jjcyTableData } from '../../data/table/overviewData'; ...@@ -7,7 +7,6 @@ import { jjcyTableData } from '../../data/table/overviewData';
import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage } from '../../dataPackage/inFrontOut'; import { doubleYBarCharPackage, keyValuePackage, onceYBarChartPackage } from '../../dataPackage/inFrontOut';
import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from '../../dataPackage/out'; import { getDoubleYBarChartOut, getKeyValueOut, getOnceYBarChartOut } from '../../dataPackage/out';
/*经济产业*/
export function getEconomy(req, res) { export function getEconomy(req, res) {
let excelData = jjcyTableData(); let excelData = jjcyTableData();
......
/** /**
* 整体概览 逻辑 * 整体概览 绿色出行 逻辑
* 处理数据 * 处理数据
*/ */
...@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut'; ...@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut, getStringOut } from '../../dataPackage/out'; import { getKeyValueOut, getStringOut } from '../../dataPackage/out';
/**绿色出行 */
export function getGreenTravel(req, res) { export function getGreenTravel(req, res) {
let excelData = lscxTableData(); let excelData = lscxTableData();
......
/** /**
* 整体概览 逻辑 * 整体概览 引领规划 逻辑
* 处理数据 * 处理数据
*/ */
import { ylghTableData } from '../../data/table/overviewData'; import { ylghTableData } from '../../data/table/overviewData';
import { getDoubleYBarChartOut, getKeyValueOut, getObjectListOut, getOnceYBarChartOut, getStringOut } from '../../dataPackage/out'; import { getStringOut } from '../../dataPackage/out';
import { separateDataAndUint } from '../../dataPackage/tool'; import { separateDataAndUint } from '../../dataPackage/tool';
/**引领规划 */
export function getLeadingPlanning(req, res) { export function getLeadingPlanning(req, res) {
let excelData = ylghTableData(); let excelData = ylghTableData();
......
/** /**
* 整体概览 逻辑 * 整体概览 地图 逻辑
* 处理数据 * 处理数据
*/ */
...@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut'; ...@@ -8,7 +8,6 @@ import { keyValuePackage } from '../../dataPackage/inFrontOut';
import { getKeyValueOut } from '../../dataPackage/out'; import { getKeyValueOut } from '../../dataPackage/out';
/**地图 */
export function getData(req, res) { export function getData(req, res) {
let excelData = dtTableData(); let excelData = dtTableData();
......
/** /**
* 整体概览 逻辑 * 整体概览 里程碑事件荣誉成果 逻辑
* 处理数据 * 处理数据
*/ */
...@@ -7,7 +7,6 @@ import { lcbsjTableData } from "../../data/table/overviewData"; ...@@ -7,7 +7,6 @@ import { lcbsjTableData } from "../../data/table/overviewData";
import { tablePackage } from "../../dataPackage/inFrontOut"; import { tablePackage } from "../../dataPackage/inFrontOut";
/**里程碑事件荣誉成国 */
export function getMilestone(req, res) { export function getMilestone(req, res) {
let excelData = lcbsjTableData(); let excelData = lcbsjTableData();
......
/** /**
* 土建形象进度 * 建设指挥
* 在建站点弹窗
* 土建形象进度
* 3.0
* 处理数据
*/ */
import { civilEngineeringDetailsTableData, civilEngineeringTableData } from "../../data/table/stationPopupData"; import { civilEngineeringDetailsTableData, civilEngineeringTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut"; import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 土建形象进度基础数据
* @param line 线路名称
* @param site 站点名称
* @returns civilEngineering: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* region:"区域名称",
* normalCompletion:正常完成数量,
* normalDelay:正常延误数量,
* generalDelay:一般延误数量数量,
* seriousDelay:严重延误数量,
* regionNum:"工序编号"
* }, ...... ]
*/
export async function getCivilEngineering(req, res) { export async function getCivilEngineering(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
...@@ -25,6 +44,24 @@ export async function getCivilEngineering(req, res) { ...@@ -25,6 +44,24 @@ export async function getCivilEngineering(req, res) {
} }
/**
* 土建形象进度
* 工序完成情况
* @param regionNum 工序编号
* @returns details: [{ name:"工序名称", dataList:[{数据列表}, ...... ] }]
* dataList:[{
* constructionProcess:"施工工序",
* total:总量,
* weeklyPlan:周计划工作量,
* weeklyCompletion:周完成工作量,
* weeklyRatio:"周完成比例",
* completionStatus:"完成状态", 【正常完成、正常延误、一般延误、严重延误】
* totalCompletion:"总完成工作量",
* totalProportion:"总完成比例",
* incompleteReason:"未完成原因",
* }, ...... ]
* 没有数据的字段不显示,数据为0正常显示
*/
export async function getCivilEngineeringDetails(req, res) { export async function getCivilEngineeringDetails(req, res) {
let regionNum = req.query.regionNum || "17号线西岑站A区"; let regionNum = req.query.regionNum || "17号线西岑站A区";
let tableData = civilEngineeringDetailsTableData(); let tableData = civilEngineeringDetailsTableData();
......
/** /**
* 建设资料 * 建设指挥
* 在建站点弹窗
* 建设资料
* 3.0
* 处理数据
*/ */
import { constructionMaterialsDetailsTableData, constructionMaterialsTableData } from "../../data/table/stationPopupData"; import { constructionMaterialsDetailsTableData, constructionMaterialsTableData } from "../../data/table/stationPopupData";
...@@ -10,7 +14,8 @@ import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage ...@@ -10,7 +14,8 @@ import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage
* 建设资料 * 建设资料
* @param line 线路名称 * @param line 线路名称
* @param site 站点名称 * @param site 站点名称
* @returns constructionMaterials: {site: "站点名称", state: "站点状态", data: [{informationType: "资料类型", informationNum: 资料数量, informationId: "建设资料编号" }, ...... ]} * @returns constructionMaterials: {site: "站点名称", state: "站点状态", data: [{数据列表}]}
* data: [{informationType: "资料类型", informationNum: 资料数量, informationId: "建设资料编号" }, ...... ]
*/ */
export async function getConstructionMaterials(req, res) { export async function getConstructionMaterials(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
...@@ -36,9 +41,10 @@ export async function getConstructionMaterials(req, res) { ...@@ -36,9 +41,10 @@ export async function getConstructionMaterials(req, res) {
/** /**
* 建设资料详情 * 建设资料详情
* @param req * @param informationId 建设资料编号
* @param res * @param informationType 资料类型
* @returns * @param informationName 资料名称
* @returns type:["资料类型", ......], details:[{ name:"资料名称", value:"资料地址" }, { name:"", value:"" }, ...... ]
*/ */
export async function getConstructionMaterialsDetails(req, res) { export async function getConstructionMaterialsDetails(req, res) {
let informationId = req.query.informationId || "17号线西岑站1"; let informationId = req.query.informationId || "17号线西岑站1";
...@@ -72,7 +78,6 @@ export async function getConstructionMaterialsDetails(req, res) { ...@@ -72,7 +78,6 @@ export async function getConstructionMaterialsDetails(req, res) {
} }
} }
let detailsList = [];
for (let key in details) { for (let key in details) {
informationTypeList.push(key); informationTypeList.push(key);
} }
......
/** /**
* 建设里程碑 * 建设指挥
* 在建站点弹窗
* 建设里程碑
* 4.0
* 处理数据
*/ */
import { constructionMilestonesTableData } from "../../data/table/stationPopupData"; import { constructionMilestonesTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut"; import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 建设里程碑
* @param line 线路名称
* @param site 站点名称
* @returns constructionMilestones: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{ constructionContent:"建设内容", constructionTime:"时间", constructionStatus:"建设状态" }, ...... ]
*/
export async function getConstructionMilestones(req, res) { export async function getConstructionMilestones(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
......
/** /**
* 前期证照 * 建设指挥
* 在建站点弹窗
* 前期证照
* 4.0
* 处理数据
*/ */
import { earlyCertificationDefault } from "../../config/defaultConfig"; import { earlyCertificationDefault } from "../../config/defaultConfig";
...@@ -9,22 +13,37 @@ import { change } from "../../dataPackage/inBackOut"; ...@@ -9,22 +13,37 @@ import { change } from "../../dataPackage/inBackOut";
let moment = require("moment"); let moment = require("moment");
moment.suppressDeprecationWarnings = true; moment.suppressDeprecationWarnings = true;
/**
* 前期证照
* @param line 线路名称
* @param site 站点名称
* @returns earlyCertification: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ] }
* data:[{
* licenseName:"证照名称", completionStatus:"完成状态", plannedCompletionTime:"计划完成时间", actualCompletionTime:"实际完成时间", delayDays:"延期天数",
* daysRemaining:"剩余天数", expirationTime:"到期时间", landBorrowingFees:"借地费用", untilExpiration:"距离到期时间", earlyWarning:"是否预警", fileAddress:"文件地址"
* }, ...... ]
* 没有数据的字段不返回,数据为0的字段照常返回
* 到期时间、借地费用属于临时用地许可证
* 1、延期完成状态:显示延期天数 2、未完成:显示剩余天数 3、未到期:显示距离到期时间、是否预警
*/
export async function getEarlyCertification(req, res) { export async function getEarlyCertification(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
let tableData = earlyCertificationTableData(); let tableData = earlyCertificationTableData();
//"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用", "文件地址" //"线路", "站点名称", "站点状态", "证照名称", "完成状态", "计划完成时间", "实际完成时间",
// delayDays, daysRemaining, untilExpiration //"到期时间", "借地费用", "文件地址"
let data = change( let data = change(
["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", ["line", "site", "state", "licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime",
"expirationTime", "landBorrowingFees", "fileAddress"] "expirationTime", "landBorrowingFees", "fileAddress"]
, tableData["前期证照数据"].bodyList ); , tableData["前期证照数据"].bodyList );
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "delayDays", //"证照名称", "完成状态", "计划完成时间", "实际完成时间", "到期时间", "借地费用",
"daysRemaining", "expirationTime", "landBorrowingFees", "untilExpiration", "earlyWarning", "fileAddress"]; //"延期天数", "剩余天数", "距离到期", "是否预警", "文件地址"
let conf = ["licenseName", "completionStatus", "plannedCompletionTime", "actualCompletionTime", "expirationTime", "landBorrowingFees",
"delayDays", "daysRemaining", "untilExpiration", "earlyWarning", "fileAddress"];
// let earlyCertification = getPopupMoreData(line, data, conf);
let earlyCertification:any = {}; let earlyCertification:any = {};
data.forEach(item => { data.forEach(item => {
...@@ -71,6 +90,27 @@ export async function getEarlyCertification(req, res) { ...@@ -71,6 +90,27 @@ export async function getEarlyCertification(req, res) {
} }
/**
* 前期证照
* @param line 线路名称
* @param site 站点名称
* @returns earlyCertification: { site:"站点名称", state:"站点状态", data:[{数据列表}] }
* data:[{
* licenseName:"证照名称",
* completionStatus:"完成状态",
* fileAddress:"文件地址",
* listData:[
* {key:"数据名称", value:"数据值"}, ......
* ]
* }, ...... ]
* 没有数据的字段不返回,数据为0的字段照常返回
* 到期时间、借地费用属于临时用地许可证
* 1、延期完成状态:显示延期天数 2、未完成:显示剩余天数 3、未到期:显示距离到期时间、是否预警
*/
// export async function getEarlyCertification(req, res) { // export async function getEarlyCertification(req, res) {
// let line = req.query.line || "17号线"; // let line = req.query.line || "17号线";
// let site = req.query.site || "西岑站"; // let site = req.query.site || "西岑站";
......
/** /**
* 参建单位 * 建设指挥
* 在建站点弹窗
* 参建单位
* 4.0
* 处理数据
*/ */
import { participatingUnitsDefault, participatingUnitsListDefault } from "../../config/defaultConfig"; import { participatingUnitsDefault, participatingUnitsListDefault } from "../../config/defaultConfig";
import { participatingUnitsTableData } from "../../data/table/stationPopupData"; import { participatingUnitsTableData } from "../../data/table/stationPopupData";
import { change, getPopupOneData } from "../../dataPackage/inBackOut"; import { change, getPopupOneData } from "../../dataPackage/inBackOut";
// export async function getParticipatingUnits(req, res) { /**
// let line = req.query.line || "17号线"; * 参建单位
// let site = req.query.site || "西岑站"; * @param line 线路名称
// let tableData = participatingUnitsTableData(); * @param site 站点名称
* @returns participatingUnits: { site:"站点名称", state:"站点状态"}
// //"线路", "站点名称", "站点状态", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", * @returns dataList: [ { key:"数据名称", value:数据值, unit:"单位" }, ...... ]
// let data = change(["line", "site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"], tableData["参建单位数据"].bodyList ); * key:"建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"
*/
// let conf = ["site", "state", "constructUnits", "curveyUnits", "designUnits", "constructionUnits", "supervisionUnits"];
// let participatingUnits = getPopupOneData(line, data, conf);
// let result = {"participatingUnits": participatingUnits[site] || participatingUnitsDefault};
// res.send(result);
// return result;
// }
export async function getParticipatingUnits(req, res) { export async function getParticipatingUnits(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
let tableData = participatingUnitsTableData(); let tableData = participatingUnitsTableData();
//"线路", "站点名称", "站点状态", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", //"线路", "站点名称", "站点状态", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"
let data = change(["line", "site", "state", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"], tableData["参建单位数据"].bodyList ); let data = change(["line", "site", "state", "建设单位", "勘察单位", "设计单位", "施工单位", "监理单位", "第三方检测单位", "环境检测单位"], tableData["参建单位数据"].bodyList );
let conf = ["site", "state"]; let conf = ["site", "state"];
......
/** /**
* 管线搬迁 * 建设指挥
* 在建站点弹窗
* 管线搬迁
* 4.0
* 处理数据
*/ */
import { pipelineRelocationDetailsTableData, pipelineRelocationTableData } from "../../data/table/stationPopupData"; import { pipelineRelocationDetailsTableData, pipelineRelocationTableData } from "../../data/table/stationPopupData";
import { change, getPopupDetailsData, getPopupMoreData } from "../../dataPackage/inBackOut"; import { change, getPopupDetailsData } from "../../dataPackage/inBackOut";
/**
* 管线搬迁基础数据
* @param line 线路名称
* @param site 站点名称
* @returns pipelineRelocation: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* title:"标题", 【道路翻胶、电力、电信、非电信、雨水、污水、上水、燃气】
* list:[{
* completed:已完成数量,
* inProgress:进行中数量,
* delaying:延误中数量,
* notStarted:未开始数量,
* stage:"阶段", --该字段只有标题为道路翻胶时有
* id:"管线搬迁编号"
* }, ...... ]
* }, ...... ]
*/
export async function getPipelineRelocation(req, res) { export async function getPipelineRelocation(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
...@@ -15,7 +37,6 @@ export async function getPipelineRelocation(req, res) { ...@@ -15,7 +37,6 @@ export async function getPipelineRelocation(req, res) {
let conf = ["completed", "inProgress", "delaying", "notStarted", "id"]; let conf = ["completed", "inProgress", "delaying", "notStarted", "id"];
let stageConf = ["completed", "inProgress", "delaying", "notStarted", "stage", "id"]; let stageConf = ["completed", "inProgress", "delaying", "notStarted", "stage", "id"];
// let pipelineRelocation = getPopupMoreData(line, data, conf);
let pipelineRelocation:any = {}; let pipelineRelocation:any = {};
...@@ -63,13 +84,21 @@ export async function getPipelineRelocation(req, res) { ...@@ -63,13 +84,21 @@ export async function getPipelineRelocation(req, res) {
} }
/**
* 管道搬迁弹窗详情
* @param id 管线搬迁编号
* @returns details: [{ name:"管线电力名称", dataList:[{数据列表}, ...... ] }, ...... ]
* dataList:[{
* relocateName:"搬迁进度名称",
* relocateState:"进度状态"
* }, ...... ]
*/
export async function getPipelineRelocationDetails(req, res) { export async function getPipelineRelocationDetails(req, res) {
let id = req.query.id || "17号线西岑站1"; let id = req.query.id || "17号线西岑站1";
let tableData = pipelineRelocationDetailsTableData(); let tableData = pipelineRelocationDetailsTableData();
let result:any = {}; let result:any = {};
//
result["details"] = getPopupDetailsData(id, tableData, ["powerName", "relocateName", "relocateState"], ["relocateName", "relocateState"], "powerName"); result["details"] = getPopupDetailsData(id, tableData, ["powerName", "relocateName", "relocateState"], ["relocateName", "relocateState"], "powerName");
res.send(result); res.send(result);
......
/** /**
* 动迁腾地 * 建设指挥
* 在建站点弹窗
* 动迁腾地
* 3.0
* 处理数据
*/ */
import { relocationTengdiDefaule } from "../../config/defaultConfig"; import { relocationTengdiDefaule } from "../../config/defaultConfig";
import { relocationTengdiTableData } from "../../data/table/stationPopupData"; import { relocationTengdiTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut"; import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 动迁腾地
* @param line 线路名称
* @param site 站点名称
* @returns relocationTengdi: { site:"站点名称", state:"站点状态", data:[{数据列表}, ...... ]}
* data:[{
* completionRateName:"完成率名称",
* completionRate:完成率,
* totalName:"总数名称",
* total:总数,
* completedNumName:"完成数名称",
* completedNum:完成数
* }, ...... ]
*/
export async function getRelocationTengdi(req, res) { export async function getRelocationTengdi(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
......
/** /**
* 遗留问题 * 建设指挥
* 在建站点弹窗
* 遗留问题
* 4.0
* 处理数据
*/ */
import { remainingProblemsTableData } from "../../data/table/stationPopupData"; import { remainingProblemsTableData } from "../../data/table/stationPopupData";
import { change, getPopupMoreData } from "../../dataPackage/inBackOut"; import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
/**
* 遗留问题
* @param line 线路名称
* @param site 站点名称
* @returns remainingProblems: {site: "站点名称", state: "站点状态", data: [{数据列表}]}
* data:[{ problemName:"问题名称", problemDescription:"问题说明", fillingTime:"填报时间", reportingDepartment:"填报部门" }]
*/
export async function getRemainingProblems(req, res) { export async function getRemainingProblems(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
let tableData = remainingProblemsTableData(); let tableData = remainingProblemsTableData();
//"线路", "站点名称", "站点状态", "区域", "正常完成", "正常延误", "一般延误", "严重延误" //"线路", "站点名称", "站点状态", "问题名称", "问题说明", "填报时间", "填报部门"
let data = change(["line", "site", "state", "problemName", "problemDescription", "fillingTime", "reportingDepartment"], tableData["遗留问题数据"].bodyList ); let data = change(["line", "site", "state", "problemName", "problemDescription", "fillingTime", "reportingDepartment"], tableData["遗留问题数据"].bodyList );
let conf = ["problemName", "problemDescription", "fillingTime", "reportingDepartment"]; let conf = ["problemName", "problemDescription", "fillingTime", "reportingDepartment"];
......
/** /**
* 风险隐患 * 建设指挥
* 在建站点弹窗
* 风险隐患
* 4.0
* 处理数据
*/ */
import { riskHazardsDetailsTableData, riskHazardsTableData } from "../../data/table/stationPopupData"; import { riskHazardsDetailsTableData, riskHazardsTableData } from "../../data/table/stationPopupData";
...@@ -10,7 +14,8 @@ import { change, getPopupMoreData } from "../../dataPackage/inBackOut"; ...@@ -10,7 +14,8 @@ import { change, getPopupMoreData } from "../../dataPackage/inBackOut";
* 风险隐患 * 风险隐患
* @param line 线路名称 * @param line 线路名称
* @param site 站点名称 * @param site 站点名称
* @returns riskHazards: { site} * @returns riskHazards: { site:"站点名称", state:"站点状态", total:风险隐患数, data:[{数据列表}, ...... ]}
* data:[{ riskName:"风险名称", riskLevel:"风险等级", riskId:"风险编号" }, ...... ]
*/ */
export async function getRiskHazards(req, res) { export async function getRiskHazards(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
...@@ -36,9 +41,8 @@ export async function getRiskHazards(req, res) { ...@@ -36,9 +41,8 @@ export async function getRiskHazards(req, res) {
/** /**
* 风险隐患详情 * 风险隐患详情
* @param req * @param riskId 风险编号
* @param res * @returns details:[ { name:"隐患详情名称", value:"隐患详情内容" }, { name:"", value:"" }, ...... ]
* @returns details:[ { name:"", value:"" }, { name:"", value:"" }, ...... ]
*/ */
export async function getRiskHazardsDetails(req, res) { export async function getRiskHazardsDetails(req, res) {
let riskId = req.query.riskId|| "17号线西岑站1"; let riskId = req.query.riskId|| "17号线西岑站1";
......
/** /**
* 智慧工地 * 建设指挥
* 在建站点弹窗
* 智慧工地
* 4.0
* 处理数据
*/ */
import { smartConstructionSiteTableData, surveillanceVideoTableData, gateDataTableData, monitoringDataTableData} from "../../data/table/stationPopupData"; import { smartConstructionSiteTableData, surveillanceVideoTableData, gateDataTableData, monitoringDataTableData} from "../../data/table/stationPopupData";
...@@ -7,16 +11,19 @@ import { change } from "../../dataPackage/inBackOut"; ...@@ -7,16 +11,19 @@ import { change } from "../../dataPackage/inBackOut";
/** /**
* 智慧工地基础数据 * 智慧工地基础数据
* @param req * @param line 线路名称
* @param res * @param site 站点名称
* @returns * @returns smartConstructionSite: {
* videoList:[{name:"监控视频名称", url:"监控视频地址"}, ...... ],
* gateList:{ mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数", notCheckedIn:"未签到", notSignedOut:"未签退", gateId:"闸机编号" },
* monitoringList:[{ monitoringType:"监测类型", measurementPoints:"测点数", monitoringId:"监测数据编号" }, ...... ]}
*/ */
export async function getSmartConstructionSite(req, res) { export async function getSmartConstructionSite(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
let tableData = smartConstructionSiteTableData(); let tableData = smartConstructionSiteTableData();
//"线路", "站点名称", "站点状态", "监控视频编号", "进场人数", "退场人数", "在场人数", "未签到", "未签退", "闸机编号", "监测类型", "测点数" //"线路", "站点名称", "站点状态", "监控视频编号", "进场人数", "退场人数", "在场人数", "未签到", "未签退", "闸机编号", "监测类型", "测点数", "监测数据编号"
let data = change(["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"], tableData["智慧工地数据"].bodyList ); let data = change(["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"], tableData["智慧工地数据"].bodyList );
let conf = ["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"]; let conf = ["line", "site", "state", "videoId", "mobilizationPeopleNum", "exitPeopleNum", "presencePeopleNum", "notCheckedIn", "notSignedOut", "gateId", "monitoringId"];
...@@ -74,8 +81,10 @@ export async function getSmartConstructionSite(req, res) { ...@@ -74,8 +81,10 @@ export async function getSmartConstructionSite(req, res) {
/** /**
* 智慧工地闸机数据 * 智慧工地闸机数据
* @param req * @param gateId 闸机编号
* @param res * @returns gateDetails: {
* jobStatistics:[{ personnelType:"人员类型", mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数" }, ...... ],
* teamStatistics:[{ unitName:"单位名称", mobilizationPeopleNum:"进场人数", exitPeopleNum:"退场人数", presencePeopleNum:"在场人数" }, ...... ]
* @returns * @returns
*/ */
export async function getGateData(req, res) { export async function getGateData(req, res) {
...@@ -107,8 +116,13 @@ export async function getGateData(req, res) { ...@@ -107,8 +116,13 @@ export async function getGateData(req, res) {
/** /**
* 智慧工地监测数据详情 * 智慧工地监测数据详情
* @param req * @param monitoringId 监测数据编号
* @param res * @returns monitoring: {
* "测点名称":{
* "累计变化量":{"日期":[{ name:"第三方监测位移(mm)累计变化量", value:0 }, { name:"施工监测位移(mm)累计变化量", value:0 }], ...... },
* "日变化量":{"日期":[{ name:"第三方监测位移(mm)日变化量", value:0 }, { name:"施工监测位移(mm)日变化量", value:0 }], ...... }
* }, ......
* }
* @returns * @returns
*/ */
export async function getMonitoringData(req, res) { export async function getMonitoringData(req, res) {
......
/** /**
* 车站信息 * 建设指挥
* 在建站点弹窗
* 车站信息
* 4.0
* 处理数据
*/ */
import { stationDataLiatDefault, stationDefault } from "../../config/defaultConfig"; import { stationDataLiatDefault, stationDefault } from "../../config/defaultConfig";
...@@ -8,6 +12,14 @@ import { change, getPopupOneData } from "../../dataPackage/inBackOut"; ...@@ -8,6 +12,14 @@ import { change, getPopupOneData } from "../../dataPackage/inBackOut";
import { separateDataAndUint } from "../../dataPackage/tool"; import { separateDataAndUint } from "../../dataPackage/tool";
/**
* 车站信息
* @param line 线路名称
* @param site 站点名称
* @returns stationInfo: { site:"站点名称", state:"站点状态", stationType:"车站类型"}
* @returns dataList: [ { key:"数据名称", value:数据值, unit:"单位" }, ...... ]
* key:"建筑面积", "站台长度", "站台宽度", "建设周期", "车站出入口", "车站风井"
*/
export async function getStation(req, res) { export async function getStation(req, res) {
let line = req.query.line || "17号线"; let line = req.query.line || "17号线";
let site = req.query.site || "西岑站"; let site = req.query.site || "西岑站";
......
...@@ -7,9 +7,9 @@ import { Config } from './interfaceConfig'; ...@@ -7,9 +7,9 @@ import { Config } from './interfaceConfig';
//初始化接口数据 //初始化接口数据
export async function initInterfaceData() { export async function initInterfaceData() {
const InitTaskSuccess = await taskUpdate(); const InitTaskSuccess = await taskUpdate();
if (!InitTaskSuccess) throw new BizError("服务器启动失败: 初始化定时接口数据时出现问题 请检查目标服务器或本地请求配置"); // if (!InitTaskSuccess) throw new BizError("服务器启动失败: 初始化定时接口数据时出现问题 请检查目标服务器或本地请求配置");
const InitRealTimeSuccess = await initRealTime(); const InitRealTimeSuccess = await initRealTime();
if (!InitRealTimeSuccess) throw new BizError("服务器启动失败: 初始化实时接口数据时出现问题 请检查目标服务器或本地请求配置"); // if (!InitRealTimeSuccess) throw new BizError("服务器启动失败: 初始化实时接口数据时出现问题 请检查目标服务器或本地请求配置");
console.log("初始化接口数据成功"); console.log("初始化接口数据成功");
setInterval(() => { setInterval(() => {
taskUpdate(); taskUpdate();
......
...@@ -14,4 +14,5 @@ import { INTERFACEREQUESTTYPEENUM } from "../../config/enum"; ...@@ -14,4 +14,5 @@ import { INTERFACEREQUESTTYPEENUM } from "../../config/enum";
export const Config = { 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:{}}, "获取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:{}}, "质量安全指标面板":{type:INTERFACEREQUESTTYPEENUM.即时更新, time:3600000*12, url:"http://112.64.195.226: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:{}},
}; };
/** /**
* 质量安全指标面板 * 质量安全指标面板
* 已对接申电云方接口
* 由于部署服务器与申电云接口不通,所以本机获取申电云方接口,存入res/quality.json文件,部署服务器上直接读取res/quality.json文件
*/ */
import { getToken } from "../../middleware/getToken";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import { getInterfaceByInterfaceName } from "./cronJob"; import { readQualityData } from "./writeJson";
export async function getQualitySafetyPanel() { export async function getQualitySafetyPanel() {
let token = await getToken(); let data = await readQualityData();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token}); // let data = await getInterfaceByInterfaceName("质量安全指标面板暂存json接口", {});
if (!data) throw new BizError("获取json数据失败");
let qualitySafetyPanelData = getData(data); let qualitySafetyPanelData = getData(data);
let significantRisk:any = {"全网":{}}; //重大风险分布 let significantRisk:any = {"全网":{}}; //重大风险分布
......
/**
* 质量安全指标面板接口数据写入json文件
*/
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');
/**
* 写入json文件
* @param data
*/
export function writeQualityDataInJson(data) {
let str = JSON.stringify(data, null, "\t");
fs.writeFileSync(url, str, function(err) {
if (err) {
throw new BizError(err);
}
console.log("写入成功");
});
}
/**
* 读取json文件
*/
export function readQualityData() {
let person = JSON.parse(fs.readFileSync(url));
if (!person) throw new BizError("读取文件数据失败");
return person;
}
/**
* 读取文件然后在原有文件内容的基础上添加内容,如果key名重复则覆盖
*/
function addData(data) {
fs.readFile(url, "utf-8", function (err, data) {
if (err) {
console.log(err);
}
let person = JSON.parse(data);
Object.assign(data, person);
let str = JSON.stringify(person, null, "\t");
fs.writeFile(url, str, function (err) {
if (err) {
console.error(err);
}
console.log('新增成功!');
})
})
}
\ No newline at end of file
...@@ -4,13 +4,21 @@ var os = require("os") ...@@ -4,13 +4,21 @@ var os = require("os")
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
import { initConfig, systemConfig } from "./config/serverConfig"; import { initConfig, systemConfig } from "./config/serverConfig";
import { getToken } from "./middleware/getToken"; import { getToken } from "./middleware/getToken";
import { writeQualityDataInJson } from "./data/interface/writeJson";
async function lanuch() { async function lanuch() {
await initConfig(); await initConfig();
initInterfaceData(); initInterfaceData();
// dataInJson();
httpServer.createServer( systemConfig.port ); httpServer.createServer( systemConfig.port );
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
} }
async function dataInJson() {
let token = await getToken();
let data = await getInterfaceByInterfaceName("质量安全指标面板", {token});
writeQualityDataInJson(data);
}
lanuch(); lanuch();
...@@ -5,12 +5,10 @@ ...@@ -5,12 +5,10 @@
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
import * as plannedprogressBiz from '../biz/construct/plannedprogress'; import * as plannedprogressBiz from '../biz/construct/plannedprogress';
import * as qualityBiz from '../biz/construct/quality'; import * as qualityBiz from '../biz/construct/quality';
import * as investBiz from '../biz/construct/invest';
import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as mapBiz from '../biz/construct/map'; import * as mapBiz from '../biz/construct/map';
import * as 业财融合Biz from '../biz/construct/业财融合面板'; import * as businessfinanceBiz from '../biz/construct/businessFinance';
import * as investBiz from '../biz/construct/invest';
import * as contractWarningBiz from '../biz/construct/contractWarning'; import * as contractWarningBiz from '../biz/construct/contractWarning';
import * as 投资管控Biz from '../biz/construct/投资管控面板';
export function setRouter(httpServer) { export function setRouter(httpServer) {
/**计划进度指标面板 */ /**计划进度指标面板 */
...@@ -40,11 +38,11 @@ export function setRouter(httpServer) { ...@@ -40,11 +38,11 @@ export function setRouter(httpServer) {
// 3.0 ---------------------------------------- // 3.0 ----------------------------------------
/**业财融合指标面板 */ /**业财融合指标面板 */
httpServer.get('/construct/businessfinance/estimate', asyncHandler(业财融合Biz.getEstimate) ); //概算总数 httpServer.get('/construct/businessfinance/estimate', asyncHandler(businessfinanceBiz.getEstimate) ); //概算总数
httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(业财融合Biz.getInvestmentCompletion) ); //投资完成情况 httpServer.get('/construct/businessfinance/investmentcompletion', asyncHandler(businessfinanceBiz.getInvestmentCompletion) ); //投资完成情况
/**投资管控指标面板 */ /**投资管控指标面板 */
httpServer.get('/construct/invest', asyncHandler(投资管控Biz.getInvest) ); httpServer.get('/construct/invest', asyncHandler(investBiz.getInvest) );
/**合同预警弹窗 */ /**合同预警弹窗 */
httpServer.get('/construct/contractWarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警 httpServer.get('/construct/contractWarning/budgetwarning', asyncHandler(contractWarningBiz.getBudgetWarning) ); //三级概算预警
httpServer.get('/construct/contractWarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本 httpServer.get('/construct/contractWarning/targetcost', asyncHandler(contractWarningBiz.getTargetCost) ); //线路概算目标成本
......
...@@ -43,7 +43,7 @@ export function setRouter(httpServer) { ...@@ -43,7 +43,7 @@ export function setRouter(httpServer) {
httpServer.get('/stationpopup/constructionMaterials', asyncHandler(constructionMaterialsBiz.getConstructionMaterials)); //建设资料 httpServer.get('/stationpopup/constructionMaterials', asyncHandler(constructionMaterialsBiz.getConstructionMaterials)); //建设资料
httpServer.get('/stationpopup/constructionMaterials/details', asyncHandler(constructionMaterialsBiz.getConstructionMaterialsDetails)); //建设资料详情 httpServer.get('/stationpopup/constructionMaterials/details', asyncHandler(constructionMaterialsBiz.getConstructionMaterialsDetails)); //建设资料详情
httpServer.get('/stationpopup/constructionMaterials/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0 httpServer.get('/stationpopup/remainingproblems', asyncHandler(remainingProblemsBiz.getRemainingProblems)); //遗留问题 4.0
// httpServer.get('/stationpopup/constructionMaterials/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0 // httpServer.get('/stationpopup/localization', asyncHandler(localizationBiz.getLocalization)); //属地化移交 4.0 设计图还没有定内容
} }
\ No newline at end of file
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