From 39a8a6ca76c13c4014732441c6c73cc3c2243e19 Mon Sep 17 00:00:00 2001 From: lishihai <dslsh@dscom> Date: 星期三, 26 六月 2024 11:27:25 +0800 Subject: [PATCH] 库存盘点应用按钮记录创建人,创建时间,应用时间、应用人员等信息;根据条形码查询产品详情;新增编辑产品增加条形码字段 --- controllers/product_controller.go | 81 +++++++++++++++++++++++++++++++++++++++- models/material.go | 11 +++++ controllers/location_product_amount.go | 16 +++++-- router/router.go | 12 +++-- 4 files changed, 107 insertions(+), 13 deletions(-) diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go index 5a62cb9..87ff91b 100644 --- a/controllers/location_product_amount.go +++ b/controllers/location_product_amount.go @@ -11,6 +11,7 @@ "wms/constvar" "wms/extend/code" "wms/extend/util" + "wms/middleware" "wms/models" "wms/pkg/mysqlx" "wms/request" @@ -155,8 +156,8 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - - if err := AddLocationProductAmount(reqParams); err != nil { + userInfo := middleware.GetUserInfo(c) + if err := AddLocationProductAmount(reqParams, userInfo); err != nil { util.ResponseFormat(c, code.RequestError, err) return } @@ -164,7 +165,7 @@ util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛") } -func AddLocationProductAmount(reqParams request.UpdateLocationProductAmount) error { +func AddLocationProductAmount(reqParams request.UpdateLocationProductAmount, userInfo *request.CustomClaims) error { if reqParams.LocationId == 0 { return errors.New("鍙傛暟寮傚父锛屼綅缃甶d淇℃伅涓嶅瓨鍦�") } @@ -219,6 +220,7 @@ Details: []*models.OperationDetails{detail}, LocationID: location.Id, OperationTypeName: "搴撳瓨璋冩暣", + CreatedBy: userInfo.Username, } if err := models.WithTransaction(func(tx *gorm.DB) error { @@ -278,8 +280,9 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } + userInfo := middleware.GetUserInfo(c) if reqParams.OperationId == 0 { - if err := AddLocationProductAmount(reqParams); err != nil { + if err := AddLocationProductAmount(reqParams, userInfo); err != nil { util.ResponseFormat(c, code.RequestError, err.Error()) return } @@ -349,8 +352,11 @@ return } adjustAmount := operation.Details[0].Amount.Sub(locProductAmount.Amount) + userInfo := middleware.GetUserInfo(c) if err := models.WithTransaction(func(tx *gorm.DB) error { - if err := models.NewOperationSearch().SetOrm(tx).SetID(reqParams.OperationId).Update(&models.Operation{Status: constvar.OperationStatus_Finish}); err != nil { + if err := models.NewOperationSearch().SetOrm(tx).SetID(reqParams.OperationId).Update(&models.Operation{ + Status: constvar.OperationStatus_Finish, CheckedBy: userInfo.Username, + AuditDate: time.Now().Format("2006-01-02 15:04:05")}); err != nil { return err } if err := models.NewMaterialSearch().SetOrm(tx).SetID(reqParams.ProductId).Update(&models.Material{Amount: material.Amount.Add(adjustAmount)}); err != nil { diff --git a/controllers/product_controller.go b/controllers/product_controller.go index 86f4178..b1233ec 100644 --- a/controllers/product_controller.go +++ b/controllers/product_controller.go @@ -218,7 +218,7 @@ // GetProductDetails // @Tags 浜у搧 -// @Summary 鑾峰彇浜у搧璇︽儏 +// @Summary 閫氳繃浜у搧/鍟嗗搧/鐗╂枡 ID鑾峰彇浜у搧璇︽儏 // @Produce application/json // @Param Authorization header string true "token" // @Param id path string true "id" "鏌ヨ鍙傛暟" @@ -231,6 +231,62 @@ return } material, err := models.NewMaterialSearch().SetID(id).SetPreload(true).First() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") + return + } + attributeValues, err := models.NewAttributeValueSearch().SetEntityID(material.ID).FindNotTotal() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") + return + } + aids := make([]uint, 0) + for _, v := range attributeValues { + aids = append(aids, v.AttributeID) + } + attributes, err := models.NewAttributeSearch().SetIDs(aids).FindNotTotal() + attributesMap := make(map[uint]*models.Attribute, len(attributes)) + for _, v := range attributes { + attributesMap[v.ID] = v + } + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏈煡鍔ㄦ�佸睘鎬�") + } + for _, v1 := range attributeValues { + attribute := attributesMap[v1.AttributeID] + if attribute == nil { + continue + } + //product.Attributes = append(product.Attributes,v1) + material.Attributes = append(material.Attributes, models.Attribute{ + Model: gorm.Model{ID: v1.ID, CreatedAt: v1.CreatedAt, UpdatedAt: v1.UpdatedAt, DeletedAt: v1.DeletedAt}, + Name: attribute.Name, + DataType: attribute.DataType, + EntityType: attribute.EntityType, + SelectValues: attribute.SelectValues, + SelectValue: attribute.SelectValue, + //Value: v1.Value, + Value: v1.Value, + }) + } + util.ResponseFormat(c, code.Success, material) +} + +// GetProductDetailsByBarCode +// @Tags 浜у搧 +// @Summary 閫氳繃浜у搧/鍟嗗搧/鐗╂枡 鏉″舰鐮� 鑾峰彇浜у搧璇︽儏 +// @Produce application/json +// @Param Authorization header string true "token" +// @Param barCode path string true "barCode" "鏌ヨ鍙傛暟" +// @Success 200 {object} util.Response{data=models.Material} "鎴愬姛" +// @Router /api-wms/v1/product/getProductDetailsByBarCode/{barCode} [get] +func (slf ProductController) GetProductDetailsByBarCode(c *gin.Context) { + barCode := c.Param("barCode") + if barCode == "" { + util.ResponseFormat(c, code.RequestParamError, "鏃犳晥鏉″舰鐮�") + return + } + material, err := models.NewMaterialSearch().SetBarCode(barCode).SetPreload(true).First() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ユ壘澶辫触") return @@ -365,7 +421,7 @@ // DeleteProduct // @Tags 浜у搧 -// @Summary 鍒犻櫎浜у搧 +// @Summary 閫氳繃浜у搧/鍟嗗搧/鐗╂枡 ID鍒犻櫎浜у搧 // @Produce application/json // @Param id path string true "id" "鏌ヨ鍙傛暟" // @Success 200 {object} util.Response "鎴愬姛" @@ -384,6 +440,27 @@ util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛") } +// DeleteProductByBarCode +// @Tags 浜у搧 +// @Summary 閫氳繃浜у搧/鍟嗗搧/鐗╂枡 鏉″舰鐮佸垹闄や骇鍝� +// @Produce application/json +// @Param barCode path string true "barCode" "鏌ヨ鍙傛暟" +// @Success 200 {object} util.Response "鎴愬姛" +// @Router /api-wms/v1/product/deleteProductByBarCode/{barCode} [delete] +func (slf ProductController) DeleteProductByBarCode(c *gin.Context) { + barCode := c.Param("barCode") + if barCode == "" { + util.ResponseFormat(c, code.RequestParamError, "鏃犳晥id") + return + } + err := models.NewMaterialSearch().SetBarCode(barCode).Delete() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鍒犻櫎澶辫触") + return + } + util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛") +} + // AddProductCategory // @Tags 浜у搧绫诲瀷 // @Summary 娣诲姞浜у搧绫诲瀷 diff --git a/models/material.go b/models/material.go index 5350fc2..648c583 100644 --- a/models/material.go +++ b/models/material.go @@ -96,7 +96,8 @@ MinInventoryRule decimal.Decimal `json:"minInventoryRule" gorm:"-"` //鏈�灏忓簱瀛� MaxInventoryRule decimal.Decimal `json:"maxInventoryRule" gorm:"-"` //鏈�澶у簱瀛� - CreateBy string `gorm:"type:varchar(255);comment:瀵煎叆浜恒�佸垱寤轰汉" json:"createBy"` //鍒涘缓浜� + CreateBy string `gorm:"type:varchar(255);comment:瀵煎叆浜恒�佸垱寤轰汉" json:"createBy"` //鍒涘缓浜� + BarCode string `gorm:"type:varchar(255);comment:(鍟嗗搧/浜у搧/鐗╂枡鐨�)鏉″舰鐮�" json:"barCode"` //鍒涘缓浜� } MaterialSearch struct { @@ -201,6 +202,11 @@ return slf } +func (slf *MaterialSearch) SetBarCode(barCode string) *MaterialSearch { + slf.BarCode = barCode + return slf +} + func (slf *MaterialSearch) SetIsSale(isSale bool) *MaterialSearch { slf.IsSale = isSale return slf @@ -272,6 +278,9 @@ if slf.ID != "" { db = db.Where("id = ?", slf.ID) } + if slf.BarCode != "" { + db = db.Where("bar_code = ?", slf.BarCode) + } if slf.Name != "" { db = db.Where("name = ?", slf.Name) diff --git a/router/router.go b/router/router.go index 460dd93..95f4a3f 100644 --- a/router/router.go +++ b/router/router.go @@ -115,11 +115,13 @@ productController := new(controllers.ProductController) productAPI := r.Group(urlPrefix + "/product") { - productAPI.POST("addProduct", productController.AddProduct) // 鏂板浜у搧 - productAPI.POST("getProductList", productController.GetProductList) // 鑾峰彇浜у搧鍒楄〃 - productAPI.GET("getProductDetails/:id", productController.GetProductDetails) // 鑾峰彇浜у搧璇︽儏 - productAPI.POST("updateProduct", productController.UpdateProduct) // 淇敼浜у搧璇︽儏 - productAPI.DELETE("deleteProduct/:id", productController.DeleteProduct) // 鍒犻櫎浜у搧 + productAPI.POST("addProduct", productController.AddProduct) // 鏂板浜у搧 + productAPI.POST("getProductList", productController.GetProductList) // 鑾峰彇浜у搧鍒楄〃 + productAPI.GET("getProductDetails/:id", productController.GetProductDetails) // 閫氳繃ID鑾峰彇浜у搧璇︽儏 + productAPI.GET("getProductDetailsByBarCode/:barCode", productController.GetProductDetailsByBarCode) // 閫氳繃鏉″舰鐮佽幏鍙栦骇鍝佽鎯� + productAPI.POST("updateProduct", productController.UpdateProduct) // 淇敼浜у搧璇︽儏 + productAPI.DELETE("deleteProduct/:id", productController.DeleteProduct) // 閫氳繃ID鑾峰垹闄や骇鍝� + productAPI.DELETE("deleteProductByBarCode/:barCode", productController.DeleteProductByBarCode) // 閫氳繃鏉″舰鐮佸垹闄や骇鍝� productAPI.POST("addProductCategory", productController.AddProductCategory) //娣诲姞浜у搧绫诲瀷 productAPI.POST("getProductCategoryList", productController.GetProductCategoryList) //鑾峰彇浜у搧绫诲瀷鍒楄〃 -- Gitblit v1.8.0