Parcourir la source

数据集查看详情、数据导入(未完成版)

R il y a 1 an
Parent
commit
5e9b0e9051
5 fichiers modifiés avec 111 ajouts et 49 suppressions
  1. 57 4
      router/dataMark/dataset.js
  2. 0 1
      router/dataMark/entity.js
  3. 4 4
      utils/dbHelper.js
  4. 40 40
      utils/file.js
  5. 10 0
      utils/tool.js

+ 57 - 4
router/dataMark/dataset.js

@@ -2,7 +2,13 @@ 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
@@ -58,16 +64,63 @@ router.post('/delDataset', async (req, res) => {
   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,address,importor_id,time,data_volume FROM file_import_t WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点
+  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来确定返回结果的范围。
+  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

+ 0 - 1
router/dataMark/entity.js

@@ -3,7 +3,6 @@ const router = express.Router()
 const utils = require('../../utils/index.js')
 const pool = require('../../pool.js')
 const pools = require('../../utils/pools.js')
-const execTransection = require('../../utils/pools.js')
 const xlsx = require('node-xlsx')
 const path = require('path')
 const fileEvent = require('../../utils/file')

+ 4 - 4
utils/dbHelper.js

@@ -1,11 +1,11 @@
 const pool = require('../pool.js')
 // var async = require('async')
 
-module.exports = {
-  execTrans: execTrans
-}
+// module.exports = {
+//   execTrans: execTrans
+// }
 
-function execTrans(sqlparamsEntities, callback) {
+module.exports = function execTrans(sqlparamsEntities, callback) {
   pool.getConnection(function (err, connection) {
     if (err) {
       return callback(err, null)

+ 40 - 40
utils/file.js

@@ -1,45 +1,45 @@
-const multer = require('multer');
-const config = require("./config.js");
-const utils = require("./index");
+const multer = require('multer')
+const config = require('./config.js')
+const utils = require('./index')
 //上传的文件保存在 upload
 const storage = multer.diskStorage({
-    //存储的位置
-    destination(req, file, cb){
-        cb(null, config.fileSite);
-    },
-    //文件名字的确定 multer默认帮我们取一个没有扩展名的文件名,因此需要我们自己定义
-    filename(req, file, cb){
-        let math=Math.random();
-        math=math.toString().replace(".","");//随机字符串
-        cb(null, `${Date.now()}${math}-${file.originalname}`)
-    }
-});
+  //存储的位置
+  destination(req, file, cb) {
+    cb(null, config.fileSite)
+  },
+  //文件名字的确定 multer默认帮我们取一个没有扩展名的文件名,因此需要我们自己定义
+  filename(req, file, cb) {
+    let math = Math.random()
+    math = math.toString().replace('.', '') //随机字符串
+    cb(null, `${Date.now()}${math}-${file.originalname}`)
+  }
+})
 //传入storage 除了这个参数我们还可以传入dest等参数
 let upload = multer({
-    storage
-}).array(config.fileName);
+  storage
+}).array(config.fileName)
 //上传总函数
-let fileEvent=(req,res)=>{
-    return new Promise((resolve,reject)=>{
-        upload(req, res, function (err) {
-            if (err) return res.send(utils.returnData({code:-1,msg:"上传文件错误~",req,err}));
-            try{
-                //循环处理
-                let imgPath=[];
-                req.files.forEach(function (i) {
-                    const regex = /^(.+)\.[^.]+$/;
-                    const regexRes = i.originalname.match(regex);
-                    let name="";
-                    if (regexRes) name=regexRes[1];
-                    //获取临时文件的存储路径
-                    imgPath.push({url:`${config.fileHost}/${i.filename}`,name,originalname:i.originalname,filename:i.filename});
-                    // console.log("i.path:",i.path)
-                });
-                resolve(imgPath)
-            }catch(err){
-                res.send(utils.returnData({code:-1,msg:"上传文件错误~",req,err}));
-            }
-        });
-    });
-};
-module.exports=fileEvent;
+let fileEvent = (req, res) => {
+  return new Promise((resolve, reject) => {
+    upload(req, res, function (err) {
+      if (err) return res.send(utils.returnData({ code: -1, msg: '上传文件错误~', req, err }))
+      try {
+        //循环处理
+        let imgPath = []
+        req.files.forEach(function (i) {
+          const regex = /^(.+)\.[^.]+$/
+          const regexRes = i.originalname.match(regex)
+          let name = ''
+          if (regexRes) name = regexRes[1]
+          //获取临时文件的存储路径
+          imgPath.push({ url: `${config.fileHost}/${i.filename}`, name, originalname: i.originalname, filename: i.filename, params: req.body })
+          // console.log("i.path:",i.path)
+        })
+        resolve(imgPath)
+      } catch (err) {
+        res.send(utils.returnData({ code: -1, msg: '上传文件错误~', req, err }))
+      }
+    })
+  })
+}
+module.exports = fileEvent

+ 10 - 0
utils/tool.js

@@ -10,3 +10,13 @@ module.exports = function getNewSqlParamEntity(sql, params, callback) {
     params: params
   }
 }
+module.exports = function timestampToTime(timestamp) {
+  var date = new Date(timestamp * 1000) //时间戳为10位需*1000,时间戳为13位的话不需乘1000
+  var Y = date.getFullYear() + '-'
+  var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
+  var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '
+  var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'
+  var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'
+  var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
+  return Y + M + D + h + m + s
+}