From 73b6baf6af3d88cdcb0e2df7932a9bd96b0b85c5 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期一, 01 七月 2024 22:32:34 +0800 Subject: [PATCH] 月度统计出入库按类型汇总报表定时任务和手动跑任务接口 --- proto/product_inventory/server.go | 62 ++++++++++++++++++++++++++---- 1 files changed, 53 insertions(+), 9 deletions(-) diff --git a/proto/product_inventory/server.go b/proto/product_inventory/server.go index 70fdaa1..41e54d1 100644 --- a/proto/product_inventory/server.go +++ b/proto/product_inventory/server.go @@ -5,6 +5,7 @@ "errors" "fmt" "github.com/shopspring/decimal" + "gorm.io/gorm" "strconv" "strings" "time" @@ -174,7 +175,8 @@ operation.ReceiverPhone = req.Phone operation.ReceiverAddr = req.Address operation.Source = req.Source - operation.CompanyID = int(req.ClientId) + operation.OperationSource = constvar.OperationSource(req.OperationSource) + operation.CompanyID = strconv.FormatInt(req.ClientId, 10) operation.CompanyName = req.ClientName if req.DeliverType == 1 { for _, product := range req.ProductList { @@ -232,7 +234,7 @@ "wms_operation.number,wms_operation.waybill_number, logistic_company.name, wms_operation.base_operation_type, wms_operation.status, wms_operation.created_at"). Joins("left join wms_operation on wms_operation.id = wms_operation_details.operation_id"). Joins("left join logistic_company on logistic_company.id = wms_operation.logistic_company_id"). - Where("wms_operation.source_number = ?", req.Number). + Where("wms_operation.sales_details_number = ?", req.Number). Where("wms_operation.base_operation_type in ?", []constvar.BaseOperationType{ constvar.BaseOperationTypeIncoming, constvar.BaseOperationTypeOutgoing}). Where("wms_operation.status in ?", []constvar.OperationStatus{constvar.OperationStatus_Ready, constvar.OperationStatus_Finish}) @@ -330,6 +332,7 @@ } func (s *Server) OrderProductOutput(ctx context.Context, req *OrderProductOutputRequest) (resp *OrderProductOutputResponse, err error) { + resp = new(OrderProductOutputResponse) if req.OrderNumber == "" || len(req.Products) == 0 { return nil, errors.New("鍙傛暟缂哄け") } @@ -348,6 +351,9 @@ inputLocationAmountMap := make(map[int64]map[string]decimal.Decimal) outputLocationAmountMap := make(map[int64]map[string]decimal.Decimal) for _, v := range outputList { + if req.WarehouseId != 0 && v.WareHouseID != req.WarehouseId { + continue + } if outputProductMap[v.Number] == nil { simpleInfo := &OutputSimpleInfo{ Number: v.Number, @@ -361,6 +367,9 @@ } } for _, v := range inputList { + if req.WarehouseId != 0 && v.WareHouseID != req.WarehouseId { + continue + } if inputProductMap[v.Number] == nil { storeInfo := &StoreInfo{ Number: v.Number, @@ -399,6 +408,9 @@ LocationIDWarehouseIDMap := make(map[int64]int64) for _, output := range outputList { + if req.WarehouseId != 0 && output.WareHouseID != req.WarehouseId { + continue + } if outputLocationAmountMap[output.LocationID] == nil { outputLocationAmountMap[output.LocationID] = make(map[string]decimal.Decimal) } @@ -406,6 +418,9 @@ outputLocationAmountMap[output.LocationID][output.Number] = outputAmount } for _, input := range inputList { + if req.WarehouseId != 0 && input.WareHouseID != req.WarehouseId { + continue + } LocationIDWarehouseIDMap[input.LocationID] = input.WareHouseID if inputLocationAmountMap[input.LocationID] == nil { @@ -445,21 +460,50 @@ productHasSendAmount[productNumber] = productHasSendAmount[productNumber].Add(locationSendAmount) } outputInfoList = append(outputInfoList, &service.OutputInfo{ - LocationID: int(locationID), - WarehouseID: int(LocationIDWarehouseIDMap[locationID]), - Products: productInfoList, - OperationID: 0, - SourceNumber: req.OrderNumber, + LocationID: int(locationID), + WarehouseID: int(LocationIDWarehouseIDMap[locationID]), + Products: productInfoList, + OperationID: 0, + SourceNumber: req.OrderNumber, + SaleDetailsNumber: req.OrderNumber, }) } err = service.AddOutputOperations(outputInfoList) if err != nil { + logx.Errorf("OrderProductOutput AddOutputOperations err:%v", err) return nil, err } - resp.Code = 1 resp.Msg = "success" - return nil, nil + return resp, nil +} + +func (s *Server) GetOutputOperationInfo(ctx context.Context, req *GetOutputOperationInfoRequest) (*GetOutputOperationInfoResponse, error) { + if req.Number == "" { + return nil, errors.New("鍙傛暟涓嶈兘涓虹┖") + } + result := new(GetOutputOperationInfoResponse) + first, err := models.NewOperationSearch().SetSourceNumber(req.Number).SetBaseOperationType(constvar.BaseOperationTypeOutgoing).SetStatus(constvar.OperationStatus_Finish).First() + if err != nil { + if err == gorm.ErrRecordNotFound { + return result, nil + } + return nil, err + } + details, err := models.NewOperationDetailsSearch().SetOperationId(first.Id).FindNotTotal() + if err != nil { + return nil, err + } + list := make([]*OutputProduct, 0) + for _, detail := range details { + var op OutputProduct + op.Number = detail.ProductId + op.Amount = detail.Amount.String() + list = append(list, &op) + } + result.Products = list + + return result, nil } -- Gitblit v1.8.0