1、增加多模态数据融合功能
This commit is contained in:
parent
e5c0984c00
commit
7451a0cc62
|
@ -206,6 +206,29 @@ func (s HandlerService) GetProjectResult(c *gin.Context) (data interface{}, err
|
||||||
go s.SaveLog("获取项目检测结果", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
go s.SaveLog("获取项目检测结果", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
func (s HandlerService) GetProjectData(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewManageService(s.AppConfig, s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.ProjectDataRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("GetProjectData", "Manage", "", "", ToString(req), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
if req.Size < 1 {
|
||||||
|
req.Size = 20
|
||||||
|
}
|
||||||
|
if req.Size > 100 {
|
||||||
|
req.Size = 100
|
||||||
|
}
|
||||||
|
if req.Page < 1 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
data, err = repo.GetProjectData(c, req)
|
||||||
|
go s.SaveLog("获取项目数据", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s HandlerService) ProductList(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) ProductList(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewManageService(s.AppConfig, s.Engine, s.Logger)
|
repo := service.NewManageService(s.AppConfig, s.Engine, s.Logger)
|
||||||
|
|
|
@ -131,6 +131,15 @@ func (p ProjectRequest) ToString() string {
|
||||||
return string(data)
|
return string(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ProjectDataRequest struct {
|
||||||
|
ProjectId int64 `json:"projectId"`
|
||||||
|
LineNum int `json:"lineNum"`
|
||||||
|
KPileStart string `json:"kPileStart"`
|
||||||
|
KPileEnd string `json:"kPileEnd"`
|
||||||
|
FileType int `json:"fileType"`
|
||||||
|
BasePageList
|
||||||
|
}
|
||||||
|
|
||||||
type ProjectItemRequest struct {
|
type ProjectItemRequest struct {
|
||||||
ProjectId int64 `json:"projectId"`
|
ProjectId int64 `json:"projectId"`
|
||||||
ProjectName string `json:"projectName"`
|
ProjectName string `json:"projectName"`
|
||||||
|
|
|
@ -273,3 +273,18 @@ type TrainTaskInfoItem struct {
|
||||||
CreateAt int64 `json:"createAt"`
|
CreateAt int64 `json:"createAt"`
|
||||||
UpdateAt int64 `json:"updateAt"`
|
UpdateAt int64 `json:"updateAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ProjectSrcFile struct {
|
||||||
|
FileId int64 `json:"fileId"`
|
||||||
|
FileName string `json:"fileName"`
|
||||||
|
FileType int `json:"fileType"`
|
||||||
|
MilepostNumber string `json:"milepostNumber"`
|
||||||
|
AccessUrl string `json:"accessUrl"`
|
||||||
|
UpDown string `json:"upDown"`
|
||||||
|
LineNum int `json:"lineNum"`
|
||||||
|
Longitude float64 `json:"longitude"`
|
||||||
|
Latitude float64 `json:"latitude"`
|
||||||
|
SrcImg string `json:"srcImg"`
|
||||||
|
CreateAt int64 `json:"createAt"`
|
||||||
|
UpdateAt int64 `json:"updateAt"`
|
||||||
|
}
|
||||||
|
|
|
@ -64,6 +64,7 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engi
|
||||||
project.POST("/edit", e.ErrorWrapper(hs.EditProject))
|
project.POST("/edit", e.ErrorWrapper(hs.EditProject))
|
||||||
project.POST("/delete", e.ErrorWrapper(hs.DelProject))
|
project.POST("/delete", e.ErrorWrapper(hs.DelProject))
|
||||||
project.POST("/result", e.ErrorWrapper(hs.GetProjectResult))
|
project.POST("/result", e.ErrorWrapper(hs.GetProjectResult))
|
||||||
|
project.POST("/data", e.ErrorWrapper(hs.GetProjectData))
|
||||||
|
|
||||||
}
|
}
|
||||||
product := manage.Group("/product")
|
product := manage.Group("/product")
|
||||||
|
|
|
@ -29,6 +29,7 @@ type ManageService interface {
|
||||||
EditProject(ctx context.Context, req proto.ProjectItemRequest) (rsp *proto.BaseResponse, err error)
|
EditProject(ctx context.Context, req proto.ProjectItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
DelProject(ctx context.Context, req proto.ProjectItemRequest) (rsp *proto.BaseResponse, err error)
|
DelProject(ctx context.Context, req proto.ProjectItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
GetProjectResult(ctx context.Context, req proto.ProjectRequest) (rsp *proto.BaseResponse, err error)
|
GetProjectResult(ctx context.Context, req proto.ProjectRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
GetProjectData(ctx context.Context, req proto.ProjectDataRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
|
||||||
ProductList(ctx context.Context, req proto.ProductRequest) (rsp *proto.BaseResponse, err error)
|
ProductList(ctx context.Context, req proto.ProductRequest) (rsp *proto.BaseResponse, err error)
|
||||||
GetProductInfo(ctx context.Context, req proto.ProductItemRequest) (rsp *proto.BaseResponse, err error)
|
GetProductInfo(ctx context.Context, req proto.ProductItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
@ -645,7 +646,78 @@ ReturnPoint:
|
||||||
}
|
}
|
||||||
return rsp, err
|
return rsp, err
|
||||||
}
|
}
|
||||||
|
func (rp *repo) GetProjectData(ctx context.Context, req proto.ProjectDataRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var (
|
||||||
|
count int64
|
||||||
|
)
|
||||||
|
srcList := make([]model.FileManager, 0)
|
||||||
|
dataset := make([]int64, 0)
|
||||||
|
err = rp.engine.SQL("select dataset_id from dataset where project_id = ?", req.ProjectId).Find(&dataset)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
sess := rp.engine.In("dataset_id", dataset)
|
||||||
|
if len(req.KPileStart) > 0 {
|
||||||
|
sess = sess.And("milepost_number >= ?", req.KPileStart)
|
||||||
|
}
|
||||||
|
if len(req.KPileEnd) > 0 {
|
||||||
|
sess = sess.And("milepost_number <= ?", req.KPileEnd)
|
||||||
|
}
|
||||||
|
if req.FileType > 0 {
|
||||||
|
sess = sess.And("file_type = ?", req.FileType)
|
||||||
|
}
|
||||||
|
count, err = sess.Limit(int(req.Size), int(((req.Page)-1)*req.Size)).Asc("create_at").
|
||||||
|
FindAndCount(&srcList)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
list := make([]proto.ProjectSrcFile, len(srcList))
|
||||||
|
for k, v := range srcList {
|
||||||
|
upDown := "上行"
|
||||||
|
if v.UpDown == 1 {
|
||||||
|
upDown = "下行"
|
||||||
|
}
|
||||||
|
list[k] = proto.ProjectSrcFile{
|
||||||
|
FileId: v.FileId,
|
||||||
|
FileName: v.FileName,
|
||||||
|
FileType: v.FileType,
|
||||||
|
MilepostNumber: v.MilepostNumber,
|
||||||
|
AccessUrl: v.AccessUrl,
|
||||||
|
UpDown: upDown,
|
||||||
|
LineNum: v.LineNum,
|
||||||
|
Longitude: v.Longitude,
|
||||||
|
Latitude: v.Latitude,
|
||||||
|
CreateAt: v.CreateAt,
|
||||||
|
UpdateAt: v.UpdateAt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp = FillPaging(count, req.Page, req.Size, list, rsp)
|
||||||
|
rsp.Err = err
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
func (rp *repo) ProductList(ctx context.Context, req proto.ProductRequest) (rsp *proto.BaseResponse, err error) {
|
func (rp *repo) ProductList(ctx context.Context, req proto.ProductRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
rsp = new(proto.BaseResponse)
|
rsp = new(proto.BaseResponse)
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
type FileManager struct {
|
type FileManager struct {
|
||||||
FileId int64 `xorm:"not null pk autoincr INT(11)" json:"fileId"` //文件编号
|
FileId int64 `xorm:"not null pk autoincr INT(11)" json:"fileId"` //文件编号
|
||||||
FileName string `xorm:"VARCHAR(200)" json:"fileName"` //文件名
|
FileName string `xorm:"VARCHAR(200)" json:"fileName"` //文件名
|
||||||
AccessUrl string `xorm:"VARCHAR(400)" json:"url"` //访问路径
|
AccessUrl string `xorm:"VARCHAR(400)" json:"url"` //访问路径
|
||||||
Scene string `xorm:"VARCHAR(40)" json:"scene"` //应用场景,0 : 其他, 1: 道路; 2: 桥梁; 3:隧道; 4: 边坡
|
Scene string `xorm:"VARCHAR(40)" json:"scene"` //应用场景,0 : 其他, 1: 道路; 2: 桥梁; 3:隧道; 4: 边坡
|
||||||
DataType int `xorm:"TINYINT index default 0" json:"dataType"` //数据类型,1:数据集;2:病害库;3:应用;0:其他
|
DataType int `xorm:"TINYINT index default 0" json:"dataType"` //数据类型,1:数据集;2:病害库;3:应用;0:其他
|
||||||
DatasetId int64 `xorm:"INT(11) index default 0" json:"datasetId"` //数据集
|
DatasetId int64 `xorm:"INT(11) index default 0" json:"datasetId"` //数据集
|
||||||
FileSize int64 `xorm:"BIGINT" json:"fileSize"` //文件大小
|
FileSize int64 `xorm:"BIGINT" json:"fileSize"` //文件大小
|
||||||
FileMd5 string `xorm:"VARCHAR(64)" json:"fileMd5"` //文件MD5
|
FileMd5 string `xorm:"VARCHAR(64)" json:"fileMd5"` //文件MD5
|
||||||
IsDisease int `xorm:"TINYINT index default 0" json:"isDisease"` //数据标注状态; 0:未标注;1:有病害;2:无病害
|
IsDisease int `xorm:"TINYINT index default 0" json:"isDisease"` //数据标注状态; 0:未标注;1:有病害;2:无病害
|
||||||
Creator int64 `xorm:"INT(11) index" json:"creator"` //上传人
|
Creator int64 `xorm:"INT(11) index" json:"creator"` //上传人
|
||||||
CreateAt int64 `xorm:"created" json:"createAt"` //上传时间
|
CreateAt int64 `xorm:"created" json:"createAt"` //上传时间
|
||||||
UpdateAt int64 `xorm:"updated" json:"updateAt"` //更新时间
|
UpdateAt int64 `xorm:"updated" json:"updateAt"` //更新时间
|
||||||
|
MilepostNumber string `xorm:"VARCHAR(64)" json:"milepostNumber"` //里程桩号
|
||||||
|
FileType int `xorm:"SMALLINT default 1" json:"fileType"` //文件类型 1:图片 2: 视频 3:雷达图谱
|
||||||
|
LineNum int `xorm:"SMALLINT default 0" json:"lineNum"` //车道号
|
||||||
|
UpDown int `xorm:"TINYINT default 0" json:"upDown"` //上下行, 0:上行;1:下行
|
||||||
|
Longitude float64 `xorm:"decimal(18,6)" json:"longitude"` //经度
|
||||||
|
Latitude float64 `xorm:"decimal(18,6)" json:"latitude"` //纬度
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,11 @@ import (
|
||||||
"crypto/hmac"
|
"crypto/hmac"
|
||||||
"crypto/sha1"
|
"crypto/sha1"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
"fmt"
|
||||||
|
"math"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -38,3 +42,29 @@ func GetUserSha1Pass(pass, salt string) string {
|
||||||
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
|
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetMilepost 里程桩加减里程,返回里程桩
|
||||||
|
func GetMilepost(start, num, upDown string) string {
|
||||||
|
arr := strings.Split(start, "+")
|
||||||
|
var (
|
||||||
|
kilometre, meter, milepost, counter, res, resMilepost, resMeter float64
|
||||||
|
)
|
||||||
|
if len(arr) == 1 {
|
||||||
|
meter = 0
|
||||||
|
} else {
|
||||||
|
meter, _ = strconv.ParseFloat(arr[1], 64)
|
||||||
|
}
|
||||||
|
str := strings.Replace(arr[0], "k", "", -1)
|
||||||
|
str = strings.Replace(str, "K", "", -1)
|
||||||
|
kilometre, _ = strconv.ParseFloat(str, 64)
|
||||||
|
milepost = kilometre + meter/1000
|
||||||
|
counter, _ = strconv.ParseFloat(num, 64)
|
||||||
|
if upDown == "D" {
|
||||||
|
res = milepost - counter
|
||||||
|
} else {
|
||||||
|
res = milepost + counter
|
||||||
|
}
|
||||||
|
resMilepost = math.Floor(res)
|
||||||
|
resMeter = (res - resMilepost) * 100
|
||||||
|
return fmt.Sprintf("K%d+%.2f", int(resMilepost), resMeter)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue