123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- const express = require('express')
- const router = express.Router()
- const utils = require('../../utils/index.js')
- const pools = require('../../utils/pools.js')
- const xlsx = require('node-xlsx')
- const path = require('path')
- const fileEvent = require('../../utils/file')
- const execTrans = require('../../utils/dbHelper.js')
- const getNewSqlParamEntity = require('../../utils/tool.js')
- const uuid = require('uuid')
- // 增加数据集
- router.post('/addDataset', async (req, res) => {
- let sql = 'INSERT INTO dataset_t(`name`,creator_id) VALUES (?,?)',
- obj = req.body
- await utils.existName({
- sql: 'SELECT name FROM dataset_t WHERE name=?',
- name: obj.name,
- res,
- msg: '该数据集名称已存在!',
- req
- })
- await pools({
- sql,
- val: [obj.name, obj.creatorId],
- run: false,
- res,
- req
- })
- })
- //查询
- router.post('/getDatasetList', async (req, res) => {
- let user = await utils.getUserInfo({ req, res }),
- obj = req.body
- let sql = `SELECT
- d.id,
- d.name,
- d.creator_id AS creatorId,
- u.name as creatorName,
- (SELECT count(*) from mark_data_t m where m.dataset_id = d.id AND m.state=1) as marked,
- (SELECT count(*) from mark_data_t m where m.dataset_id = d.id) as totalNumber
- FROM
- dataset_t d JOIN user u ON d.creator_id = u.id WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点 JOIN mark_data_t m ON d.id = m.dataset_id
- sql = utils.setLike(sql, 'd.name', obj.name) // 添加一个基于name字段的模糊匹配条件,匹配的值来自obj.name
- sql = utils.setMoreId(sql, user)
- let { total } = await utils.getSum({ sql, name: 'dataset_t d', res, req }) // 执行SQL查询并获取结果中的总数
- sql = utils.pageSize(sql, obj.page, obj.size) // 函数来修改SQL语句,添加分页功能。它使用obj.page和obj.size来确定返回结果的范围。
- let { result } = await pools({ sql, res, req })
- res.send(utils.returnData({ data: result, total }))
- })
- // 编辑
- router.post('/updataDataset', async (req, res) => {
- let sql = 'UPDATE dataset_t SET name=? WHERE id=?',
- obj = req.body
- await pools({ sql, val: [obj.name, obj.id], run: false, res, req })
- })
- //删除
- router.post('/delDataset', async (req, res) => {
- obj = req.body
- let placeholders = obj.map(() => '?').join(',')
- let sql = `DELETE FROM dataset_t WHERE id in (${placeholders})`
- await pools({ sql, val: obj, run: false, res, req }) // 注意这里直接传递obj数组作为参数
- })
- // 查询导入记录
- router.post('/getImportRecord', async (req, res) => {
- let user = await utils.getUserInfo({ req, res }),
- obj = req.body
- let sql = `SELECT id,name,importer_id,time,data_volume FROM file_import_t WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点
- sql = utils.setLike(sql, 'name', obj.name) // 添加一个基于name字段的模糊匹配条件,匹配的值来自obj.name
- sql = utils.setMoreId(sql, user)
- let { total } = await utils.getSum({ sql, name: 'file_import_t', res, req }) // 执行SQL查询并获取结果中的总数
- sql = utils.pageSize(sql, obj.page, obj.size) // 函数来修改SQL语句,添加分页功能。它使用obj.page和obj.size来确定返回结果的范围。
- let { result } = await pools({ sql, res, req })
- res.send(utils.returnData({ data: result, total }))
- })
- // 查询数据集数据
- router.post('/getDataList', async (req, res) => {
- let user = await utils.getUserInfo({ req, res }),
- obj = req.body
- let sql = `SELECT id,text,is_mark,state FROM mark_data_t WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点
- sql = utils.setLike(sql, 'text', obj.text) // 添加一个基于name字段的模糊匹配条件,匹配的值来自obj.name
- sql = utils.setMoreId(sql, user)
- let { total } = await utils.getSum({ sql, name: 'mark_data_t', res, req }) // 执行SQL查询并获取结果中的总数
- sql = utils.pageSize(sql, obj.page, obj.size) // 函数来修改SQL语句,添加分页功能。它使用obj.page和obj.size来确定返回结果的范围。
- let { result } = await pools({ sql, res, req })
- res.send(utils.returnData({ data: result, total }))
- })
- // 导入数据
- router.post('/importData', async (req, res) => {
- var sqlParamsEntity = []
- let fileImportSql = 'INSERT INTO file_import_t(`id`,`name`,`importer_id`,`data_volume`,`dataset_id`) VALUES ?'
- // let sql1 = 'INSERT INTO mark_data_t(`text`,`file_id`,`time`,`data_volume`,`dataset_id`) VALUES ?'
- let fileArr = await fileEvent(req, res)
- let params = JSON.parse(fileArr[0].params.listType)
- const uniqueId = uuid.v4()
- console.log('fileArr', fileArr)
- let filename = fileArr[0].filename
- let name = fileArr[0].originalname
- //配置获取文件路径
- let xlsxRes = xlsx.parse(`${path.join(__dirname, '../../', 'public/uploadFile/')}${filename}`, { cellDates: true })
- let list = xlsxRes[0].data
- list.splice(0, 1)
- var fileImportParam = { id: uniqueId, name, importer_id: params.importer_id, data_volume: list.length, dataset_id: params.dataset_id }
- sqlParamsEntity.push(getNewSqlParamEntity({ sql: fileImportSql, fileImportParam }))
- let markDataSql = 'INSERT INTO file_import_t(text,`file_id`,`dataset_id`,is_mark,state) VALUES ?'
- for (let i = 0; i < list.length; i++) {
- let item = list[i]
- console.log('item', item)
- // var markDataParams = { id: uniqueId, name, importer_id: params.importer_id, data_volume: list.length, dataset_id: params.dataset_id }
- // sqlParamsEntity.push(getNewSqlParamEntity({ sql: fileImportSql, fileImportParam }))
- }
- // await pools({sql,val:[list],run:false,res,req,msg:"请确认文档导入值没有问题!!!"});
- execTrans(sqlParamsEntity, function (err, info) {
- if (err) {
- console.error('事务执行失败', err)
- } else {
- console.log('done.')
- }
- })
- })
- module.exports = router
|