From d20acf38c36c11ee4428c3e74a17f5870dc61b51 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期四, 16 十一月 2023 09:51:00 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/SRM --- proto/purchase_wms/server.go | 108 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 108 insertions(+), 0 deletions(-) diff --git a/proto/purchase_wms/server.go b/proto/purchase_wms/server.go new file mode 100644 index 0000000..579d914 --- /dev/null +++ b/proto/purchase_wms/server.go @@ -0,0 +1,108 @@ +package purchase_wms + +import ( + "context" + "errors" + "fmt" + "github.com/shopspring/decimal" + "gorm.io/gorm" + "srm/global" + "srm/model/purchase" + "srm/model/test" + "time" +) + +type Server struct { + UnimplementedPurchaseServiceServer +} + +func (s *Server) UpdatePurchaseStatus(ctx context.Context, req *UpdatePurchaseStatusRequest) (*UpdatePurchaseStatusResponse, error) { + if req.Number == "" { + return nil, errors.New("閲囪喘缂栧彿涓嶈兘涓虹┖") + } + err := global.GVA_DB.Model(&purchase.Purchase{}).Where("number = ?", req.Number). + Updates(map[string]interface{}{"status": purchase.OrderStatusStored}).Error + return new(UpdatePurchaseStatusResponse), err +} + +func (s *Server) GetSupplierListByProductId(ctx context.Context, req *GetSupplierListByProductIdRequest) (*GetSupplierListByProductIdResponse, error) { + 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 + if err != nil { + return nil, err + } + list := make([]*SupplierList, 0) + for _, product := range products { + if product.Supplier.Status != 1 { + continue + } + var sl SupplierList + sl.SupplierId = int64(product.SupplierId) + sl.SupplierName = product.Supplier.Name + sl.PurchasePrice = float32(product.PurchasePrice) + list = append(list, &sl) + } + resp := new(GetSupplierListByProductIdResponse) + resp.List = list + return resp, nil +} + +func (s *Server) CreatePurchaseByWms(ctx context.Context, req *CreatePurchaseByWmsRequest) (*CreatePurchaseByWmsResponse, error) { + if req.SupplierId == 0 || req.ProductId == "" { + return nil, errors.New("渚涘簲鍟唅d鎴栦骇鍝乮d涓虹┖") + } + var pt purchase.PurchaseType + err := global.GVA_DB.Model(&purchase.PurchaseType{}).First(&pt).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 + } + + //閲囪喘鍗� + var purchaseRecord purchase.Purchase + purchaseRecord.PurchaseTypeId = int(pt.ID) + purchaseRecord.SupplierId = int(req.SupplierId) + purchaseRecord.OrderSource = "WMS鎺ㄩ��" + purchaseRecord.Name = "WMS琛ヨ揣" + purchaseRecord.ID = 0 + purchaseRecord.Status = purchase.OrderStatusConfirmed + purchaseRecord.HandledBy = "admin" + purchaseRecord.Creator = "admin" + purchaseRecord.Number = fmt.Sprintf("CG%v", time.Now().Unix()) + purchaseRecord.Principal = "admin" + purchaseRecord.OrderType = "閲囪喘璁㈠崟" + purchaseRecord.Quantity = decimal.NewFromInt(req.Amount) + purchaseRecord.TotalPrice = purchaseRecord.Quantity.Mul(decimal.NewFromFloat(product.PurchasePrice)) + purchaseRecord.UnInvoiceAmount = purchaseRecord.TotalPrice + purchaseRecord.ShouldPayAmount = purchaseRecord.TotalPrice + + //浜у搧 + var pp purchase.PurchaseProducts + pp.ProductId = int(product.ID) + pp.Amount = purchaseRecord.Quantity + pp.Price = decimal.NewFromFloat(product.PurchasePrice) + pp.Total = purchaseRecord.TotalPrice + pp.Remark = "WMS琛ヨ揣" + + err = global.GVA_DB.Transaction(func(tx *gorm.DB) error { + err = tx.Create(&purchaseRecord).Error + if err != nil { + return err + } + pp.PurchaseId = int(purchaseRecord.ID) + return tx.Create(&pp).Error + }) + if err != nil { + return nil, err + } + resp := new(CreatePurchaseByWmsResponse) + resp.PurchaseNumber = purchaseRecord.Number + return resp, nil +} -- Gitblit v1.8.0