From c7e82fd1d76b9fb25497d5aba4372bbfe13a8468 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 28 三月 2024 20:00:21 +0800 Subject: [PATCH] 采购入库增加来源 --- api/v1/test/product.go | 149 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 131 insertions(+), 18 deletions(-) diff --git a/api/v1/test/product.go b/api/v1/test/product.go index c7b7457..a962d3f 100644 --- a/api/v1/test/product.go +++ b/api/v1/test/product.go @@ -3,11 +3,14 @@ import ( "github.com/gin-gonic/gin" "go.uber.org/zap" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "srm/global" "srm/model/common/request" "srm/model/common/response" "srm/model/test" testReq "srm/model/test/request" + testResp "srm/model/test/response" "srm/service" ) @@ -22,17 +25,30 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body test.Product true "鍒涘缓Product" +// @Param data body request.ProductCreate true "鍒涘缓Product" // @Success 200 {string} string "{"success":true,"data":{},"msg":"鑾峰彇鎴愬姛"}" // @Router /p/createProduct [post] func (pApi *ProductApi) CreateProduct(c *gin.Context) { - var p test.Product + var p testReq.ProductCreate err := c.ShouldBindJSON(&p) if err != nil { response.FailWithMessage(err.Error(), c) return } - if err := pService.CreateProduct(&p); err != nil { + for _, t := range p.List { + var num int64 + db := global.GVA_DB.Model(&test.SupplierMaterial{}) + err := db.Where("number = ?", t.Number).Where("supplier_id = ?", t.SupplierId).Count(&num).Error + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + if num > 0 { + response.FailWithMessage("褰撳墠渚涘簲鍟嗗凡缁忔彁渚涙浜у搧", c) + return + } + } + if err := pService.CreateProduct(p.List); err != nil { global.GVA_LOG.Error("鍒涘缓澶辫触!", zap.Error(err)) response.FailWithMessage("鍒涘缓澶辫触", c) } else { @@ -46,17 +62,17 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body test.Product true "鍒犻櫎Product" +// @Param data body request.GetById true "鍒犻櫎Product" // @Success 200 {string} string "{"success":true,"data":{},"msg":"鍒犻櫎鎴愬姛"}" // @Router /p/deleteProduct [delete] func (pApi *ProductApi) DeleteProduct(c *gin.Context) { - var p test.Product + var p request.GetById err := c.ShouldBindJSON(&p) if err != nil { response.FailWithMessage(err.Error(), c) return } - if err := pService.DeleteProduct(p); err != nil { + if err := pService.DeleteProduct(p.ID); err != nil { global.GVA_LOG.Error("鍒犻櫎澶辫触!", zap.Error(err)) response.FailWithMessage("鍒犻櫎澶辫触", c) } else { @@ -94,11 +110,11 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data body test.Product true "鏇存柊Product" +// @Param data body test.SupplierMaterial true "鏇存柊Product" // @Success 200 {string} string "{"success":true,"data":{},"msg":"鏇存柊鎴愬姛"}" // @Router /p/updateProduct [put] func (pApi *ProductApi) UpdateProduct(c *gin.Context) { - var p test.Product + var p test.SupplierMaterial err := c.ShouldBindJSON(&p) if err != nil { response.FailWithMessage(err.Error(), c) @@ -118,11 +134,11 @@ // @Security ApiKeyAuth // @accept application/json // @Produce application/json -// @Param data query test.Product true "鐢╥d鏌ヨProduct" +// @Param data query request.GetById true "鐢╥d鏌ヨProduct" // @Success 200 {string} string "{"success":true,"data":{},"msg":"鏌ヨ鎴愬姛"}" // @Router /p/findProduct [get] func (pApi *ProductApi) FindProduct(c *gin.Context) { - var p test.Product + var p request.GetById err := c.ShouldBindQuery(&p) if err != nil { response.FailWithMessage(err.Error(), c) @@ -152,15 +168,112 @@ response.FailWithMessage(err.Error(), c) return } - if list, total, err := pService.GetProductInfoList(pageInfo); err != nil { + list, total, err := pService.GetProductInfoList(pageInfo) + if err != nil { global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) response.FailWithMessage("鑾峰彇澶辫触", c) - } else { - response.OkWithDetailed(response.PageResult{ - List: list, - Total: total, - Page: pageInfo.Page, - PageSize: pageInfo.PageSize, - }, "鑾峰彇鎴愬姛", c) + return } + + //productList := make([]testResp.Product, 0, len(list)) + // + //for _, item := range list { + // productList = append(productList, testResp.Product{ + // Name: item.Name, + // Number: item.Number, + // SupplierId: item.SupplierId, + // Unit: item.Unit, + // PurchasePrice: item.PurchasePrice, + // DeliveryTime: item.DeliveryTime, + // ShippingDuration: item.ShippingDuration, + // Specifications: item.Specifications, + // ModelNumber: item.ModelNumber, + // ProductType: "", + // MinimumStock: item.MinimumStock, + // MaximumStock: item.MaximumStock, + // Remark: "", + // SupplierName: item.Supplier.Name, + // CategoryName: item.CategoryName, + // }) + //} + + response.OkWithDetailed(response.PageResult{ + List: list, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "鑾峰彇鎴愬姛", c) +} + +var ( + productServiceConn *grpc.ClientConn +) + +func InitProductServiceConn() { + var err error + productServiceConn, err = grpc.Dial(global.GVA_CONFIG.System.GrpcUrl, grpc.WithTransportCredentials(insecure.NewCredentials())) + if err != nil { + //logx.Errorf("grpc dial product service error: %v", err.Error()) + return + } +} + +func CloseProductServiceConn() { + if productServiceConn != nil { + productServiceConn.Close() + } +} + +// GetProductListFromGrpc 鍒嗛〉鑾峰彇Product鍒楄〃 +// @Tags Product +// @Summary 鍒嗛〉鑾峰彇Product鍒楄〃 +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data query testReq.ProductSearch true "鍒嗛〉鑾峰彇Product鍒楄〃" +// @Success 200 {string} string "{"success":true,"data":{},"msg":"鑾峰彇鎴愬姛"}" +// @Router /p/getProductListFromGrpc [get] +func (pApi *ProductApi) GetProductListFromGrpc(c *gin.Context) { + var pageInfo testReq.ProductSearch + err := c.ShouldBindQuery(&pageInfo) + if err != nil { + response.FailWithMessage(err.Error(), c) + return + } + + list, total, err := pService.GetMaterials(pageInfo) + if err != nil { + global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) + response.FailWithMessage("鑾峰彇澶辫触", c) + return + } + + productList := make([]testResp.Material, 0) + + for _, item := range list { + productList = append(productList, testResp.Material{ + Name: item.Name, + Number: item.ID, + Unit: item.Unit, + Specifications: item.Specs, + ModelNumber: item.Type, + MinimumStock: item.MinInventory.IntPart(), + MaximumStock: item.MaxInventory.IntPart(), + Remark: "", + CategoryName: item.CategoryName, + }) + } + + if err != nil { + global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err)) + response.FailWithMessage("鑾峰彇澶辫触", c) + } + + response.OkWithDetailed(response.PageResult{ + List: productList, + Total: total, + Page: pageInfo.Page, + PageSize: pageInfo.PageSize, + }, "鑾峰彇鎴愬姛", c) + } -- Gitblit v1.8.0