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 } }