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