From 73b6baf6af3d88cdcb0e2df7932a9bd96b0b85c5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 01 七月 2024 22:32:34 +0800 Subject: [PATCH] 月度统计出入库按类型汇总报表定时任务和手动跑任务接口 --- proto/inventory_order/server.go | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 64 insertions(+), 3 deletions(-) diff --git a/proto/inventory_order/server.go b/proto/inventory_order/server.go index 884c8d9..d5fed6b 100644 --- a/proto/inventory_order/server.go +++ b/proto/inventory_order/server.go @@ -2,6 +2,7 @@ import ( "context" + "errors" "github.com/shopspring/decimal" "strconv" "time" @@ -16,7 +17,11 @@ func (s *Server) CreateOperationList(ctx context.Context, req *CreateOperationListRequest) (*CreateOperationListResponse, error) { var operations []*models.Operation - warehouse, err := models.NewWarehouseSearch().First() + id := 0 + if req.WarehouseId != "" { + id, _ = strconv.Atoi(req.WarehouseId) + } + warehouse, err := models.NewWarehouseSearch().SetID(id).First() if err != nil { return nil, err } @@ -44,18 +49,28 @@ if err != nil { return nil, err } + operationResp := make([]*OperationResponse, 0) for _, list := range req.List { var operation models.Operation var details []*models.OperationDetails + var or OperationResponse operation.SourceNumber = list.SourceNumber + operation.SalesDetailsNumber = list.SalesDetailsNumber operation.OperationDate = timex.TimeToString2(time.Now()) operation.Number = strconv.FormatInt(time.Now().Unix(), 10) operation.Status = constvar.OperationStatus_Ready operation.OperationTypeName = operationType.Name operation.OperationTypeId = operationType.Id - operation.FromLocationID = fromLocation.Id - operation.ToLocationID = toLocation.Id operation.BaseOperationType = constvar.BaseOperationTypeOutgoing + operation.Source = req.Source + operation.OperationSource = constvar.OperationSource(req.OperationSource) + operation.LocationID = fromLocation.Id + if req.OperationType == 1 { + operation.LocationID = toLocation.Id + } + or.WorkOrderId = operation.SourceNumber + or.Number = operation.Number + operationResp = append(operationResp, &or) if req.OperationType == 1 { operation.BaseOperationType = constvar.BaseOperationTypeIncoming } @@ -63,6 +78,8 @@ var detail models.OperationDetails detail.ProductId = product.ProductNumber detail.Amount = decimal.NewFromInt(product.Amount) + detail.FromLocationID = fromLocation.Id + detail.ToLocationID = toLocation.Id details = append(details, &detail) } operation.Details = details @@ -70,5 +87,49 @@ } err = models.NewOperationSearch().CreateBatch(operations) resp := new(CreateOperationListResponse) + resp.List = operationResp return resp, err } + +func (s *Server) GetWarehouseInfo(ctx context.Context, req *GetWarehouseInfoRequest) (*GetWarehouseInfoResponse, error) { + warehouses, err := models.NewWarehouseSearch().FindNotTotal() + if err != nil { + return nil, err + } + list := make([]*WarehouseInfo, 0) + for _, warehouse := range warehouses { + var wi WarehouseInfo + wi.Id = strconv.Itoa(warehouse.Id) + wi.Name = warehouse.Name + list = append(list, &wi) + } + resp := new(GetWarehouseInfoResponse) + resp.List = list + return resp, nil +} + +func (s *Server) GetOperationInfo(ctx context.Context, req *GetOperationInfoRequest) (*GetOperationInfoResponse, error) { + if len(req.SourceNumber) == 0 && len(req.SalesDetailsNumber) == 0 { + return nil, errors.New("鏉ユ簮缂栫爜鍜岄攢鍞槑缁嗙紪鐮佷笉鑳藉悓鏃朵负绌�") + } + operations, err := models.NewOperationSearch().SetSourceNumbers(req.SourceNumber).SetSalesDetailsNumbers(req.SalesDetailsNumber). + SetStatus(constvar.OperationStatus(req.Status)).SetPreload(true).FindNotTotal() + if err != nil { + return nil, err + } + resp := new(GetOperationInfoResponse) + list := make([]*OperationInfo, 0) + for _, operation := range operations { + var ol OperationInfo + ol.SourceNumber = operation.SourceNumber + ol.SalesDetailsNumber = operation.SalesDetailsNumber + for _, detail := range operation.Details { + o := ol + o.ProductId = detail.ProductId + o.Amount = detail.Amount.IntPart() + list = append(list, &o) + } + } + resp.List = list + return resp, nil +} -- Gitblit v1.8.0