From 3d939d8e866a43f4b49326d931bd06b553f29979 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期一, 11 三月 2024 14:16:53 +0800
Subject: [PATCH] 产品获取单位信息
---
proto/product_inventory/server.go | 46 ++++++++++++++++++++++++++++++++++------------
1 files changed, 34 insertions(+), 12 deletions(-)
diff --git a/proto/product_inventory/server.go b/proto/product_inventory/server.go
index 1dfaf74..14bf8cd 100644
--- a/proto/product_inventory/server.go
+++ b/proto/product_inventory/server.go
@@ -17,9 +17,12 @@
}
type ProductAndLocationInfo struct {
- ProductId string `json:"productId"`
- Amount decimal.Decimal `json:"amount"`
- LocationId int `json:"locationId"`
+ ProductId string `json:"productId"`
+ Amount decimal.Decimal `json:"amount"`
+ LocationId int `json:"locationId"`
+ Number string `json:"number"`
+ WaybillNumber string `json:"waybillNumber"`
+ Name string `json:"name"`
}
func (s *Server) GetInventoryProductInfo(ctx context.Context, req *GetInventoryProductInfoRequest) (*GetInventoryProductInfoResponse, error) {
@@ -29,12 +32,18 @@
//鏌ヨ浜у搧id
var details []ProductAndLocationInfo
var productIds []string
+ resp := new(GetInventoryProductInfoResponse)
err := models.NewOperationDetailsSearch().Orm.Model(&models.OperationDetails{}).
- Select("wms_operation_details.product_id,wms_operation_details.amount,wms_operation.from_location_id as location_id").
+ Select("wms_operation_details.product_id,wms_operation_details.amount,wms_operation_details.from_location_id as location_id,"+
+ "wms_operation.number,wms_operation.waybill_number, logistic_company.name").
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).Find(&details).Error
if err != nil {
return nil, err
+ }
+ if len(details) == 0 {
+ return resp, nil
}
var locationId int
for _, detail := range details {
@@ -83,8 +92,8 @@
Select("wms_operation_details.product_id, wms_operation_details.amount").
Joins("left join wms_operation on wms_operation_details.operation_id = wms_operation.id").
Where("wms_operation_details.product_id in (?)", productIds).
- Where("wms_operation.from_location_id in (?)", locationIds).Where("wms_operation.status = ?", constvar.OperationStatus_Ready).
- Where("wms_operation.base_operation_type in (?)", []constvar.BaseOperationType{constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeInternal}).
+ Where("wms_operation_details.from_location_id in (?)", locationIds).Where("wms_operation.status = ?", constvar.OperationStatus_Ready).
+ Where("wms_operation.base_operation_type in (?)", []constvar.BaseOperationType{constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeInternal, constvar.BaseOperationTypeDisuse}).
Find(&canUse).Error
if err != nil {
return nil, err
@@ -92,11 +101,15 @@
products := make([]*ProductInfo, 0)
for _, material := range materials {
var p ProductInfo
- p.Id = material.ID
+ p.Number = material.ID
p.Name = material.Name
for _, detail := range details {
if material.ID == detail.ProductId {
p.OrderAmount = detail.Amount.String()
+ p.Valorem = detail.Amount.Mul(material.SalePrice).String()
+ p.Invoice = detail.Number
+ p.Carrier = detail.Name
+ p.Waybill = detail.WaybillNumber
break
}
}
@@ -116,11 +129,11 @@
cu = cu.Add(info.Amount)
}
}
+ cu = at.Sub(cu)
p.AvailableNumber = cu.String()
products = append(products, &p)
}
- resp := new(GetInventoryProductInfoResponse)
resp.ProductList = products
return resp, nil
}
@@ -143,23 +156,31 @@
}
operation.OperationTypeName = operationType.Name
operation.OperationTypeId = operationType.Id
- location, err := models.NewLocationSearch().SetJointNames([]string{warehouse.Code}).First()
+ location, err := models.NewLocationSearch().SetID(warehouse.LocationId).First()
if err != nil {
return nil, err
}
- operation.FromLocationID = location.Id
+
first, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeCustomer)).First()
if err != nil {
return nil, err
}
- operation.ToLocationID = first.Id
+ operation.LocationID = location.Id
operation.BaseOperationType = constvar.BaseOperationTypeOutgoing
+ operation.ReceiverName = req.Addressee
+ operation.ReceiverPhone = req.Phone
+ operation.ReceiverAddr = req.Address
+ operation.Source = req.Source
+ operation.CompanyID = int(req.ClientId)
+ operation.CompanyName = req.ClientName
if req.DeliverType == 1 {
for _, product := range req.ProductList {
var detail models.OperationDetails
detail.ProductId = product.Id
amount, _ := decimal.NewFromString(product.Amount)
detail.Amount = amount
+ detail.FromLocationID = location.Id
+ detail.ToLocationID = first.Id
details = append(details, &detail)
}
operation.Details = details
@@ -171,7 +192,8 @@
detail.ProductId = product.Id
amount, _ := decimal.NewFromString(product.Amount)
detail.Amount = amount
- details = append(details, &detail)
+ detail.FromLocationID = location.Id
+ detail.ToLocationID = first.Id
newOperation.Details = append(newOperation.Details, &detail)
operations = append(operations, &newOperation)
}
--
Gitblit v1.8.0