From 4134c92dafac807179139900f0367470b23d46a9 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Sat, 23 Jul 2022 10:50:01 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=B7=A1=E6=9F=A5=E5=85=BB=E6=8A=A4?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/src/packages/patrol/index.jsx | 100 +++++++++++++++++++-------- weapp/src/packages/patrol/index.scss | 67 +++++++++++++++++- 2 files changed, 136 insertions(+), 31 deletions(-) diff --git a/weapp/src/packages/patrol/index.jsx b/weapp/src/packages/patrol/index.jsx index d8e594da..fa27ad47 100644 --- a/weapp/src/packages/patrol/index.jsx +++ b/weapp/src/packages/patrol/index.jsx @@ -1,4 +1,5 @@ import React, { useState, useEffect } from 'react'; +import Taro from '@tarojs/taro'; import { View, RadioGroup, @@ -37,7 +38,7 @@ const Index = () => { ] useEffect(() => { - const prjTypeSelector = ['道路', '桥梁', '涵洞'] + const prjTypeSelector = ['道路', '桥梁', '涵洞', '其他'] const roadSelector = ['富山一路', '金沙大道', '玉湖路'] setPrjTypeSelector(prjTypeSelector) setRoadSelector(roadSelector) @@ -66,10 +67,19 @@ const Index = () => { setProjectType(selector[e.detail.value]) } - function onImgPickerChange() { - + function onImgPickerChange(files) { + setimages(files) + } + function onImageClick(index, file) { + Taro.previewImage({ + urls: [file.url] // 需要预览的图片http链接列表 + }) } + useEffect(() => { + console.log(images); + }, [images]) + return ( @@ -142,14 +152,16 @@ const Index = () => { - + + + { // value={this.state.value} // onChange={this.handleChange.bind(this, 'value')} /> - + + + - - - + + { isPatrol ? - + 现场图片: = 3 ? false : true} files={images} onChange={onImgPickerChange} + onImageClick={onImageClick} /> : - + 养护图片: - - + + + 养护前 + + + + + 养护中 + + + + + 养护后 + + } diff --git a/weapp/src/packages/patrol/index.scss b/weapp/src/packages/patrol/index.scss index 44aa32e2..b7338b0f 100644 --- a/weapp/src/packages/patrol/index.scss +++ b/weapp/src/packages/patrol/index.scss @@ -40,12 +40,77 @@ } } - .img-picker { + .patrol-picker { background-color: #fff; + padding: 20px; } + .conserve-picker { + background-color: #fff; + padding: 20px; + + .horizontal-line { + height: 30px; + width: 100%; + display: flex; + justify-content: left; + align-items: center; + + .circle { + margin-left: 4px; + width: 22px; + height: 22px; + background-color: #fff; + border-radius: 50%; + } + + .text { + margin-left: 46px; + font-size: 24px; + } + } + .hl-one { + background-color: #DFDFDF; + + .c-one { + border: solid 4px #999999; + } + + .t-one { + color: #999999; + } + } + .hl-two { + background-color: #f7d3a5; + + .c-two { + border: solid 4px #FE9B1C; + } + + .t-two { + color: #FE9B1C; + } + } + .hl-three { + background-color: #a0f3a4; + + .c-three { + border: solid 4px #08D514; + } + + .t-three { + color: #08D514; + } + } + + .img-picker { + margin: 20px; + } + } + .sub-btn { width: 70%; + margin-top: 100px; } } \ No newline at end of file From 8164437d5fa034008d3fac07a224504aabb7f691 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Sat, 23 Jul 2022 11:46:17 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E2=80=9C=E6=88=91=E7=9A=84=E2=80=9D?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weapp/src/pages/user/index.jsx | 40 +++++++--- weapp/src/pages/user/index.scss | 109 ++++++++++++++++++++-------- weapp/src/static/img/my/card-bg.svg | 23 ++++++ weapp/src/static/img/my/head.png | Bin 0 -> 1431 bytes weapp/src/static/img/my/more.svg | 13 ++++ weapp/src/static/img/my/pswd.svg | 18 +++++ weapp/src/static/img/my/report.svg | 14 ++++ 7 files changed, 175 insertions(+), 42 deletions(-) create mode 100644 weapp/src/static/img/my/card-bg.svg create mode 100644 weapp/src/static/img/my/head.png create mode 100644 weapp/src/static/img/my/more.svg create mode 100644 weapp/src/static/img/my/pswd.svg create mode 100644 weapp/src/static/img/my/report.svg diff --git a/weapp/src/pages/user/index.jsx b/weapp/src/pages/user/index.jsx index 6c34502f..781cbb80 100644 --- a/weapp/src/pages/user/index.jsx +++ b/weapp/src/pages/user/index.jsx @@ -5,16 +5,20 @@ import { logout } from '@/actions/auth'; import { getLogoutUrl } from '@/services/api'; import cfg from '../../config'; import './index.scss'; - -import Common from '../../components/echartForWx/common'; - +import headImg from '../../static/img/my/head.png'; +import moreImg from '../../static/img/my/more.svg'; +import pswdImg from '../../static/img/my/pswd.svg'; +import reportImg from '../../static/img/my/report.svg'; const { webUrl } = cfg; - const Index = ({ ...props }) => { const userInfo = Taro.getStorageSync('userInfo') || {}; + const goRedirect = () => { + + } + const onLogout = () => { logout(getLogoutUrl()).then(() => { Taro.reLaunch({ @@ -23,19 +27,33 @@ const Index = ({ ...props }) => { }); } - + console.log(userInfo) return ( - - - - {userInfo.displayName || '----'} + + + + + {userInfo.displayName} + {userInfo.phone} + - - + goRedirect(1)}> + + 我的填报 + + + goRedirect(2)} style={{ marginTop: '2rpx' }}> + + 修改密码 + + + + 退出登录 + ); } diff --git a/weapp/src/pages/user/index.scss b/weapp/src/pages/user/index.scss index 5414ce90..152e5a44 100644 --- a/weapp/src/pages/user/index.scss +++ b/weapp/src/pages/user/index.scss @@ -1,45 +1,92 @@ .page { height: 100vh; background: #F0F2F5; - box-sizing: border-box; - - .personal { - padding: 20px; - - .info { - border-radius: 10px; - background: #fff; - height: 30vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - - .icon { - width: 150px; - height: 150px; - border-radius: 50%; + display: flex; + flex-direction: column; + + .myBox { + width: 90%; + height: 300rpx; + margin: 30rpx auto; + background: url('../../static/img/my/card-bg.svg') no-repeat; + background-size: 100%; + border-radius: 8rpx; + + .my-top { + overflow: hidden; + padding: 70rpx 0 28rpx 30rpx; + + .my-portrait { + width: 120rpx; + height: 120rpx; + display: block; + float: left; } - .name { - font-size: 30px; - margin-top: 30px; + .my-item { + float: left; + margin-left: 32rpx; + width: 70%; + + .my-username { + font-size: 32rpx; + color: #FFFFFF; + margin-bottom: 24rpx; + margin-top: 6rpx; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + } + + .my-phone { + font-size: 28rpx; + font-weight: bold; + color: #FFFFFF; + } } } + } + + .box { + overflow: hidden; + background-color: #fff; + width: 100%; + height: 92rpx; + line-height: 92rpx; + + .box-img { + width: 52rpx; + height: 52rpx; + display: block; + float: left; + padding: 20rpx 20rpx 20rpx 30rpx; + } + .box-txt { + float: left; + font-size: 28rpx; + color: #333333; + } + .img { + width: 52rpx; + height: 52rpx; + display: block; + float: right; + padding: 20rpx 30rpx 20rpx 0; + } } .logout { - box-sizing: border-box; - width: 100vw; - margin-top: 50px; - padding: 0 20px; - - .btn { - background: #fff; - font-size: 28px; - padding: 8px 0; - } + width: 550rpx; + height: 80rpx; + line-height: 80rpx; + background: #346FC2; + border-radius: 8rpx; + font-size: 28rpx; + color: #FFFFFF; + margin: 98rpx auto 0; + text-align: center; } } \ No newline at end of file diff --git a/weapp/src/static/img/my/card-bg.svg b/weapp/src/static/img/my/card-bg.svg new file mode 100644 index 00000000..914f3279 --- /dev/null +++ b/weapp/src/static/img/my/card-bg.svg @@ -0,0 +1,23 @@ + + + 形状结合 + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/head.png b/weapp/src/static/img/my/head.png new file mode 100644 index 0000000000000000000000000000000000000000..a354ae1ae8c6a9643d9ee1bfd07a2859ffbc020a GIT binary patch literal 1431 zcmW-gc{~&d6vv0jRw~C@XRDHuK5eC}O6zVMLx)9iZ$M9v;?$ zSv6eF1KV5>Zb4Na_*Q~j3H)9JD?-Ta0>LIQIM6r-_zno^fR`jlXaoNiKxG4a5t@e~ zr4#(Cp#0<393MCU$Q;PiUF$<#(%Rt|}!siuYv)4U)2Bi(H(3nTjIP%@3BbY|i@`h|$%wbcv_(rwT*hUPOK(N12 zUmwk)qwe(d6|QvF1>!6M@D*4e`?R} zD!Og0Ka(kUrR#-TaLZRnF}<&~+gYmaU-XYX@ds(ev;cg~LV|s&Gjeg;!kUnx?Y%QN z-i9JDb96y}B!0o7hAF%-!+ED0E%92?0 zirAuzp#1vY(WR)obIZxe$&VFC<$KI1g{2y+=er}dm2vXuMZNGyj{Gb zyt>k!(D!1e)~Phvz(TiOjmK0I^7r2eOk+EkxdXzZ$&WWZFu?wpo^ i$GbSGjH>^Q6CS)NtuA}6BI^f-Ex literal 0 HcmV?d00001 diff --git a/weapp/src/static/img/my/more.svg b/weapp/src/static/img/my/more.svg new file mode 100644 index 00000000..fda19b75 --- /dev/null +++ b/weapp/src/static/img/my/more.svg @@ -0,0 +1,13 @@ + + + 切片 + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/pswd.svg b/weapp/src/static/img/my/pswd.svg new file mode 100644 index 00000000..31bbe81b --- /dev/null +++ b/weapp/src/static/img/my/pswd.svg @@ -0,0 +1,18 @@ + + + 切片 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/weapp/src/static/img/my/report.svg b/weapp/src/static/img/my/report.svg new file mode 100644 index 00000000..c4cdfc7c --- /dev/null +++ b/weapp/src/static/img/my/report.svg @@ -0,0 +1,14 @@ + + + 切片 + + + + + + + + + + + \ No newline at end of file From 3d3bee962f16ce7deb87a07ca7ba7fb9a340e2f9 Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Sat, 23 Jul 2022 12:08:57 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E5=85=AC=E4=BA=A4=E8=BD=A6=E8=BE=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/data/bus.js | 155 ++++++ api/app/lib/models/bus_car.js | 493 ++++++++++++++++++ api/app/lib/models/bus_line.js | 232 +++++++++ api/app/lib/routes/data/index.js | 21 + api/log/development.log | 3 + .../车辆信息/四公司车辆信息(1).xls | Bin 0 -> 514560 bytes .../工具脚本(无需执行)/dataIn.js | 61 +-- .../工具脚本(无需执行)/index.js | 17 +- .../公交车辆_字段对应.json | 54 ++ .../公交车辆_数据字段对应.json | 54 ++ .../公交车辆_数据库表对应.json | 54 ++ .../公交车辆_数据脚本对应.sql | 58 +++ 12 files changed, 1158 insertions(+), 44 deletions(-) create mode 100644 api/app/lib/controllers/data/bus.js create mode 100644 api/app/lib/models/bus_car.js create mode 100644 api/app/lib/models/bus_line.js create mode 100644 scripts/0.0.1/data/工具脚本(无需执行)/data/公交/车辆信息/四公司车辆信息(1).xls create mode 100644 scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_字段对应.json create mode 100644 scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据字段对应.json create mode 100644 scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据库表对应.json create mode 100644 scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据脚本对应.sql diff --git a/api/app/lib/controllers/data/bus.js b/api/app/lib/controllers/data/bus.js new file mode 100644 index 00000000..fac8b0e1 --- /dev/null +++ b/api/app/lib/controllers/data/bus.js @@ -0,0 +1,155 @@ +'use strict'; + +async function lineGet (ctx) { + try { + const models = ctx.fs.dc.models; + const { fleet } = ctx.query; + const findOption = { + order: [['id', 'DESC']], + where: { + + }, + } + if (fleet) { + findOption.where.fleet = { $like: `%${fleet}%` } + } + + const roadRes = await models.BusLine.findAll(findOption) + + ctx.status = 200; + ctx.body = roadRes + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +async function lineEdit (ctx) { + try { + const models = ctx.fs.dc.models; + const data = ctx.request.body; + + if (!data.lineId) { + await models.BusLine.create(data) + } else { + await models.BusLine.update( + data, { + where: { + id: data.lineId + } + }) + } + + ctx.status = 204 + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +async function lineDel (ctx) { + try { + const models = ctx.fs.dc.models; + const { lineId } = ctx.params; + + await models.BusLine.destroy({ + where: { + id: lineId + } + }) + + ctx.status = 204 + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + + +async function carGet (ctx) { + try { + const models = ctx.fs.dc.models; + const { fleet } = ctx.query; + const findOption = { + order: [['id', 'DESC']], + where: { + + }, + } + if (fleet) { + findOption.where.fleet = { $like: `%${fleet}%` } + } + + const roadRes = await models.BusCar.findAll(findOption) + + ctx.status = 200; + ctx.body = roadRes + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +async function carEdit (ctx) { + try { + const models = ctx.fs.dc.models; + const data = ctx.request.body; + + if (!data.carId) { + await models.BusCar.create(data) + } else { + await models.BusCar.update( + data, { + where: { + id: data.carId + } + }) + } + + ctx.status = 204 + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +async function carDel (ctx) { + try { + const models = ctx.fs.dc.models; + const { carId } = ctx.params; + + await models.BusCar.destroy({ + where: { + id: carId + } + }) + + ctx.status = 204 + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +module.exports = { + lineGet, lineEdit, lineDel, + carGet, carEdit, carDel, +}; \ No newline at end of file diff --git a/api/app/lib/models/bus_car.js b/api/app/lib/models/bus_car.js new file mode 100644 index 00000000..b338764c --- /dev/null +++ b/api/app/lib/models/bus_car.js @@ -0,0 +1,493 @@ +/* eslint-disable*/ +'use strict'; + +module.exports = dc => { + const DataTypes = dc.ORM; + const sequelize = dc.orm; + const BusCar = sequelize.define("busCar", { + id: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: true, + field: "id", + autoIncrement: true, + unique: "bus_car_id_uindex" + }, + company: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所属公司", + primaryKey: false, + field: "company", + autoIncrement: false + }, + fleet: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所属车队", + primaryKey: false, + field: "fleet", + autoIncrement: false + }, + line: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所属线路", + primaryKey: false, + field: "line", + autoIncrement: false + }, + vehicleNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆编号", + primaryKey: false, + field: "vehicle_number", + autoIncrement: false + }, + vehicleLicensePlateNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆牌照号", + primaryKey: false, + field: "vehicle_license_plate_number", + autoIncrement: false + }, + operationCategory: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "运营类别", + primaryKey: false, + field: "operation_category", + autoIncrement: false + }, + serviceLife: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "已使用年限", + primaryKey: false, + field: "service_life", + autoIncrement: false + }, + engineModel: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "发动机型号", + primaryKey: false, + field: "engine_model", + autoIncrement: false + }, + vehicleModel: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆型号", + primaryKey: false, + field: "vehicle_model", + autoIncrement: false + }, + vehicleCategory: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆类别", + primaryKey: false, + field: "vehicle_category", + autoIncrement: false + }, + vehicleStatus: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆状态", + primaryKey: false, + field: "vehicle_status", + autoIncrement: false + }, + dateOfEntry: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "入户日期", + primaryKey: false, + field: "date_of_entry", + autoIncrement: false + }, + purchaseDate: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "购进日期", + primaryKey: false, + field: "purchase_date", + autoIncrement: false + }, + energyConsumptionType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "能耗类型", + primaryKey: false, + field: "energy_consumption_type", + autoIncrement: false + }, + numberOfStandardUnits: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "标台数", + primaryKey: false, + field: "number_of_standard_units", + autoIncrement: false + }, + maintenanceUnit: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "维保单位", + primaryKey: false, + field: "maintenance_unit", + autoIncrement: false + }, + vehicleType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆类型", + primaryKey: false, + field: "vehicle_type", + autoIncrement: false + }, + brandAndModel: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "厂牌型号", + primaryKey: false, + field: "brand_and_model", + autoIncrement: false + }, + manufacturer: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "生产厂家", + primaryKey: false, + field: "manufacturer", + autoIncrement: false + }, + drivingLicenseNo: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "行驶证编号", + primaryKey: false, + field: "driving_license_no", + autoIncrement: false + }, + engineNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "发动机编号", + primaryKey: false, + field: "engine_number", + autoIncrement: false + }, + mainEnergyConsumption: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "主能耗", + primaryKey: false, + field: "main_energy_consumption", + autoIncrement: false + }, + secondaryEnergyConsumption: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "副能耗", + primaryKey: false, + field: "secondary_energy_consumption", + autoIncrement: false + }, + emissionStandard: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "排放标准", + primaryKey: false, + field: "emission_standard", + autoIncrement: false + }, + startDate: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "启用日期", + primaryKey: false, + field: "start_date", + autoIncrement: false + }, + lastTransferDate: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "最近一次调动日期", + primaryKey: false, + field: "last_transfer_date", + autoIncrement: false + }, + conductor: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车长", + primaryKey: false, + field: "conductor", + autoIncrement: false + }, + vehicleWidth: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车宽", + primaryKey: false, + field: "vehicle_width", + autoIncrement: false + }, + carHeight: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车高", + primaryKey: false, + field: "car_height", + autoIncrement: false + }, + approvedPassengerCapacity: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "核定载客数", + primaryKey: false, + field: "approved_passenger_capacity", + autoIncrement: false + }, + vehicleIdentificationNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆识别号", + primaryKey: false, + field: "vehicle_identification_number", + autoIncrement: false + }, + gearboxBrand: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "变速箱品牌", + primaryKey: false, + field: "gearbox_brand", + autoIncrement: false + }, + manualCarWashingFee: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "人工洗车费", + primaryKey: false, + field: "manual_car_washing_fee", + autoIncrement: false + }, + laborCost: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "劳务费", + primaryKey: false, + field: "labor_cost", + autoIncrement: false + }, + curbWeight: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "整备质量", + primaryKey: false, + field: "curb_weight", + autoIncrement: false + }, + totalMass: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "总质量", + primaryKey: false, + field: "total_mass", + autoIncrement: false + }, + airConditioningTemperature: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "空调温度", + primaryKey: false, + field: "air_conditioning_temperature", + autoIncrement: false + }, + airConditionedCarOrNot: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "是否空调车", + primaryKey: false, + field: "air_conditioned_car_or_not", + autoIncrement: false + }, + turnOnTheAirConditioningTemperature: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "开空调温度", + primaryKey: false, + field: "turn_on_the_air_conditioning_temperature", + autoIncrement: false + }, + power: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "功率", + primaryKey: false, + field: "power", + autoIncrement: false + }, + transmission: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "变速器", + primaryKey: false, + field: "transmission", + autoIncrement: false + }, + seatingCapacity: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "座位数", + primaryKey: false, + field: "seating_capacity", + autoIncrement: false + }, + airConditioningBrand: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "空调品牌", + primaryKey: false, + field: "air_conditioning_brand", + autoIncrement: false + }, + seatType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "座椅类型", + primaryKey: false, + field: "seat_type", + autoIncrement: false + }, + tireSpecifications: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "轮胎规格", + primaryKey: false, + field: "tire_specifications", + autoIncrement: false + }, + roadTransportCertificateNo: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "道路运输证号", + primaryKey: false, + field: "road_transport_certificate_no", + autoIncrement: false + }, + parkingPoint: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "停放点", + primaryKey: false, + field: "parking_point", + autoIncrement: false + }, + carWashingType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "洗车类型", + primaryKey: false, + field: "car_washing_type", + autoIncrement: false + }, + maintenanceFreeWheelEnd: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "免维护轮端", + primaryKey: false, + field: "maintenance_free_wheel_end", + autoIncrement: false + }, + firstGuaranteeDate: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "首保日期", + primaryKey: false, + field: "first_guarantee_date", + autoIncrement: false + }, + dateOfRenovation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "整修日期", + primaryKey: false, + field: "date_of_renovation", + autoIncrement: false + }, + motorVehicleOwner: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "机动车所有人", + primaryKey: false, + field: "motor_vehicle_owner", + autoIncrement: false + } + }, { + tableName: "bus_car", + comment: "", + indexes: [] + }); + dc.models.BusCar = BusCar; + return BusCar; +}; \ No newline at end of file diff --git a/api/app/lib/models/bus_line.js b/api/app/lib/models/bus_line.js new file mode 100644 index 00000000..32aa8c9d --- /dev/null +++ b/api/app/lib/models/bus_line.js @@ -0,0 +1,232 @@ +/* eslint-disable*/ +'use strict'; + +module.exports = dc => { + const DataTypes = dc.ORM; + const sequelize = dc.orm; + const BusLine = sequelize.define("busLine", { + id: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: true, + field: "id", + autoIncrement: true, + unique: "bus_line_id_uindex" + }, + company: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "公司", + primaryKey: false, + field: "company", + autoIncrement: false + }, + fleet: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车队", + primaryKey: false, + field: "fleet", + autoIncrement: false + }, + carCaptain: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车队长", + primaryKey: false, + field: "car_captain", + autoIncrement: false + }, + assistantCarCaptain: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "副车队长", + primaryKey: false, + field: "assistant_car_captain", + autoIncrement: false + }, + officeLocation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "办公地点", + primaryKey: false, + field: "office_location", + autoIncrement: false + }, + lineName: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "线路名称", + primaryKey: false, + field: "line_name", + autoIncrement: false + }, + lineType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "线路类型", + primaryKey: false, + field: "line_type", + autoIncrement: false + }, + lineDivision: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "线路划分", + primaryKey: false, + field: "line_division", + autoIncrement: false + }, + gpsNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "GPS编号", + primaryKey: false, + field: "gps_number", + autoIncrement: false + }, + startingPointEndPoint: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "起点终点", + primaryKey: false, + field: "starting_point_end_point", + autoIncrement: false + }, + numberOfVehicles: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车辆数", + primaryKey: false, + field: "number_of_vehicles", + autoIncrement: false + }, + totalKilometers: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "全程公里数", + primaryKey: false, + field: "total_kilometers", + autoIncrement: false + }, + ticketPrice: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "票价", + primaryKey: false, + field: "ticket_price", + autoIncrement: false + }, + openingTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "开通时间", + primaryKey: false, + field: "opening_time", + autoIncrement: false + }, + runningTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "运行时间", + primaryKey: false, + field: "running_time", + autoIncrement: false + }, + openingTimeSummer: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "开班时间夏令", + primaryKey: false, + field: "opening_time_summer", + autoIncrement: false + }, + shiftClosingTimeSummer: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "收班时间夏令", + primaryKey: false, + field: "shift_closing_time_summer", + autoIncrement: false + }, + openingTimeWinter: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "开班时间冬令", + primaryKey: false, + field: "opening_time_winter", + autoIncrement: false + }, + shiftClosingTimeWinter: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "收班时间冬令", + primaryKey: false, + field: "shift_closing_time_winter", + autoIncrement: false + }, + uplinkOfStationsAlongTheWay: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "沿途站点上行", + primaryKey: false, + field: "uplink_of_stations_along_the_way", + autoIncrement: false + }, + downlinkOfStationsAlongTheWay: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "沿途站点下行", + primaryKey: false, + field: "downlink_of_stations_along_the_way", + autoIncrement: false + }, + area: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所属区域", + primaryKey: false, + field: "area", + autoIncrement: false + }, + remarks: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "备注", + primaryKey: false, + field: "remarks", + autoIncrement: false + } + }, { + tableName: "bus_line", + comment: "", + indexes: [] + }); + dc.models.BusLine = BusLine; + return BusLine; +}; \ No newline at end of file diff --git a/api/app/lib/routes/data/index.js b/api/app/lib/routes/data/index.js index a711792d..35e4aa0a 100644 --- a/api/app/lib/routes/data/index.js +++ b/api/app/lib/routes/data/index.js @@ -5,6 +5,7 @@ const road = require('../../controllers/data/road'); const bridge = require('../../controllers/data/bridge'); const project = require('../../controllers/data/project'); const overspeed = require('../../controllers/data/overspeed'); +const bus = require('../../controllers/data/bus'); module.exports = function (app, router, opts) { @@ -86,4 +87,24 @@ module.exports = function (app, router, opts) { app.fs.api.logAttr['DEL/overspeed/:overspeedId'] = { content: '删除治超数据', visible: false }; router.del('/overspeed/:overspeedId', overspeed.overspeedDel); //overspeed END + + //bus + app.fs.api.logAttr['GET/bus/line'] = { content: '获取公交路线数据', visible: true }; + router.get('/bus/line', bus.lineGet); + + app.fs.api.logAttr['PUT/bus/line'] = { content: '编辑公交路线数据', visible: true }; + router.put('/bus/line', bus.lineEdit); + + app.fs.api.logAttr['DEL/bus/line/:lineId'] = { content: '删除公交路线数据', visible: false }; + router.del('/bus/line/:lineId', bus.lineDel); + + app.fs.api.logAttr['GET/bus/car'] = { content: '获取公交车辆数据', visible: true }; + router.get('/bus/car', bus.carGet); + + app.fs.api.logAttr['PUT/bus/car'] = { content: '编辑公交车辆数据', visible: true }; + router.put('/bus/car', bus.carEdit); + + app.fs.api.logAttr['DEL/bus/car/:carId'] = { content: '删除公交车辆数据', visible: false }; + router.del('/bus/car/:carId', bus.carDel); + //bus END }; diff --git a/api/log/development.log b/api/log/development.log index c37ac24e..b764e92e 100644 --- a/api/log/development.log +++ b/api/log/development.log @@ -7158,3 +7158,6 @@ 2022-07-22 15:58:39.491 - debug: [FS-LOGGER] Init. 2022-07-22 15:58:39.611 - info: [FS-ATTACHMENT] Inject attachment mw into router. 2022-07-22 15:58:39.611 - info: [FS-AUTH] Inject auth and api mv into router. +2022-07-23 11:26:40.514 - debug: [FS-LOGGER] Init. +2022-07-23 11:26:40.651 - info: [FS-ATTACHMENT] Inject attachment mw into router. +2022-07-23 11:26:40.651 - info: [FS-AUTH] Inject auth and api mv into router. diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/data/公交/车辆信息/四公司车辆信息(1).xls b/scripts/0.0.1/data/工具脚本(无需执行)/data/公交/车辆信息/四公司车辆信息(1).xls new file mode 100644 index 0000000000000000000000000000000000000000..e645f00492a43d74e4e8b6a93d1dfb8047930d3e GIT binary patch literal 514560 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 LD>K+XipI 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 literal 0 HcmV?d00001 diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js index 8e017ba2..076bd877 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js +++ b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js @@ -16,38 +16,6 @@ try { port: 5432, }) - let appid = '20200917000567738'; - let key = 'xXm4jsuuD38JIkkhEcK6'; - const getAnswer = async (query) => { - let start = (new Date()).getTime(); - let salt = start; - let str1 = appid + query + salt + key; - let sign = Hex.stringify(MD5(str1)); - console.log(`翻译:${query}`); - let answer = await request.get('http://api.fanyi.baidu.com/api/trans/vip/translate').timeout(1000 * 30).query({ - q: query, - appid: appid, - salt: salt, - from: 'zh', - to: 'en', - sign: sign - }); - if (answer.body.error_code) { - console.warn(answer.body); - throw '百度不给力,快快debug' - } - let rslt = answer.body.trans_result; - // let upperCaseRslt = rslt[0].dst.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()).replace(/ /g, ''); - // let upperCaseRslt = rslt[0].dst.toUpperCase().replace(/ /g, '_'); - // let upperCaseRslt = rslt[0].dst.toLowerCase().replace(/ /g, '_'); - let upperCaseRslt = rslt[0].dst.replace(/\//g, ' ').replace(/'/g, '').replace(/\s{2,}/g, ''); - console.log(`翻译结果:${upperCaseRslt}`); - while (((new Date()).getTime() - start) < (1000 / 8)) {//每s只能调用10次 - continue; - } - return upperCaseRslt - } - const fun = async () => { // note: we don't try/catch this because if connecting throws an exception // we don't need to dispose of the client (it will be undefined) @@ -122,11 +90,16 @@ try { // n: '治超', // tableName: 'overspeed', // }, - { - path: ['./data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx'], - n: '公交线路', - tableName: 'bus_line', - }, + // { + // path: ['./data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx'], + // n: '公交线路', + // tableName: 'bus_line', + // }, + // { + // path: ['./data/公交/车辆信息/四公司车辆信息(1).xls'], + // n: '公交车辆', + // tableName: 'bus_car', + // }, ] for (let f of fileList) { @@ -149,13 +122,25 @@ try { let v = d[k]; if (v) { insertKeys.push(keyMap[k]); - insertValues.push(v); if (f.n == '工程一览') { if (k == '项目进展情况' && v == '已完工') { insertValues[0] = true } } + + if (f.n == '公交车辆') { + if (k == '所属公司') { + insertValues.push(v.split(':')[1]); + continue + } + if (k == '所属车队') { + insertValues.push(v.split(':')[1]); + continue + } + } + + insertValues.push(v); } } insertStr += insertKeys.join(',') + ') VALUES ('; diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/index.js b/scripts/0.0.1/data/工具脚本(无需执行)/index.js index 7964db7b..609cf1fe 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/index.js +++ b/scripts/0.0.1/data/工具脚本(无需执行)/index.js @@ -43,7 +43,7 @@ try { let upperCaseRslt = rslt[0].dst .replace(/\//g, ' ') .replace(/'/g, '') - .replace(/:/g,'') + .replace(/:/g, '') .trim() .replace(/\s{2,}/g, '') .replace(/-/g, ' '); @@ -92,11 +92,16 @@ try { // n: '治超', // tableName: 'overspeed' // }, - { - path: './data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx', - n: '公交线路', - tableName: 'bus_line' - }, + // { + // path: './data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx', + // n: '公交线路', + // tableName: 'bus_line' + // }, + // { + // path: './data/公交/车辆信息/四公司车辆信息(1).xls', + // n: '公交车辆', + // tableName: 'bus_car' + // }, ] for (let f of fileList) { diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_字段对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_字段对应.json new file mode 100644 index 00000000..3af61ff6 --- /dev/null +++ b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_字段对应.json @@ -0,0 +1,54 @@ +{ + "所属公司": "company", + "所属车队": "fleet", + "所属线路": "line", + "车辆编号": "vehicleNumber", + "车辆牌照号": "vehicleLicensePlateNumber", + "运营类别": "operationCategory", + "已使用年限": "serviceLife", + "发动机型号": "engineModel", + "车辆型号": "vehicleModel", + "车辆类别": "vehicleCategory", + "车辆状态": "vehicleStatus", + "入户日期": "dateOfEntry", + "购进日期": "purchaseDate", + "能耗类型": "energyConsumptionType", + "标台数": "numberOfStandardUnits", + "维保单位": "maintenanceUnit", + "车辆类型": "vehicleType", + "厂牌型号": "brandAndModel", + "生产厂家": "manufacturer", + "行驶证编号": "drivingLicenseNo", + "发动机编号": "engineNumber", + "主能耗": "mainEnergyConsumption", + "副能耗": "secondaryEnergyConsumption", + "排放标准": "emissionStandard", + "启用日期": "startDate", + "最近一次调动日期": "lastTransferDate", + "车长": "conductor", + "车宽": "vehicleWidth", + "车高": "carHeight", + "核定载客数": "approvedPassengerCapacity", + "车辆识别号": "vehicleIdentificationNumber", + "变速箱品牌": "gearboxBrand", + "人工洗车费": "manualCarWashingFee", + "劳务费": "laborCost", + "整备质量": "curbWeight", + "总质量": "totalMass", + "空调温度": "airConditioningTemperature", + "是否空调车": "airConditionedCarOrNot", + "开空调温度": "turnOnTheAirConditioningTemperature", + "功率": "power", + "变速器": "transmission", + "座位数": "seatingCapacity", + "空调品牌": "airConditioningBrand", + "座椅类型": "seatType", + "轮胎规格": "tireSpecifications", + "道路运输证号": "roadTransportCertificateNo", + "停放点": "parkingPoint", + "洗车类型": "carWashingType", + "免维护轮端": "maintenanceFreeWheelEnd", + "首保日期": "firstGuaranteeDate", + "整修日期": "dateOfRenovation", + "机动车所有人": "motorVehicleOwner" +} \ No newline at end of file diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据字段对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据字段对应.json new file mode 100644 index 00000000..29f2e1ad --- /dev/null +++ b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据字段对应.json @@ -0,0 +1,54 @@ +{ + "company": "所属公司", + "fleet": "所属车队", + "line": "所属线路", + "vehicleNumber": "车辆编号", + "vehicleLicensePlateNumber": "车辆牌照号", + "operationCategory": "运营类别", + "serviceLife": "已使用年限", + "engineModel": "发动机型号", + "vehicleModel": "车辆型号", + "vehicleCategory": "车辆类别", + "vehicleStatus": "车辆状态", + "dateOfEntry": "入户日期", + "purchaseDate": "购进日期", + "energyConsumptionType": "能耗类型", + "numberOfStandardUnits": "标台数", + "maintenanceUnit": "维保单位", + "vehicleType": "车辆类型", + "brandAndModel": "厂牌型号", + "manufacturer": "生产厂家", + "drivingLicenseNo": "行驶证编号", + "engineNumber": "发动机编号", + "mainEnergyConsumption": "主能耗", + "secondaryEnergyConsumption": "副能耗", + "emissionStandard": "排放标准", + "startDate": "启用日期", + "lastTransferDate": "最近一次调动日期", + "conductor": "车长", + "vehicleWidth": "车宽", + "carHeight": "车高", + "approvedPassengerCapacity": "核定载客数", + "vehicleIdentificationNumber": "车辆识别号", + "gearboxBrand": "变速箱品牌", + "manualCarWashingFee": "人工洗车费", + "laborCost": "劳务费", + "curbWeight": "整备质量", + "totalMass": "总质量", + "airConditioningTemperature": "空调温度", + "airConditionedCarOrNot": "是否空调车", + "turnOnTheAirConditioningTemperature": "开空调温度", + "power": "功率", + "transmission": "变速器", + "seatingCapacity": "座位数", + "airConditioningBrand": "空调品牌", + "seatType": "座椅类型", + "tireSpecifications": "轮胎规格", + "roadTransportCertificateNo": "道路运输证号", + "parkingPoint": "停放点", + "carWashingType": "洗车类型", + "maintenanceFreeWheelEnd": "免维护轮端", + "firstGuaranteeDate": "首保日期", + "dateOfRenovation": "整修日期", + "motorVehicleOwner": "机动车所有人" +} \ No newline at end of file diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据库表对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据库表对应.json new file mode 100644 index 00000000..f78c88e1 --- /dev/null +++ b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据库表对应.json @@ -0,0 +1,54 @@ +{ + "所属公司": "company", + "所属车队": "fleet", + "所属线路": "line", + "车辆编号": "vehicle_number", + "车辆牌照号": "vehicle_license_plate_number", + "运营类别": "operation_category", + "已使用年限": "service_life", + "发动机型号": "engine_model", + "车辆型号": "vehicle_model", + "车辆类别": "vehicle_category", + "车辆状态": "vehicle_status", + "入户日期": "date_of_entry", + "购进日期": "purchase_date", + "能耗类型": "energy_consumption_type", + "标台数": "number_of_standard_units", + "维保单位": "maintenance_unit", + "车辆类型": "vehicle_type", + "厂牌型号": "brand_and_model", + "生产厂家": "manufacturer", + "行驶证编号": "driving_license_No", + "发动机编号": "engine_number", + "主能耗": "main_energy_consumption", + "副能耗": "secondary_energy_consumption", + "排放标准": "emission_standard", + "启用日期": "start_date", + "最近一次调动日期": "last_transfer_date", + "车长": "conductor", + "车宽": "vehicle_width", + "车高": "car_height", + "核定载客数": "approved_passenger_capacity", + "车辆识别号": "vehicle_identification_number", + "变速箱品牌": "gearbox_brand", + "人工洗车费": "manual_car_washing_fee", + "劳务费": "labor_cost", + "整备质量": "curb_weight", + "总质量": "total_mass", + "空调温度": "air_conditioning_temperature", + "是否空调车": "air_conditioned_car_or_not", + "开空调温度": "turn_on_the_air_conditioning_temperature", + "功率": "power", + "变速器": "transmission", + "座位数": "seating_capacity", + "空调品牌": "air_conditioning_brand", + "座椅类型": "seat_type", + "轮胎规格": "tire_specifications", + "道路运输证号": "road_Transport_Certificate_No", + "停放点": "parking_point", + "洗车类型": "car_washing_type", + "免维护轮端": "maintenance_free_wheel_end", + "首保日期": "first_guarantee_date", + "整修日期": "date_of_renovation", + "机动车所有人": "motor_vehicle_owner" +} \ No newline at end of file diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据脚本对应.sql b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据脚本对应.sql new file mode 100644 index 00000000..95c0bab0 --- /dev/null +++ b/scripts/0.0.1/data/工具脚本(无需执行)/公交车辆_数据脚本对应.sql @@ -0,0 +1,58 @@ +-- 公交车辆 + +CREATE TABLE if not exists "bus_car" ( id serial not null ); + +CREATE unique index if not exists bus_car_id_uindex +ON bus_car (id); alter TABLE bus_car add constraint bus_car_pk primary key (id); alter TABLE bus_car add Company varchar(1024); comment +ON column bus_car.Company is '所属公司'; alter TABLE bus_car add Fleet varchar(1024); comment +ON column bus_car.Fleet is '所属车队'; alter TABLE bus_car add Line varchar(1024); comment +ON column bus_car.Line is '所属线路'; alter TABLE bus_car add Vehicle_Number varchar(1024); comment +ON column bus_car.Vehicle_Number is '车辆编号'; alter TABLE bus_car add Vehicle_License_Plate_Number varchar(1024); comment +ON column bus_car.Vehicle_License_Plate_Number is '车辆牌照号'; alter TABLE bus_car add Operation_Category varchar(1024); comment +ON column bus_car.Operation_Category is '运营类别'; alter TABLE bus_car add Service_Life varchar(1024); comment +ON column bus_car.Service_Life is '已使用年限'; alter TABLE bus_car add Engine_Model varchar(1024); comment +ON column bus_car.Engine_Model is '发动机型号'; alter TABLE bus_car add Vehicle_Model varchar(1024); comment +ON column bus_car.Vehicle_Model is '车辆型号'; alter TABLE bus_car add Vehicle_Category varchar(1024); comment +ON column bus_car.Vehicle_Category is '车辆类别'; alter TABLE bus_car add Vehicle_Status varchar(1024); comment +ON column bus_car.Vehicle_Status is '车辆状态'; alter TABLE bus_car add Date_Of_Entry varchar(1024); comment +ON column bus_car.Date_Of_Entry is '入户日期'; alter TABLE bus_car add Purchase_Date varchar(1024); comment +ON column bus_car.Purchase_Date is '购进日期'; alter TABLE bus_car add Energy_Consumption_Type varchar(1024); comment +ON column bus_car.Energy_Consumption_Type is '能耗类型'; alter TABLE bus_car add Number_Of_Standard_Units varchar(1024); comment +ON column bus_car.Number_Of_Standard_Units is '标台数'; alter TABLE bus_car add Maintenance_Unit varchar(1024); comment +ON column bus_car.Maintenance_Unit is '维保单位'; alter TABLE bus_car add Vehicle_Type varchar(1024); comment +ON column bus_car.Vehicle_Type is '车辆类型'; alter TABLE bus_car add Brand_And_Model varchar(1024); comment +ON column bus_car.Brand_And_Model is '厂牌型号'; alter TABLE bus_car add Manufacturer varchar(1024); comment +ON column bus_car.Manufacturer is '生产厂家'; alter TABLE bus_car add Driving_License_No varchar(1024); comment +ON column bus_car.Driving_License_No is '行驶证编号'; alter TABLE bus_car add Engine_Number varchar(1024); comment +ON column bus_car.Engine_Number is '发动机编号'; alter TABLE bus_car add Main_Energy_Consumption varchar(1024); comment +ON column bus_car.Main_Energy_Consumption is '主能耗'; alter TABLE bus_car add Secondary_Energy_Consumption varchar(1024); comment +ON column bus_car.Secondary_Energy_Consumption is '副能耗'; alter TABLE bus_car add Emission_Standard varchar(1024); comment +ON column bus_car.Emission_Standard is '排放标准'; alter TABLE bus_car add Start_Date varchar(1024); comment +ON column bus_car.Start_Date is '启用日期'; alter TABLE bus_car add Last_Transfer_Date varchar(1024); comment +ON column bus_car.Last_Transfer_Date is '最近一次调动日期'; alter TABLE bus_car add Conductor varchar(1024); comment +ON column bus_car.Conductor is '车长'; alter TABLE bus_car add Vehicle_Width varchar(1024); comment +ON column bus_car.Vehicle_Width is '车宽'; alter TABLE bus_car add Car_Height varchar(1024); comment +ON column bus_car.Car_Height is '车高'; alter TABLE bus_car add Approved_Passenger_Capacity varchar(1024); comment +ON column bus_car.Approved_Passenger_Capacity is '核定载客数'; alter TABLE bus_car add Vehicle_Identification_Number varchar(1024); comment +ON column bus_car.Vehicle_Identification_Number is '车辆识别号'; alter TABLE bus_car add Gearbox_Brand varchar(1024); comment +ON column bus_car.Gearbox_Brand is '变速箱品牌'; alter TABLE bus_car add Manual_Car_Washing_Fee varchar(1024); comment +ON column bus_car.Manual_Car_Washing_Fee is '人工洗车费'; alter TABLE bus_car add Labor_Cost varchar(1024); comment +ON column bus_car.Labor_Cost is '劳务费'; alter TABLE bus_car add Curb_Weight varchar(1024); comment +ON column bus_car.Curb_Weight is '整备质量'; alter TABLE bus_car add Total_Mass varchar(1024); comment +ON column bus_car.Total_Mass is '总质量'; alter TABLE bus_car add Air_Conditioning_Temperature varchar(1024); comment +ON column bus_car.Air_Conditioning_Temperature is '空调温度'; alter TABLE bus_car add Air_Conditioned_Car_Or_Not varchar(1024); comment +ON column bus_car.Air_Conditioned_Car_Or_Not is '是否空调车'; alter TABLE bus_car add Turn_On_The_Air_Conditioning_Temperature varchar(1024); comment +ON column bus_car.Turn_On_The_Air_Conditioning_Temperature is '开空调温度'; alter TABLE bus_car add Power varchar(1024); comment +ON column bus_car.Power is '功率'; alter TABLE bus_car add Transmission varchar(1024); comment +ON column bus_car.Transmission is '变速器'; alter TABLE bus_car add Seating_Capacity varchar(1024); comment +ON column bus_car.Seating_Capacity is '座位数'; alter TABLE bus_car add Air_Conditioning_Brand varchar(1024); comment +ON column bus_car.Air_Conditioning_Brand is '空调品牌'; alter TABLE bus_car add Seat_Type varchar(1024); comment +ON column bus_car.Seat_Type is '座椅类型'; alter TABLE bus_car add Tire_Specifications varchar(1024); comment +ON column bus_car.Tire_Specifications is '轮胎规格'; alter TABLE bus_car add Road_Transport_Certificate_No varchar(1024); comment +ON column bus_car.Road_Transport_Certificate_No is '道路运输证号'; alter TABLE bus_car add Parking_Point varchar(1024); comment +ON column bus_car.Parking_Point is '停放点'; alter TABLE bus_car add Car_Washing_Type varchar(1024); comment +ON column bus_car.Car_Washing_Type is '洗车类型'; alter TABLE bus_car add Maintenance_Free_Wheel_End varchar(1024); comment +ON column bus_car.Maintenance_Free_Wheel_End is '免维护轮端'; alter TABLE bus_car add First_Guarantee_Date varchar(1024); comment +ON column bus_car.First_Guarantee_Date is '首保日期'; alter TABLE bus_car add Date_Of_Renovation varchar(1024); comment +ON column bus_car.Date_Of_Renovation is '整修日期'; alter TABLE bus_car add Motor_Vehicle_Owner varchar(1024); comment +ON column bus_car.Motor_Vehicle_Owner is '机动车所有人'; \ No newline at end of file From 85b96adc6c464bc9ab039d4679189a855722e8e2 Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Sat, 23 Jul 2022 13:35:42 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=81=93=E8=B7=AF=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/models/road.js | 236 +++++++++++++++++- .../工具脚本(无需执行)/dataIn.js | 42 ++-- .../工具脚本(无需执行)/index.js | 1 + .../道路_字段对应.json | 26 ++ .../道路_数据字段对应.json | 26 ++ .../道路_数据库表对应.json | 26 ++ .../道路_数据脚本对应.sql | 36 ++- 7 files changed, 366 insertions(+), 27 deletions(-) diff --git a/api/app/lib/models/road.js b/api/app/lib/models/road.js index e97addfb..52374d64 100644 --- a/api/app/lib/models/road.js +++ b/api/app/lib/models/road.js @@ -114,6 +114,51 @@ module.exports = dc => { field: "section_type", autoIncrement: false }, + routeCodeBeforeRoadNetworkAdjustment: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路网调整前路线编码", + primaryKey: false, + field: "route_code_before_road_network_adjustment", + autoIncrement: false + }, + serialNumberOfOriginalSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "原路段序号", + primaryKey: false, + field: "serial_number_of_original_section", + autoIncrement: false + }, + startingStakeNumberOfTheOriginalRoadSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "原路段起点桩号", + primaryKey: false, + field: "starting_stake_number_of_the_original_road_section", + autoIncrement: false + }, + endingPointStakeNoOfTheOriginalRoadSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "原路段止点桩号", + primaryKey: false, + field: "ending_point_stake_no_of_the_original_road_section", + autoIncrement: false + }, + routeLevel: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路线等级", + primaryKey: false, + field: "route_level", + autoIncrement: false + }, natureOfRoadSection: { type: DataTypes.STRING, allowNull: true, @@ -132,6 +177,24 @@ module.exports = dc => { field: "completion_time", autoIncrement: false }, + reconstructionTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "改建时间", + primaryKey: false, + field: "reconstruction_time", + autoIncrement: false + }, + natureOfConstruction: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "建设性质", + primaryKey: false, + field: "nature_of_construction", + autoIncrement: false + }, gbmAndCivilizedModelRoad: { type: DataTypes.STRING, allowNull: true, @@ -159,6 +222,15 @@ module.exports = dc => { field: "nature_of_charges", autoIncrement: false }, + tollStation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所属收费站", + primaryKey: false, + field: "toll_station", + autoIncrement: false + }, numberOfCulverts: { type: DataTypes.STRING, allowNull: true, @@ -330,6 +402,159 @@ module.exports = dc => { field: "repeated_section_route_code", autoIncrement: false }, + plannedFundCategory: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划资金类别", + primaryKey: false, + field: "planned_fund_category", + autoIncrement: false + }, + plannedYear: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划年度", + primaryKey: false, + field: "planned_year", + autoIncrement: false + }, + planDocumentNo: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划文号", + primaryKey: false, + field: "plan_document_no", + autoIncrement: false + }, + planItemUniqueCode: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目唯一编码", + primaryKey: false, + field: "plan_item_unique_code", + autoIncrement: false + }, + plannedProjectRouteCode: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目路线编码", + primaryKey: false, + field: "planned_project_route_code", + autoIncrement: false + }, + planProjectName: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目名称", + primaryKey: false, + field: "plan_project_name", + autoIncrement: false + }, + plannedProjectType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目类型", + primaryKey: false, + field: "planned_project_type", + autoIncrement: false + }, + completionStatus: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "完工情况", + primaryKey: false, + field: "completion_status", + autoIncrement: false + }, + yearOfCompletion: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "完工年度", + primaryKey: false, + field: "year_of_completion", + autoIncrement: false + }, + plannedFundCategoryOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划资金类别_1", + primaryKey: false, + field: "planned_fund_category__one", + autoIncrement: false + }, + plannedYearOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划年度_1", + primaryKey: false, + field: "planned_year__one", + autoIncrement: false + }, + planDocumentNoOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划文号_1", + primaryKey: false, + field: "plan_document_no__one", + autoIncrement: false + }, + planItemUniqueCodeOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目唯一编码_1", + primaryKey: false, + field: "plan_item_unique_code__one", + autoIncrement: false + }, + planProjectNameOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "计划项目名称_1", + primaryKey: false, + field: "plan_project_name__one", + autoIncrement: false + }, + completionStatusOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "完工情况_1", + primaryKey: false, + field: "completion_status__one", + autoIncrement: false + }, + yearOfCompletionOne: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "完工年度_1", + primaryKey: false, + field: "year_of_completion__one", + autoIncrement: false + }, + stationRange: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "桩号范围", + primaryKey: false, + field: "station_range", + autoIncrement: false + }, reportingUnit: { type: DataTypes.STRING, allowNull: true, @@ -357,6 +582,15 @@ module.exports = dc => { field: "change_time", autoIncrement: false }, + lastRepairAndMaintenanceYear: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "最近一次修复养护年度", + primaryKey: false, + field: "last_repair_and_maintenance_year", + autoIncrement: false + }, whetherMaintenanceManagedHighway: { type: DataTypes.STRING, allowNull: true, @@ -451,7 +685,7 @@ module.exports = dc => { type: DataTypes.STRING, allowNull: true, defaultValue: null, - comment: "县 / 乡 / 村", + comment: null, primaryKey: false, field: "level", autoIncrement: false diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js index 076bd877..0caf44a5 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js +++ b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js @@ -24,27 +24,27 @@ try { await client.query('BEGIN') const fileList = [ - // { - // path: ['./data/道路/村道第三方.xls'], - // n: '道路', - // tableName: 'road', - // defaultKey: ['level'], - // defaultValue: ['村'], - // }, - // { - // path: ['./data/道路/县道第三方.xls'], - // n: '道路', - // tableName: 'road', - // defaultKey: ['level'], - // defaultValue: ['县'], - // }, - // { - // path:[ './data/道路/乡道第三方.xls'], - // n: '道路', - // tableName: 'road', - // defaultKey: ['level'], - // defaultValue: ['乡'], - // }, + { + path: ['./data/道路/村道第三方.xls'], + n: '道路', + tableName: 'road', + defaultKey: ['level'], + defaultValue: ['村'], + }, + { + path: ['./data/道路/县道第三方.xls'], + n: '道路', + tableName: 'road', + defaultKey: ['level'], + defaultValue: ['县'], + }, + { + path: ['./data/道路/乡道第三方.xls'], + n: '道路', + tableName: 'road', + defaultKey: ['level'], + defaultValue: ['乡'], + }, // { // path: (() => { // let p = []; diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/index.js b/scripts/0.0.1/data/工具脚本(无需执行)/index.js index 609cf1fe..34c9696b 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/index.js +++ b/scripts/0.0.1/data/工具脚本(无需执行)/index.js @@ -61,6 +61,7 @@ try { try { await client.query('BEGIN') + // 有手动更改 不要轻易再次执行脚本 const fileList = [ // { // path: './data/道路/乡道第三方.xls', diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/道路_字段对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/道路_字段对应.json index 0fb97a7f..d942927b 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/道路_字段对应.json +++ b/scripts/0.0.1/data/工具脚本(无需执行)/道路_字段对应.json @@ -10,11 +10,19 @@ "止点分界点类别": "categoryOfDeadCenterAndDividingPoint", "止点桩号": "stopStation", "路段类型": "sectionType", + "路网调整前路线编码": "routeCodeBeforeRoadNetworkAdjustment", + "原路段序号": "serialNumberOfOriginalSection", + "原路段起点桩号": "startingStakeNumberOfTheOriginalRoadSection", + "原路段止点桩号": "endingPointStakeNoOfTheOriginalRoadSection", + "路线等级": "routeLevel", "路段性质": "natureOfRoadSection", "建成时间": "completionTime", + "改建时间": "reconstructionTime", + "建设性质": "natureOfConstruction", "GBM及文明样板路": "gBMAndCivilizedModelRoad", "地貌": "landforms", "收费性质": "natureOfCharges", + "所属收费站": "tollStation", "涵洞数量": "numberOfCulverts", "技术等级": "technicalLevel", "路面类型": "pavementType", @@ -34,9 +42,27 @@ "重复道路路段类型": "typeOfRepeatedRoadSection", "重复路段序号": "serialNumberOfRepeatedSection", "重复路段路线编码": "repeatedSectionRouteCode", + "计划资金类别": "plannedFundCategory", + "计划年度": "plannedYear", + "计划文号": "planDocumentNo", + "计划项目唯一编码": "planItemUniqueCode", + "计划项目路线编码": "plannedProjectRouteCode", + "计划项目名称": "planProjectName", + "计划项目类型": "plannedProjectType", + "完工情况": "completionStatus", + "完工年度": "yearOfCompletion", + "计划资金类别_1": "plannedFundCategoryOne", + "计划年度_1": "plannedYearOne", + "计划文号_1": "planDocumentNoOne", + "计划项目唯一编码_1": "planItemUniqueCodeOne", + "计划项目名称_1": "planProjectNameOne", + "完工情况_1": "completionStatusOne", + "完工年度_1": "yearOfCompletionOne", + "桩号范围": "stationRange", "填报单位": "reportingUnit", "变更原因": "reasonForChange", "变更时间": "changeTime", + "最近一次修复养护年度": "lastRepairAndMaintenanceYear", "是否按干线公路管理接养": "whetherMaintenanceManagedHighway", "备注": "remarks", "上年路线编码": "routeCodeOfLastYear", diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据字段对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据字段对应.json index 3ba86fec..dc3b8659 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据字段对应.json +++ b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据字段对应.json @@ -10,11 +10,19 @@ "categoryOfDeadCenterAndDividingPoint": "止点分界点类别", "stopStation": "止点桩号", "sectionType": "路段类型", + "routeCodeBeforeRoadNetworkAdjustment": "路网调整前路线编码", + "serialNumberOfOriginalSection": "原路段序号", + "startingStakeNumberOfTheOriginalRoadSection": "原路段起点桩号", + "endingPointStakeNoOfTheOriginalRoadSection": "原路段止点桩号", + "routeLevel": "路线等级", "natureOfRoadSection": "路段性质", "completionTime": "建成时间", + "reconstructionTime": "改建时间", + "natureOfConstruction": "建设性质", "gBMAndCivilizedModelRoad": "GBM及文明样板路", "landforms": "地貌", "natureOfCharges": "收费性质", + "tollStation": "所属收费站", "numberOfCulverts": "涵洞数量", "technicalLevel": "技术等级", "pavementType": "路面类型", @@ -34,9 +42,27 @@ "typeOfRepeatedRoadSection": "重复道路路段类型", "serialNumberOfRepeatedSection": "重复路段序号", "repeatedSectionRouteCode": "重复路段路线编码", + "plannedFundCategory": "计划资金类别", + "plannedYear": "计划年度", + "planDocumentNo": "计划文号", + "planItemUniqueCode": "计划项目唯一编码", + "plannedProjectRouteCode": "计划项目路线编码", + "planProjectName": "计划项目名称", + "plannedProjectType": "计划项目类型", + "completionStatus": "完工情况", + "yearOfCompletion": "完工年度", + "plannedFundCategoryOne": "计划资金类别_1", + "plannedYearOne": "计划年度_1", + "planDocumentNoOne": "计划文号_1", + "planItemUniqueCodeOne": "计划项目唯一编码_1", + "planProjectNameOne": "计划项目名称_1", + "completionStatusOne": "完工情况_1", + "yearOfCompletionOne": "完工年度_1", + "stationRange": "桩号范围", "reportingUnit": "填报单位", "reasonForChange": "变更原因", "changeTime": "变更时间", + "lastRepairAndMaintenanceYear": "最近一次修复养护年度", "whetherMaintenanceManagedHighway": "是否按干线公路管理接养", "remarks": "备注", "routeCodeOfLastYear": "上年路线编码", diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据库表对应.json b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据库表对应.json index 8ee22df0..f30e22a9 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据库表对应.json +++ b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据库表对应.json @@ -10,11 +10,19 @@ "止点分界点类别": "category_of_dead_center_and_dividing_point", "止点桩号": "stop_station", "路段类型": "section_type", + "路网调整前路线编码": "route_code_before_road_network_adjustment", + "原路段序号": "serial_number_of_original_section", + "原路段起点桩号": "starting_stake_number_of_the_original_road_section", + "原路段止点桩号": "ending_point_stake_no_of_the_original_road_section", + "路线等级": "route_level", "路段性质": "nature_of_road_section", "建成时间": "completion_time", + "改建时间": "reconstruction_time", + "建设性质": "nature_of_construction", "GBM及文明样板路": "gBM_and_civilized_model_road", "地貌": "landforms", "收费性质": "nature_of_charges", + "所属收费站": "toll_station", "涵洞数量": "number_of_culverts", "技术等级": "technical_level", "路面类型": "pavement_type", @@ -34,9 +42,27 @@ "重复道路路段类型": "type_of_repeated_road_section", "重复路段序号": "serial_number_of_repeated_section", "重复路段路线编码": "repeated_section_route_code", + "计划资金类别": "planned_fund_category", + "计划年度": "planned_year", + "计划文号": "plan_document_No", + "计划项目唯一编码": "plan_item_unique_code", + "计划项目路线编码": "planned_project_route_code", + "计划项目名称": "plan_project_name", + "计划项目类型": "planned_project_type", + "完工情况": "completion_status", + "完工年度": "year_of_completion", + "计划资金类别_1": "planned_fund_category__one", + "计划年度_1": "planned_year__one", + "计划文号_1": "plan_document_No__one", + "计划项目唯一编码_1": "plan_item_unique_code__one", + "计划项目名称_1": "plan_project_name__one", + "完工情况_1": "completion_status__one", + "完工年度_1": "year_of_completion__one", + "桩号范围": "station_range", "填报单位": "reporting_unit", "变更原因": "reason_for_change", "变更时间": "change_time", + "最近一次修复养护年度": "last_repair_and_maintenance_year", "是否按干线公路管理接养": "whether_maintenance_managed_highway", "备注": "remarks", "上年路线编码": "route_code_of_last_year", diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据脚本对应.sql b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据脚本对应.sql index c903d9f1..e9418153 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据脚本对应.sql +++ b/scripts/0.0.1/data/工具脚本(无需执行)/道路_数据脚本对应.sql @@ -14,12 +14,20 @@ ON column road.Category_Of_Starting_Point_And_Dividing_Point is '起点分界点 ON column road.Stop_Place_Name is '止点地名'; alter TABLE road add Category_Of_Dead_Center_And_Dividing_Point varchar(1024); comment ON column road.Category_Of_Dead_Center_And_Dividing_Point is '止点分界点类别'; alter TABLE road add Stop_Station varchar(1024); comment ON column road.Stop_Station is '止点桩号'; alter TABLE road add Section_Type varchar(1024); comment -ON column road.Section_Type is '路段类型'; alter TABLE road add Nature_Of_Road_Section varchar(1024); comment +ON column road.Section_Type is '路段类型'; alter TABLE road add Route_Code_Before_Road_Network_Adjustment varchar(1024); comment +ON column road.Route_Code_Before_Road_Network_Adjustment is '路网调整前路线编码'; alter TABLE road add Serial_Number_Of_Original_Section varchar(1024); comment +ON column road.Serial_Number_Of_Original_Section is '原路段序号'; alter TABLE road add Starting_Stake_Number_Of_The_Original_Road_Section varchar(1024); comment +ON column road.Starting_Stake_Number_Of_The_Original_Road_Section is '原路段起点桩号'; alter TABLE road add Ending_Point_Stake_No_Of_The_Original_Road_Section varchar(1024); comment +ON column road.Ending_Point_Stake_No_Of_The_Original_Road_Section is '原路段止点桩号'; alter TABLE road add Route_Level varchar(1024); comment +ON column road.Route_Level is '路线等级'; alter TABLE road add Nature_Of_Road_Section varchar(1024); comment ON column road.Nature_Of_Road_Section is '路段性质'; alter TABLE road add Completion_Time varchar(1024); comment -ON column road.Completion_Time is '建成时间'; alter TABLE road add GBM_And_Civilized_Model_Road varchar(1024); comment +ON column road.Completion_Time is '建成时间'; alter TABLE road add Reconstruction_Time varchar(1024); comment +ON column road.Reconstruction_Time is '改建时间'; alter TABLE road add Nature_Of_Construction varchar(1024); comment +ON column road.Nature_Of_Construction is '建设性质'; alter TABLE road add GBM_And_Civilized_Model_Road varchar(1024); comment ON column road.GBM_And_Civilized_Model_Road is 'GBM及文明样板路'; alter TABLE road add Landforms varchar(1024); comment ON column road.Landforms is '地貌'; alter TABLE road add Nature_Of_Charges varchar(1024); comment -ON column road.Nature_Of_Charges is '收费性质'; alter TABLE road add Number_Of_Culverts varchar(1024); comment +ON column road.Nature_Of_Charges is '收费性质'; alter TABLE road add Toll_Station varchar(1024); comment +ON column road.Toll_Station is '所属收费站'; alter TABLE road add Number_Of_Culverts varchar(1024); comment ON column road.Number_Of_Culverts is '涵洞数量'; alter TABLE road add Technical_Level varchar(1024); comment ON column road.Technical_Level is '技术等级'; alter TABLE road add Pavement_Type varchar(1024); comment ON column road.Pavement_Type is '路面类型'; alter TABLE road add Pavement_Width varchar(1024); comment @@ -38,10 +46,28 @@ ON column road.Greening_Mileage is '可绿化里程'; alter TABLE road add Green ON column road.Greening_Mileaged is '已绿化里程'; alter TABLE road add Type_Of_Repeated_Road_Section varchar(1024); comment ON column road.Type_Of_Repeated_Road_Section is '重复道路路段类型'; alter TABLE road add Serial_Number_Of_Repeated_Section varchar(1024); comment ON column road.Serial_Number_Of_Repeated_Section is '重复路段序号'; alter TABLE road add Repeated_Section_Route_Code varchar(1024); comment -ON column road.Repeated_Section_Route_Code is '重复路段路线编码'; alter TABLE road add Reporting_Unit varchar(1024); comment +ON column road.Repeated_Section_Route_Code is '重复路段路线编码'; alter TABLE road add Planned_Fund_Category varchar(1024); comment +ON column road.Planned_Fund_Category is '计划资金类别'; alter TABLE road add Planned_Year varchar(1024); comment +ON column road.Planned_Year is '计划年度'; alter TABLE road add Plan_Document_No varchar(1024); comment +ON column road.Plan_Document_No is '计划文号'; alter TABLE road add Plan_Item_Unique_Code varchar(1024); comment +ON column road.Plan_Item_Unique_Code is '计划项目唯一编码'; alter TABLE road add Planned_Project_Route_Code varchar(1024); comment +ON column road.Planned_Project_Route_Code is '计划项目路线编码'; alter TABLE road add Plan_Project_Name varchar(1024); comment +ON column road.Plan_Project_Name is '计划项目名称'; alter TABLE road add Planned_Project_Type varchar(1024); comment +ON column road.Planned_Project_Type is '计划项目类型'; alter TABLE road add Completion_Status varchar(1024); comment +ON column road.Completion_Status is '完工情况'; alter TABLE road add Year_Of_Completion varchar(1024); comment +ON column road.Year_Of_Completion is '完工年度'; alter TABLE road add Planned_Fund_Category__One varchar(1024); comment +ON column road.Planned_Fund_Category__One is '计划资金类别_1'; alter TABLE road add Planned_Year__One varchar(1024); comment +ON column road.Planned_Year__One is '计划年度_1'; alter TABLE road add Plan_Document_No__One varchar(1024); comment +ON column road.Plan_Document_No__One is '计划文号_1'; alter TABLE road add Plan_Item_Unique_Code__One varchar(1024); comment +ON column road.Plan_Item_Unique_Code__One is '计划项目唯一编码_1'; alter TABLE road add Plan_Project_Name__One varchar(1024); comment +ON column road.Plan_Project_Name__One is '计划项目名称_1'; alter TABLE road add Completion_Status__One varchar(1024); comment +ON column road.Completion_Status__One is '完工情况_1'; alter TABLE road add Year_Of_Completion__One varchar(1024); comment +ON column road.Year_Of_Completion__One is '完工年度_1'; alter TABLE road add Station_Range varchar(1024); comment +ON column road.Station_Range is '桩号范围'; alter TABLE road add Reporting_Unit varchar(1024); comment ON column road.Reporting_Unit is '填报单位'; alter TABLE road add Reason_For_Change varchar(1024); comment ON column road.Reason_For_Change is '变更原因'; alter TABLE road add Change_Time varchar(1024); comment -ON column road.Change_Time is '变更时间'; alter TABLE road add Whether_Maintenance_Managed_Highway varchar(1024); comment +ON column road.Change_Time is '变更时间'; alter TABLE road add Last_Repair_And_Maintenance_Year varchar(1024); comment +ON column road.Last_Repair_And_Maintenance_Year is '最近一次修复养护年度'; alter TABLE road add Whether_Maintenance_Managed_Highway varchar(1024); comment ON column road.Whether_Maintenance_Managed_Highway is '是否按干线公路管理接养'; alter TABLE road add Remarks varchar(1024); comment ON column road.Remarks is '备注'; alter TABLE road add Route_Code_Of_Last_Year varchar(1024); comment ON column road.Route_Code_Of_Last_Year is '上年路线编码'; alter TABLE road add Route_Name_Of_Last_Year varchar(1024); comment From 8633d60810b0afbde9a3c1d1a39663db65f7eeb5 Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Sat, 23 Jul 2022 13:43:15 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E9=83=A8=E9=97=A8=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/0.0.1/data/1_update_user_data.sql | 4 -- scripts/0.0.1/data/1_update_user_dep_data.sql | 8 ++++ .../工具脚本(无需执行)/dataIn.js | 42 +++++++++---------- 3 files changed, 29 insertions(+), 25 deletions(-) delete mode 100644 scripts/0.0.1/data/1_update_user_data.sql create mode 100644 scripts/0.0.1/data/1_update_user_dep_data.sql diff --git a/scripts/0.0.1/data/1_update_user_data.sql b/scripts/0.0.1/data/1_update_user_data.sql deleted file mode 100644 index 13b0af55..00000000 --- a/scripts/0.0.1/data/1_update_user_data.sql +++ /dev/null @@ -1,4 +0,0 @@ --- ---------------------------- --- Records of user --- ---------------------------- -INSERT INTO "public"."user" VALUES (1, '管理员', 'SuperAdmin', 'e10adc3949ba59abbe56e057f20f883e', 1, 'f', NULL, NULL, NULL, TRUE); \ No newline at end of file diff --git a/scripts/0.0.1/data/1_update_user_dep_data.sql b/scripts/0.0.1/data/1_update_user_dep_data.sql new file mode 100644 index 00000000..c7f99bc1 --- /dev/null +++ b/scripts/0.0.1/data/1_update_user_dep_data.sql @@ -0,0 +1,8 @@ +-- ---------------------------- +-- Records of DEP +-- ---------------------------- +INSERT INTO "department" VALUES (1, '默认部门', NULL, false); +-- ---------------------------- +-- Records of user +-- ---------------------------- +INSERT INTO "user" VALUES (1, '管理员', 'SuperAdmin', 'e10adc3949ba59abbe56e057f20f883e', 1, 'f', NULL, NULL, NULL, TRUE); \ No newline at end of file diff --git a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js index 0caf44a5..a8dc2654 100644 --- a/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js +++ b/scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js @@ -24,27 +24,27 @@ try { await client.query('BEGIN') const fileList = [ - { - path: ['./data/道路/村道第三方.xls'], - n: '道路', - tableName: 'road', - defaultKey: ['level'], - defaultValue: ['村'], - }, - { - path: ['./data/道路/县道第三方.xls'], - n: '道路', - tableName: 'road', - defaultKey: ['level'], - defaultValue: ['县'], - }, - { - path: ['./data/道路/乡道第三方.xls'], - n: '道路', - tableName: 'road', - defaultKey: ['level'], - defaultValue: ['乡'], - }, + // { + // path: ['./data/道路/村道第三方.xls'], + // n: '道路', + // tableName: 'road', + // defaultKey: ['level'], + // defaultValue: ['村'], + // }, + // { + // path: ['./data/道路/县道第三方.xls'], + // n: '道路', + // tableName: 'road', + // defaultKey: ['level'], + // defaultValue: ['县'], + // }, + // { + // path: ['./data/道路/乡道第三方.xls'], + // n: '道路', + // tableName: 'road', + // defaultKey: ['level'], + // defaultValue: ['乡'], + // }, // { // path: (() => { // let p = [];