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