package service
|
|
import (
|
"github.com/spf13/cast"
|
"gorm.io/gorm"
|
"strconv"
|
"wms/constvar"
|
"wms/models"
|
"wms/pkg/blevex"
|
"wms/pkg/logx"
|
"wms/pkg/structx"
|
)
|
|
type HistoryReport struct {
|
ID int
|
BaseOperationType constvar.BaseOperationType
|
Number string //操作单号
|
ProductId string //产品编号
|
ProductName string //产品名称
|
OperationTypeName string //业务名称
|
FromLocation string //源位置名称
|
ToLocation string //目标位置名称
|
}
|
|
const (
|
HistoryReportIndexName = "HistoryReport.bleve"
|
)
|
|
func InitHistoryReportData() {
|
docCount, err := blevex.DocCount(HistoryReportIndexName)
|
if err != nil {
|
logx.Errorf("InitHistoryReportData get doc count err:%v", err)
|
return
|
}
|
if docCount > 0 {
|
return
|
}
|
records := make([]*models.MoveHistory, 0, 100)
|
reports := make([]*HistoryReport, 0, 100)
|
err = models.NewMoveHistorySearch().Orm.FindInBatches(&records, 100, func(tx *gorm.DB, batch int) error {
|
err = structx.AssignTo(records, &reports)
|
if err != nil {
|
logx.Errorf("AddNewHistoryReportRecord AssignTo err:%v", err)
|
return err
|
}
|
for _, report := range reports {
|
err = blevex.Add(HistoryReportIndexName, strconv.Itoa(report.ID), report)
|
if err != nil {
|
logx.Errorf("InitHistoryReportData add failed, err:%v, index:%v, data:%v", err, HistoryReportIndexName, report)
|
return err
|
}
|
}
|
return nil
|
}).Error
|
|
if err != nil {
|
logx.Errorf("InitHistoryReportData scan err:%v", err)
|
}
|
return
|
}
|
|
func SearchHistoryReport(keyword string, operationType constvar.BaseOperationType, page, pageSize int) (recordIds []int, total uint64, err error) {
|
var ids []string
|
from := (page - 1) * pageSize
|
ids, total, err = blevex.ComplexSearch(HistoryReportIndexName, keyword, map[string]interface{}{"BaseOperationType": operationType}, from, pageSize)
|
if err != nil {
|
return
|
}
|
if len(ids) == 0 {
|
return
|
}
|
recordIds = make([]int, 0, len(ids))
|
for _, id := range ids {
|
recordIds = append(recordIds, cast.ToInt(id))
|
}
|
return
|
}
|
|
func AddNewHistoryReportRecord(moveHistoryId int) {
|
var report HistoryReport
|
record, err := models.NewMoveHistorySearch().SetID(uint(moveHistoryId)).First()
|
if err != nil {
|
logx.Errorf("AddNewHistoryReportRecord Find err:%v", err)
|
return
|
}
|
err = structx.AssignTo(record, &report)
|
if err != nil {
|
logx.Errorf("AddNewHistoryReportRecord AssignTo err:%v", err)
|
return
|
}
|
err = blevex.Add(HistoryReportIndexName, strconv.Itoa(moveHistoryId), report)
|
if err != nil {
|
logx.Errorf("AddNewHistoryReportRecord bleve add err:%v", err)
|
return
|
}
|
}
|