From 02a2176f7c5733a4e4c4429c2028bbb86a967ce7 Mon Sep 17 00:00:00 2001 From: jiangshuai <291802688@qq.com> Date: 星期二, 06 二月 2024 10:13:38 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/SRM --- proto/purchase_wms/server.go | 111 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 94 insertions(+), 17 deletions(-) diff --git a/proto/purchase_wms/server.go b/proto/purchase_wms/server.go index 579d914..10bf8a1 100644 --- a/proto/purchase_wms/server.go +++ b/proto/purchase_wms/server.go @@ -29,8 +29,8 @@ if req.ProductId == "" { return nil, errors.New("浜у搧缂栧彿涓嶈兘涓虹┖") } - var products []test.Product - err := global.GVA_DB.Model(&test.Product{}).Where("number = ?", req.ProductId).Preload("Supplier").Find(&products).Error + var products []test.SupplierMaterial + err := global.GVA_DB.Model(&test.SupplierMaterial{}).Where("number = ?", req.ProductId).Preload("Supplier").Find(&products).Error if err != nil { return nil, err } @@ -51,26 +51,47 @@ } func (s *Server) CreatePurchaseByWms(ctx context.Context, req *CreatePurchaseByWmsRequest) (*CreatePurchaseByWmsResponse, error) { - if req.SupplierId == 0 || req.ProductId == "" { - return nil, errors.New("渚涘簲鍟唅d鎴栦骇鍝乮d涓虹┖") + if req.ProductId == "" { + return nil, errors.New("浜у搧id涓虹┖") } - var pt purchase.PurchaseType - err := global.GVA_DB.Model(&purchase.PurchaseType{}).First(&pt).Error + var product test.SupplierMaterial + err := global.GVA_DB.Model(&test.SupplierMaterial{}).Where("number = ?", req.ProductId).First(&product).Error if err != nil { - return nil, err - } - var product test.Product - err = global.GVA_DB.Model(&test.Product{}).Where("number = ? and supplier_id = ?", req.ProductId, req.SupplierId).First(&product).Error - if err != nil { - return nil, err + if err == gorm.ErrRecordNotFound { + var material test.Material + err = global.GVA_DB.Model(&test.Material{}).Where("id = ?", req.ProductId).First(&material).Error + if err != nil { + return nil, err + } + product.Name = material.Name + product.Number = material.ID + product.Unit = material.Unit + product.PurchasePrice = material.PurchasePrice.InexactFloat64() + product.Specifications = material.Specs + product.ModelNumber = material.Type + product.Name = material.Name + product.Name = material.Name + err = global.GVA_DB.Create(&product).Error + if err != nil { + return nil, err + } + } else { + return nil, err + } } //閲囪喘鍗� var purchaseRecord purchase.Purchase - purchaseRecord.PurchaseTypeId = int(pt.ID) - purchaseRecord.SupplierId = int(req.SupplierId) - purchaseRecord.OrderSource = "WMS鎺ㄩ��" - purchaseRecord.Name = "WMS琛ヨ揣" + + //purchaseRecord.SupplierId = int(req.SupplierId) + if req.Source == "WMS" { + purchaseRecord.OrderSource = "WMS鎺ㄩ��" + purchaseRecord.Name = "WMS琛ヨ揣" + } else if req.Source == "APS" { + purchaseRecord.OrderSource = "APS鎺ㄩ��" + purchaseRecord.Name = "APS閲囪喘" + } + purchaseRecord.ID = 0 purchaseRecord.Status = purchase.OrderStatusConfirmed purchaseRecord.HandledBy = "admin" @@ -89,7 +110,11 @@ pp.Amount = purchaseRecord.Quantity pp.Price = decimal.NewFromFloat(product.PurchasePrice) pp.Total = purchaseRecord.TotalPrice - pp.Remark = "WMS琛ヨ揣" + if req.Source == "WMS" { + pp.Remark = "WMS琛ヨ揣" + } else if req.Source == "APS" { + pp.Remark = "APS閲囪喘" + } err = global.GVA_DB.Transaction(func(tx *gorm.DB) error { err = tx.Create(&purchaseRecord).Error @@ -106,3 +131,55 @@ resp.PurchaseNumber = purchaseRecord.Number return resp, nil } + +func (s *Server) GetPurchaseInfo(ctx context.Context, req *GetPurchaseInfoRequest) (*GetPurchaseInfoResponse, error) { + if len(req.PurchaseNumbers) == 0 { + return nil, errors.New("閲囪喘鍗曠紪鐮佷笉鑳戒负绌�") + } + var ps []purchase.Purchase + err := global.GVA_DB.Model(&purchase.Purchase{}).Where("number in (?)", req.PurchaseNumbers).Preload("Supplier").Find(&ps).Error + if err != nil { + return nil, err + } + infos := make([]*PurchaseInfo, 0) + for _, p := range ps { + var info PurchaseInfo + info.PurchaseNumber = p.Number + info.PurchaseName = p.Name + info.SupplierName = p.Supplier.Name + info.Amount = p.Quantity.IntPart() + info.Status = int64(p.Status) + infos = append(infos, &info) + } + resp := new(GetPurchaseInfoResponse) + resp.Infos = infos + return resp, nil +} + +func (s *Server) ExistSupplier(ctx context.Context, req *ExistSupplierRequest) (*ExistSupplierResponse, error) { + resp := new(ExistSupplierResponse) + if len(req.ProductId) == 0 { + resp.Exist = false + return resp, nil + } + var products []test.SupplierMaterial + err := global.GVA_DB.Model(&test.SupplierMaterial{}).Where("number in (?)", req.ProductId).Find(&products).Error + if err != nil { + return nil, err + } + for _, number := range req.ProductId { + exit := false + for _, product := range products { + if number == product.Number && product.SupplierId > 0 { + exit = true + break + } + } + if !exit { + resp.Exist = exit + return resp, nil + } + } + resp.Exist = true + return resp, nil +} -- Gitblit v1.8.0