From c6e4c58288053493fe62c9a390dfdf8cf1bedf98 Mon Sep 17 00:00:00 2001
From: liujiandao <274878379@qq.com>
Date: 星期三, 17 四月 2024 13:57:50 +0800
Subject: [PATCH] 产品添加字段2
---
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