From 462071ca05c30354057a6eb3839a4dc6ac6f659a Mon Sep 17 00:00:00 2001
From: dsmzx <dsmzx@123.com>
Date: 星期一, 24 六月 2024 11:33:16 +0800
Subject: [PATCH] 出库/入库 打印
---
proto/product_inventory/server.go | 65 ++++++++++++++++++++++++++++----
1 files changed, 56 insertions(+), 9 deletions(-)
diff --git a/proto/product_inventory/server.go b/proto/product_inventory/server.go
index 274d478..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 {
@@ -435,6 +450,9 @@
} else {
locationSendAmount = productAmount
}
+ if locationSendAmount.LessThanOrEqual(decimal.Zero) {
+ continue
+ }
productInfoList = append(productInfoList, &service.ProductInfo{
ProductID: productNumber,
Amount: locationSendAmount,
@@ -442,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