CzRger 1 year ago
parent
commit
ab6040aa5e

+ 5 - 5
ship-test/config/db.js

@@ -1,10 +1,10 @@
 import * as mysql from 'mysql'
 const db_config = {
-    host: '8.140.240.182',
-    user: 'root',
-    password: 'Taiji@2023#data',
-    port: "18080",
-    database: 'seat-tool'
+    host: '74.10.28.37',
+    user: 'ax_tj_seat',
+    password: 'Taiji@2023#seat',
+    port: "45371",
+    database: 'seat_tools'
 }
 // 进行数据库交互
 const sqlHandle = (sql, values) => {

+ 3 - 0
ship-test/control/ship-filter-control.js

@@ -2,11 +2,14 @@ import SourceService from "../service/source-service.js";
 import ApiResult from "../config/api.js";
 import ParamsService from "../service/params-service.js";
 import ParamsDictService from "../service/params-dict-service.js";
+import TrackService from "../service/track-service.js";
 const ShipFilterControl = {
   getConfig: async (req, res) => {
     try {
       const sourceData = await SourceService.list({orderByColumn: 'sort', isAsc: false})
       for (const source of sourceData) {
+        const trackData = await TrackService.queryBy({sourceId: source.id})
+        source.track = trackData?.[0] || {}
         const paramsData = await ParamsService.list({sourceId: source.id})
         for (const params of paramsData) {
           const dictData = await ParamsDictService.list({paramsId: params.id})

+ 82 - 0
ship-test/control/track-control.js

@@ -0,0 +1,82 @@
+import TrackService from "../service/track-service.js";
+import ApiResult from "../config/api.js";
+const TrackControl = {
+  list: async (req, res) => {
+    try {
+      TrackService.list(req.body).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  page: async (req, res) => {
+    try {
+      TrackService.page(req.body).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  info: async (req, res) => {
+    try {
+      TrackService.info(req.params.id).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  add: async (req, res) => {
+    try {
+      TrackService.add(req.body).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  edit: async (req, res) => {
+    try {
+      TrackService.edit(req.body).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  del: async (req, res) => {
+    try {
+      TrackService.del(req.params?.ids?.split(',')).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+  infoBySourceId: async (req, res) => {
+    try {
+      TrackService.queryBy({sourceId: req.params.sourceId}).then(data => {
+        res.send(new ApiResult().success(data))
+      }).catch((e) => {
+        res.send(new ApiResult().error(null, e))
+      })
+    } catch (e) {
+      res.send(new ApiResult().error(e))
+    }
+  },
+}
+export default TrackControl

+ 2 - 0
ship-test/entity/source-entity.js

@@ -13,5 +13,7 @@ export default class SourceEntity {
     this.tileName = isValue(obj?.tileName) ? obj.tileName : null
     this.wsUrl = isValue(obj?.wsUrl) ? obj.wsUrl : null
     this.wsDataFlag = isValue(obj?.wsDataFlag) ? obj.wsDataFlag : null
+    this.historyWsUrl = isValue(obj?.historyWsUrl) ? obj.historyWsUrl : null
+    this.historyWsDataFlag = isValue(obj?.historyWsDataFlag) ? obj.historyWsDataFlag : null
   }
 }

+ 23 - 0
ship-test/entity/track-entity.js

@@ -0,0 +1,23 @@
+import {objToCamel, isValue, YMDHms} from "../../util/index.js";
+
+export default class ParamsEntity {
+  constructor(obj) {
+    objToCamel(obj)
+    this.sourceId = isValue(obj?.sourceId) ? obj.sourceId : null
+    this.id = isValue(obj?.id) ? obj.id : null
+    this.createTime = isValue(obj?.createTime) ? YMDHms(obj.createTime) : null
+    this.updateTime = isValue(obj?.updateTime) ? YMDHms(obj.updateTime) : null
+    this.trackKey = isValue(obj?.trackKey) ? obj.trackKey : null
+    this.trackPointKey = isValue(obj?.trackPointKey) ? obj.trackPointKey : null
+    this.trackWktKey = isValue(obj?.trackWktKey) ? obj.trackWktKey : null
+    this.trackSpeedKey = isValue(obj?.trackSpeedKey) ? obj.trackSpeedKey : null
+    this.trackCourseKey = isValue(obj?.trackCourseKey) ? obj.trackCourseKey : null
+    this.trackHeadKey = isValue(obj?.trackHeadKey) ? obj.trackHeadKey : null
+    this.historyTrackKey = isValue(obj?.historyTrackKey) ? obj.historyTrackKey : null
+    this.historyTrackPointKey = isValue(obj?.historyTrackPointKey) ? obj.historyTrackPointKey : null
+    this.historyTrackWktKey = isValue(obj?.historyTrackWktKey) ? obj.historyTrackWktKey : null
+    this.historyTrackSpeedKey = isValue(obj?.historyTrackSpeedKey) ? obj.historyTrackSpeedKey : null
+    this.historyTrackCourseKey = isValue(obj?.historyTrackCourseKey) ? obj.historyTrackCourseKey : null
+    this.historyTrackHeadKey = isValue(obj?.historyTrackHeadKey) ? obj.historyTrackHeadKey : null
+  }
+}

+ 8 - 0
ship-test/routers/index.js

@@ -2,6 +2,7 @@ import express from 'express'
 import SourceControl from "../control/source-control.js";
 import ParamsControl from "../control/params-control.js";
 import ParamsDictControl from "../control/params-dict-control.js";
+import TrackControl from "../control/track-control.js";
 import ShipFilterControl from "../control/ship-filter-control.js";
 const shipTestRouter = express.Router()
 // 数据源
@@ -27,6 +28,13 @@ shipTestRouter.put('/params/dict/edit', ParamsDictControl.edit)
 shipTestRouter.delete('/params/dict/del/:ids', ParamsDictControl.del)
 shipTestRouter.get('/params/dict/enabled/:ids', ParamsDictControl.enabled)
 shipTestRouter.get('/params/dict/disabled/:ids', ParamsDictControl.disabled)
+// 轨迹配置
+shipTestRouter.post('/track/list', TrackControl.list)
+shipTestRouter.post('/track/page', TrackControl.page)
+shipTestRouter.get('/track/info/:id', TrackControl.info)
+shipTestRouter.post('/track/add', TrackControl.add)
+shipTestRouter.put('/track/edit', TrackControl.edit)
+shipTestRouter.get('/track/infoBySourceId/:sourceId', TrackControl.infoBySourceId)
 // 船筛
 shipTestRouter.get('/ship-filter/get-config', ShipFilterControl.getConfig)
 export default shipTestRouter

+ 31 - 38
ship-test/service/params-dict-service.js

@@ -11,7 +11,7 @@ const ParamsDictService = {
         if (isValue(paramsId)) {
           where.push(`params_id = "${paramsId}"`)
         } else {
-          reject('参数ID不可为空')
+          return reject('参数ID不可为空')
         }
         if (isValue(name)) {
           where.push(`name LIKE "%${name}%"`)
@@ -25,10 +25,9 @@ const ParamsDictService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsDictEntity(v)))
+        return resolve(result.map(v => new ParamsDictEntity(v)))
       } catch (e) {
-        console.log(e)
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -40,7 +39,7 @@ const ParamsDictService = {
         if (isValue(paramsId)) {
           where.push(`params_id = "${paramsId}"`)
         } else {
-          reject('参数ID不可为空')
+          return reject('参数ID不可为空')
         }
         if (isValue(name)) {
           where.push(`name LIKE "%${name}%"`)
@@ -54,9 +53,9 @@ const ParamsDictService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await PageResult(sql, pageNum, pageSize, ParamsDictEntity)
-        resolve(result)
+        return resolve(result)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -66,8 +65,7 @@ const ParamsDictService = {
         let sql = 'SELECT * FROM ship_test_params_dict'
         let where = ['del_flag = 0']
         if (!isValue(id)) {
-          reject('id不可为空')
-          return
+          return reject('id不可为空')
         } else {
           where.push(`id = ${id}`)
         }
@@ -75,9 +73,9 @@ const ParamsDictService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsDictEntity(v))?.[0])
+        return resolve(result.map(v => new ParamsDictEntity(v))?.[0])
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -93,9 +91,9 @@ const ParamsDictService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsDictEntity(v)))
+        return resolve(result.map(v => new ParamsDictEntity(v)))
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -109,23 +107,23 @@ const ParamsDictService = {
           ['remark', paramsDictEntity.remark],
           ['sort', paramsDictEntity.sort],
           ['cql', paramsDictEntity.cql],
+          ['active', paramsDictEntity.active],
         ]
         const sql = `INSERT INTO ship_test_params_dict (${values.map(v => v[0]).join(',')}) VALUES (${values.map(v => '?').join(',')})`
         if (!isValue(paramsDictEntity.paramsId)) {
-          reject('参数ID不可为空')
+          return reject('参数ID不可为空')
         }
         if (!isValue(paramsDictEntity.cql)) {
-          reject('cql不可为空')
+          return reject('cql不可为空')
         }
         const sameValid = await ParamsDictService.queryBy({name: paramsDictEntity.name})
         if (sameValid.length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(result.insertId)
+        return resolve(result.insertId)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -141,23 +139,21 @@ const ParamsDictService = {
         ]
         let sql = `UPDATE ship_test_params_dict SET ${values.map(v => `${v[0]} = ?`).join(',')}`
         if (!isValue(paramsDictEntity.id)) {
-          reject('id不可为空!')
-          return
+          return reject('id不可为空!')
         } else {
           sql += ' ' + `WHERE id = "${paramsDictEntity.id}"`
         }
         if (!isValue(paramsDictEntity.cql)) {
-          reject('cql不可为空')
+          return reject('cql不可为空')
         }
         const sameValid = await ParamsDictService.queryBy({name: paramsDictEntity.name})
         if (sameValid.filter(v => v.id !== paramsDictEntity.id).length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(paramsDictEntity.id)
+        return resolve(paramsDictEntity.id)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -166,15 +162,14 @@ const ParamsDictService = {
       try {
         let sql = 'UPDATE ship_test_params_dict SET del_flag = "1"'
         if (ids?.length === 0) {
-          reject('ids不可为空!')
-          return
+          return reject('ids不可为空!')
         } else {
           sql += ' ' + 'WHERE id IN (?)'
         }
         const result = await sqlHandle(sql, [ids])
-        resolve('删除成功!')
+        return resolve('删除成功!')
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -183,15 +178,14 @@ const ParamsDictService = {
       try {
         let sql = 'UPDATE ship_test_params_dict SET active = 0'
         if (ids?.length === 0) {
-          reject('ids不可为空!')
-          return
+          return reject('ids不可为空!')
         } else {
           sql += ' ' + 'WHERE id IN (?)'
         }
         const result = await sqlHandle(sql, [ids])
-        resolve('启用成功!')
+        return resolve('启用成功!')
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -200,15 +194,14 @@ const ParamsDictService = {
       try {
         let sql = 'UPDATE ship_test_params_dict SET active = 1'
         if (ids?.length === 0) {
-          reject('ids不可为空!')
-          return
+          return reject('ids不可为空!')
         } else {
           sql += ' ' + 'WHERE id IN (?)'
         }
         const result = await sqlHandle(sql, [ids])
-        resolve('禁用成功!')
+        return resolve('禁用成功!')
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   }

+ 22 - 28
ship-test/service/params-service.js

@@ -11,7 +11,7 @@ const ParamsService = {
         if (isValue(sourceId)) {
           where.push(`source_id = "${sourceId}"`)
         } else {
-          reject('数据源ID不可为空')
+          return reject('数据源ID不可为空')
         }
         if (isValue(name)) {
           where.push(`name LIKE "%${name}%"`)
@@ -25,10 +25,9 @@ const ParamsService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsEntity(v)))
+        return resolve(result.map(v => new ParamsEntity(v)))
       } catch (e) {
-        console.log(e)
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -40,7 +39,7 @@ const ParamsService = {
         if (isValue(sourceId)) {
           where.push(`source_id = "${sourceId}"`)
         } else {
-          reject('数据源ID不可为空')
+          return reject('数据源ID不可为空')
         }
         if (isValue(name)) {
           where.push(`name LIKE "%${name}%"`)
@@ -54,9 +53,9 @@ const ParamsService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await PageResult(sql, pageNum, pageSize, ParamsEntity)
-        resolve(result)
+        return resolve(result)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -66,8 +65,7 @@ const ParamsService = {
         let sql = 'SELECT * FROM ship_test_params'
         let where = ['del_flag = 0']
         if (!isValue(id)) {
-          reject('id不可为空')
-          return
+          return reject('id不可为空')
         } else {
           where.push(`id = ${id}`)
         }
@@ -75,9 +73,9 @@ const ParamsService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsEntity(v))?.[0])
+        return resolve(result.map(v => new ParamsEntity(v))?.[0])
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -93,9 +91,9 @@ const ParamsService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new ParamsEntity(v)))
+        return resolve(result.map(v => new ParamsEntity(v)))
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -112,17 +110,16 @@ const ParamsService = {
         ]
         const sql = `INSERT INTO ship_test_params (${values.map(v => v[0]).join(',')}) VALUES (${values.map(v => '?').join(',')})`
         if (!isValue(paramsEntity.sourceId)) {
-          reject('数据源ID不可为空')
+          return reject('数据源ID不可为空')
         }
         const sameValid = await ParamsService.queryBy({name: paramsEntity.name})
         if (sameValid.length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(result.insertId)
+        return resolve(result.insertId)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -138,20 +135,18 @@ const ParamsService = {
         ]
         let sql = `UPDATE ship_test_params SET ${values.map(v => `${v[0]} = ?`).join(',')}`
         if (!isValue(paramsEntity.id)) {
-          reject('id不可为空!')
-          return
+          return reject('id不可为空!')
         } else {
           sql += ' ' + `WHERE id = "${paramsEntity.id}"`
         }
         const sameValid = await ParamsService.queryBy({name: paramsEntity.name})
         if (sameValid.filter(v => v.id !== paramsEntity.id).length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(paramsEntity.id)
+        return resolve(paramsEntity.id)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -160,15 +155,14 @@ const ParamsService = {
       try {
         let sql = 'UPDATE ship_test_params SET del_flag = "1"'
         if (ids?.length === 0) {
-          reject('ids不可为空!')
-          return
+          return reject('ids不可为空!')
         } else {
           sql += ' ' + 'WHERE id IN (?)'
         }
         const result = await sqlHandle(sql, [ids])
-        resolve('删除成功!')
+        return resolve('删除成功!')
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   }

+ 23 - 25
ship-test/service/source-service.js

@@ -20,10 +20,9 @@ const SourceService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new SourceEntity(v)))
+        return resolve(result.map(v => new SourceEntity(v)))
       } catch (e) {
-        console.log(e)
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -44,9 +43,9 @@ const SourceService = {
           sql += ' ' + `ORDER BY sort DESC`
         }
         const result = await PageResult(sql, pageNum, pageSize, SourceEntity)
-        resolve(result)
+        return resolve(result)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -56,8 +55,7 @@ const SourceService = {
         let sql = 'SELECT * FROM ship_test_source'
         let where = ['del_flag = 0']
         if (!isValue(id)) {
-          reject('id不可为空')
-          return
+          return reject('id不可为空')
         } else {
           where.push(`id = ${id}`)
         }
@@ -65,9 +63,9 @@ const SourceService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new SourceEntity(v))?.[0])
+        return resolve(result.map(v => new SourceEntity(v))?.[0])
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -83,9 +81,9 @@ const SourceService = {
           sql += ' ' + `WHERE ${where.join(' AND ')}`
         }
         const result = await sqlHandle(sql)
-        resolve(result.map(v => new SourceEntity(v)))
+        return resolve(result.map(v => new SourceEntity(v)))
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -101,17 +99,18 @@ const SourceService = {
           ['tile_name', sourceEntity.tileName],
           ['ws_url', sourceEntity.wsUrl],
           ['ws_data_flag', sourceEntity.wsDataFlag],
+          ['history_ws_url', sourceEntity.historyWsUrl],
+          ['history_ws_data_flag', sourceEntity.historyWsDataFlag],
         ]
         const sql = `INSERT INTO ship_test_source (${values.map(v => v[0]).join(',')}) VALUES (${values.map(v => '?').join(',')})`
         const sameValid = await SourceService.queryBy({name: sourceEntity.name})
         if (sameValid.length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(result.insertId)
+        return resolve(result.insertId)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -127,23 +126,23 @@ const SourceService = {
           ['tile_name', sourceEntity.tileName],
           ['ws_url', sourceEntity.wsUrl],
           ['ws_data_flag', sourceEntity.wsDataFlag],
+          ['history_ws_url', sourceEntity.historyWsUrl],
+          ['history_ws_data_flag', sourceEntity.historyWsDataFlag],
         ]
         let sql = `UPDATE ship_test_source SET ${values.map(v => `${v[0]} = ?`).join(',')}`
         if (!isValue(sourceEntity.id)) {
-          reject('id不可为空!')
-          return
+          return reject('id不可为空!')
         } else {
           sql += ' ' + `WHERE id = "${sourceEntity.id}"`
         }
         const sameValid = await SourceService.queryBy({name: sourceEntity.name})
         if (sameValid.filter(v => v.id !== sourceEntity.id).length > 0) {
-          reject('已存在相同名称!')
-          return
+          return reject('已存在相同名称!')
         }
         const result = await sqlHandle(sql, values.map(v => v[1]))
-        resolve(sourceEntity.id)
+        return resolve(sourceEntity.id)
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   },
@@ -152,15 +151,14 @@ const SourceService = {
       try {
         let sql = 'UPDATE ship_test_source SET del_flag = "1"'
         if (ids?.length === 0) {
-          reject('ids不可为空!')
-          return
+          return reject('ids不可为空!')
         } else {
           sql += ' ' + 'WHERE id IN (?)'
         }
         const result = await sqlHandle(sql, [ids])
-        resolve('删除成功!')
+        return resolve('删除成功!')
       } catch (e) {
-        reject(e.sqlMessage)
+        return reject(e.sqlMessage)
       }
     })
   }

+ 181 - 0
ship-test/service/track-service.js

@@ -0,0 +1,181 @@
+import {sqlHandle} from "../config/db.js";
+import {isValue, paramToUnder} from "../../util/index.js";
+import PageResult from "../config/page.js";
+import TrackEntity from "../entity/track-entity.js";
+const TrackService = {
+  list: ({sourceId, name, orderByColumn, isAsc}) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        let sql = 'SELECT * FROM ship_test_track'
+        let where = ['del_flag = 0']
+        if (isValue(sourceId)) {
+          where.push(`source_id = "${sourceId}"`)
+        } else {
+          return reject('数据源ID不可为空')
+        }
+        if (isValue(name)) {
+          where.push(`name LIKE "%${name}%"`)
+        }
+        if (where.length > 0) {
+          sql += ' ' + `WHERE ${where.join(' AND ')}`
+        }
+        if (isValue(orderByColumn)) {
+          sql += ' ' + `ORDER BY ${paramToUnder(orderByColumn)} ${isAsc ? 'ASC' : 'DESC'}`
+        } else {
+          sql += ' ' + `ORDER BY sort DESC`
+        }
+        const result = await sqlHandle(sql)
+        return resolve(result.map(v => new TrackEntity(v)))
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  page: ({sourceId, pageNum, pageSize, name, orderByColumn, isAsc}) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        let sql = 'SELECT * FROM ship_test_track'
+        let where = ['del_flag = 0']
+        if (isValue(sourceId)) {
+          where.push(`source_id = "${sourceId}"`)
+        } else {
+          return reject('数据源ID不可为空')
+        }
+        if (isValue(name)) {
+          where.push(`name LIKE "%${name}%"`)
+        }
+        if (where.length > 0) {
+          sql += ' ' + `WHERE ${where.join(' AND ')}`
+        }
+        if (isValue(orderByColumn)) {
+          sql += ' ' + `ORDER BY ${paramToUnder(orderByColumn)} ${isAsc ? 'ASC' : 'DESC'}`
+        } else {
+          sql += ' ' + `ORDER BY sort DESC`
+        }
+        const result = await PageResult(sql, pageNum, pageSize, TrackEntity)
+        return resolve(result)
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  info: (id) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        let sql = 'SELECT * FROM ship_test_track'
+        let where = ['del_flag = 0']
+        if (!isValue(id)) {
+          return reject('id不可为空')
+        } else {
+          where.push(`id = ${id}`)
+        }
+        if (where.length > 0) {
+          sql += ' ' + `WHERE ${where.join(' AND ')}`
+        }
+        const result = await sqlHandle(sql)
+        return resolve(result.map(v => new TrackEntity(v))?.[0])
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  queryBy: ({name, sourceId}) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        let sql = 'SELECT * FROM ship_test_track'
+        let where = ['del_flag = 0']
+        if (isValue(name)) {
+          where.push(`name = "${name}"`)
+        }
+        if (isValue(sourceId)) {
+          where.push(`source_id = "${sourceId}"`)
+        }
+        if (where.length > 0) {
+          sql += ' ' + `WHERE ${where.join(' AND ')}`
+        }
+        const result = await sqlHandle(sql)
+        return resolve(result.map(v => new TrackEntity(v)))
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  add: (form) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        const trackEntity = new TrackEntity(form)
+        const values = [
+          ['source_id', trackEntity.sourceId],
+          ['track_key', trackEntity.trackKey],
+          ['track_point_key', trackEntity.trackPointKey],
+          ['track_wkt_key', trackEntity.trackWktKey],
+          ['track_speed_key', trackEntity.trackSpeedKey],
+          ['track_course_key', trackEntity.trackCourseKey],
+          ['track_head_key', trackEntity.trackHeadKey],
+          ['history_track_key', trackEntity.historyTrackKey],
+          ['history_track_point_key', trackEntity.historyTrackPointKey],
+          ['history_track_wkt_key', trackEntity.historyTrackWktKey],
+          ['history_track_speed_key', trackEntity.historyTrackSpeedKey],
+          ['history_track_course_key', trackEntity.historyTrackCourseKey],
+          ['history_track_head_key', trackEntity.historyTrackHeadKey],
+        ]
+        const sql = `INSERT INTO ship_test_track (${values.map(v => v[0]).join(',')}) VALUES (${values.map(v => '?').join(',')})`
+        if (!isValue(trackEntity.sourceId)) {
+          return reject('数据源ID不可为空')
+        }
+        const result = await sqlHandle(sql, values.map(v => v[1]))
+        return resolve(result.insertId)
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  edit: (form) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        const trackEntity = new TrackEntity(form)
+        const values = [
+          ['track_key', trackEntity.trackKey],
+          ['track_point_key', trackEntity.trackPointKey],
+          ['track_wkt_key', trackEntity.trackWktKey],
+          ['track_speed_key', trackEntity.trackSpeedKey],
+          ['track_course_key', trackEntity.trackCourseKey],
+          ['track_head_key', trackEntity.trackHeadKey],
+          ['history_track_key', trackEntity.historyTrackKey],
+          ['history_track_point_key', trackEntity.historyTrackPointKey],
+          ['history_track_wkt_key', trackEntity.historyTrackWktKey],
+          ['history_track_speed_key', trackEntity.historyTrackSpeedKey],
+          ['history_track_course_key', trackEntity.historyTrackCourseKey],
+          ['history_track_head_key', trackEntity.historyTrackHeadKey],
+        ]
+        let sql = `UPDATE ship_test_track SET ${values.map(v => `${v[0]} = ?`).join(',')}`
+        if (!isValue(trackEntity.id)) {
+          return reject('id不可为空!')
+        } else {
+          sql += ' ' + `WHERE id = "${trackEntity.id}"`
+        }
+        const result = await sqlHandle(sql, values.map(v => v[1]))
+        return resolve(trackEntity.id)
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  },
+  del: (ids) => {
+    return new Promise(async (resolve, reject) => {
+      try {
+        let sql = 'UPDATE ship_test_track SET del_flag = "1"'
+        if (ids?.length === 0) {
+          return reject('ids不可为空!')
+        } else {
+          sql += ' ' + 'WHERE id IN (?)'
+        }
+        const result = await sqlHandle(sql, [ids])
+        return resolve('删除成功!')
+      } catch (e) {
+        return reject(e.sqlMessage)
+      }
+    })
+  }
+}
+export default TrackService