5 changed files with 169 additions and 0 deletions
			
			
		@ -0,0 +1,17 @@ | 
				
			|||||
 | 
					{ | 
				
			||||
 | 
					    // 使用 IntelliSense 了解相关属性。  | 
				
			||||
 | 
					    // 悬停以查看现有属性的描述。 | 
				
			||||
 | 
					    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 | 
				
			||||
 | 
					    "version": "0.2.0", | 
				
			||||
 | 
					    "configurations": [ | 
				
			||||
 | 
					        { | 
				
			||||
 | 
					            "type": "node", | 
				
			||||
 | 
					            "request": "launch", | 
				
			||||
 | 
					            "name": "启动程序", | 
				
			||||
 | 
					            "skipFiles": [ | 
				
			||||
 | 
					                "<node_internals>/**" | 
				
			||||
 | 
					            ], | 
				
			||||
 | 
					            "program": "${workspaceFolder}\\index.js" | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    ] | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,11 @@ | 
				
			|||||
 | 
					FROM repository.anxinyun.cn/base-images/nodejs12:20.10.12.2 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					COPY . /var/app | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					WORKDIR /var/app | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					RUN npm cache clean -f | 
				
			||||
 | 
					RUN rm -rf package-lock.json | 
				
			||||
 | 
					RUN npm install --registry http://10.8.30.22:7000 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					CMD ["node", "index.js"] | 
				
			||||
								
									Binary file not shown.
								
							
						
					@ -0,0 +1,124 @@ | 
				
			|||||
 | 
					try { | 
				
			||||
 | 
					    const { Pool, Client } = require('pg') | 
				
			||||
 | 
					    const XLSX = require('xlsx') | 
				
			||||
 | 
					    const path = require('path') | 
				
			||||
 | 
					    const fs = require("fs"); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // 测试环境
 | 
				
			||||
 | 
					    const pool = new Pool({ | 
				
			||||
 | 
					        user: 'postgres', | 
				
			||||
 | 
					        host: '10.8.30.32', | 
				
			||||
 | 
					        database: 'highways4good', | 
				
			||||
 | 
					        password: '123', | 
				
			||||
 | 
					        port: 5432, | 
				
			||||
 | 
					    }) | 
				
			||||
 | 
					    const userId = 5 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // 商用环境
 | 
				
			||||
 | 
					    // const pool = new Pool({
 | 
				
			||||
 | 
					    //     user: 'highwayadmin',
 | 
				
			||||
 | 
					    //     host: '10.8.40.223',
 | 
				
			||||
 | 
					    //     database: 'highway4good',
 | 
				
			||||
 | 
					    //     password: 'highway123',
 | 
				
			||||
 | 
					    //     port: 5432,
 | 
				
			||||
 | 
					    // }) 
 | 
				
			||||
 | 
					    // const userId = ''
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    // 生成随机的时间字符串
 | 
				
			||||
 | 
					    function generateRandomTimeString () { | 
				
			||||
 | 
					        // 生成一个在指定时间范围内的随机日期对象
 | 
				
			||||
 | 
					        var startDate = new Date('2023-01-01'); | 
				
			||||
 | 
					        var endDate = new Date('2023-07-31'); | 
				
			||||
 | 
					        var randomDate = new Date(startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime())); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // 从日期对象中提取年、月和日
 | 
				
			||||
 | 
					        var year = randomDate.getFullYear(); | 
				
			||||
 | 
					        var month = String(randomDate.getMonth() + 1).padStart(2, '0'); | 
				
			||||
 | 
					        var day = String(randomDate.getDate()).padStart(2, '0'); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // 生成一个在指定时间范围内的随机小时数和分钟数
 | 
				
			||||
 | 
					        var hours = String(Math.floor(Math.random() * 10) + 8).padStart(2, '0'); | 
				
			||||
 | 
					        var minutes = String(Math.floor(Math.random() * 60)).padStart(2, '0'); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        // 组合成时间字符串
 | 
				
			||||
 | 
					        var timeString = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':00'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					        return timeString; | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    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)
 | 
				
			||||
 | 
					        const client = await pool.connect() | 
				
			||||
 | 
					        try { | 
				
			||||
 | 
					            await client.query('BEGIN') | 
				
			||||
 | 
					            console.log(`开始`); | 
				
			||||
 | 
					            console.warn('user_id 配置了吗?'); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('user_id 配置的对吗?'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 3000)); | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('user_id 配置的真的对吗?'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 3000)); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('开始喽'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 1000)); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('3'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 1000)); | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('2'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 1000)); | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('1'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 1000)); | 
				
			||||
 | 
					            await new Promise(resolve => setTimeout(() => { | 
				
			||||
 | 
					                console.warn('开始!'); | 
				
			||||
 | 
					                resolve() | 
				
			||||
 | 
					            }, 1000)); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            // 读取数据文件
 | 
				
			||||
 | 
					            let workbook = XLSX.readFile(path.join(__dirname, './data/work.xlsx')); | 
				
			||||
 | 
					            let firstSheetName = workbook.SheetNames[0]; | 
				
			||||
 | 
					            let worksheet = workbook.Sheets[firstSheetName]; | 
				
			||||
 | 
					            let res = XLSX.utils.sheet_to_json(worksheet, { | 
				
			||||
 | 
					                defval: '' | 
				
			||||
 | 
					            }); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            for (let r of res) { | 
				
			||||
 | 
					                console.log(r); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					                let time = generateRandomTimeString() | 
				
			||||
 | 
					                console.log(time); | 
				
			||||
 | 
					                await client.query( | 
				
			||||
 | 
					                    `INSERT INTO report (report_type, project_type, road, time,content,user_id) VALUES($1, $2, $3, $4, $5, $6) `, | 
				
			||||
 | 
					                    ['conserve', 'road', r['养护道路'], time, r['养护内容'], userId]) | 
				
			||||
 | 
					                // break
 | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					            // await client.query('ROLLBACK')
 | 
				
			||||
 | 
					            await client.query('COMMIT') | 
				
			||||
 | 
					            console.log('执行完毕~') | 
				
			||||
 | 
					        } catch (e) { | 
				
			||||
 | 
					            await client.query('ROLLBACK') | 
				
			||||
 | 
					            console.log('执行错误~') | 
				
			||||
 | 
					            throw e | 
				
			||||
 | 
					        } finally { | 
				
			||||
 | 
					            client.release(); | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    fun() | 
				
			||||
 | 
					} catch (error) { | 
				
			||||
 | 
					    console.error(error) | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,17 @@ | 
				
			|||||
 | 
					{ | 
				
			||||
 | 
					  "name": "appkey-generator", | 
				
			||||
 | 
					  "version": "1.0.0", | 
				
			||||
 | 
					  "description": "tool", | 
				
			||||
 | 
					  "main": "index.js", | 
				
			||||
 | 
					  "scripts": { | 
				
			||||
 | 
					    "test": "mocha", | 
				
			||||
 | 
					    "start": "set NODE_ENV=development&&node index" | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  "author": "liu", | 
				
			||||
 | 
					  "license": "ISC", | 
				
			||||
 | 
					  "dependencies": { | 
				
			||||
 | 
					    "crypto-js": "^4.1.1", | 
				
			||||
 | 
					    "pg": "^7.18.2", | 
				
			||||
 | 
					    "xlsx": "^0.17.1" | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue