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, "")
|
||||
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) {
|
||||
repo := service.NewManageService(s.AppConfig, s.Engine, s.Logger)
|
||||
|
|
|
@ -131,6 +131,15 @@ func (p ProjectRequest) ToString() string {
|
|||
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 {
|
||||
ProjectId int64 `json:"projectId"`
|
||||
ProjectName string `json:"projectName"`
|
||||
|
|
|
@ -273,3 +273,18 @@ type TrainTaskInfoItem struct {
|
|||
CreateAt int64 `json:"createAt"`
|
||||
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("/delete", e.ErrorWrapper(hs.DelProject))
|
||||
project.POST("/result", e.ErrorWrapper(hs.GetProjectResult))
|
||||
project.POST("/data", e.ErrorWrapper(hs.GetProjectData))
|
||||
|
||||
}
|
||||
product := manage.Group("/product")
|
||||
|
|
|
@ -29,6 +29,7 @@ type ManageService interface {
|
|||
EditProject(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)
|
||||
GetProjectData(ctx context.Context, req proto.ProjectDataRequest) (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)
|
||||
|
@ -645,7 +646,78 @@ ReturnPoint:
|
|||
}
|
||||
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) {
|
||||
rsp = new(proto.BaseResponse)
|
||||
select {
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
package model
|
||||
|
||||
type FileManager struct {
|
||||
FileId int64 `xorm:"not null pk autoincr INT(11)" json:"fileId"` //文件编号
|
||||
FileName string `xorm:"VARCHAR(200)" json:"fileName"` //文件名
|
||||
AccessUrl string `xorm:"VARCHAR(400)" json:"url"` //访问路径
|
||||
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:其他
|
||||
DatasetId int64 `xorm:"INT(11) index default 0" json:"datasetId"` //数据集
|
||||
FileSize int64 `xorm:"BIGINT" json:"fileSize"` //文件大小
|
||||
FileMd5 string `xorm:"VARCHAR(64)" json:"fileMd5"` //文件MD5
|
||||
IsDisease int `xorm:"TINYINT index default 0" json:"isDisease"` //数据标注状态; 0:未标注;1:有病害;2:无病害
|
||||
Creator int64 `xorm:"INT(11) index" json:"creator"` //上传人
|
||||
CreateAt int64 `xorm:"created" json:"createAt"` //上传时间
|
||||
UpdateAt int64 `xorm:"updated" json:"updateAt"` //更新时间
|
||||
FileId int64 `xorm:"not null pk autoincr INT(11)" json:"fileId"` //文件编号
|
||||
FileName string `xorm:"VARCHAR(200)" json:"fileName"` //文件名
|
||||
AccessUrl string `xorm:"VARCHAR(400)" json:"url"` //访问路径
|
||||
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:其他
|
||||
DatasetId int64 `xorm:"INT(11) index default 0" json:"datasetId"` //数据集
|
||||
FileSize int64 `xorm:"BIGINT" json:"fileSize"` //文件大小
|
||||
FileMd5 string `xorm:"VARCHAR(64)" json:"fileMd5"` //文件MD5
|
||||
IsDisease int `xorm:"TINYINT index default 0" json:"isDisease"` //数据标注状态; 0:未标注;1:有病害;2:无病害
|
||||
Creator int64 `xorm:"INT(11) index" json:"creator"` //上传人
|
||||
CreateAt int64 `xorm:"created" json:"createAt"` //上传时间
|
||||
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/sha1"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -38,3 +42,29 @@ func GetUserSha1Pass(pass, salt string) string {
|
|||
res := base64.StdEncoding.EncodeToString(mac.Sum(nil))
|
||||
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