From 3f1fb8181a80624ec3f77412040777892a462fdc Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期一, 30 十月 2023 19:42:05 +0800
Subject: [PATCH] 上架规则支持产品类别
---
constvar/const.go | 7
controllers/operation.go | 212 ++++++++++++++++++++++---
models/location_product.go | 29 ++-
request/location_product.go | 22 +-
controllers/location_product.go | 84 +++++++++-
docs/swagger.yaml | 19 ++
docs/docs.go | 31 +++
docs/swagger.json | 31 +++
controllers/location_product_amount.go | 2
9 files changed, 376 insertions(+), 61 deletions(-)
diff --git a/constvar/const.go b/constvar/const.go
index 5c6a63f..a84fd10 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -184,3 +184,10 @@
PostType_Soon PostType = iota + 1 //灏藉揩
PostType_AfterReady //褰撴墍鏈変骇鍝佸氨缁椂
)
+
+type RuleType int
+
+const (
+ RuleType_Product RuleType = iota + 1 //浜у搧涓婃灦瑙勫垯
+ RuleType_ProductCategory //浜у搧绫诲埆涓婃灦瑙勫垯
+)
diff --git a/controllers/location_product.go b/controllers/location_product.go
index 854d451..5955d2c 100644
--- a/controllers/location_product.go
+++ b/controllers/location_product.go
@@ -1,8 +1,11 @@
package controllers
import (
+ "errors"
"github.com/gin-gonic/gin"
+ "gorm.io/gorm"
"strconv"
+ "wms/constvar"
"wms/extend/code"
"wms/extend/util"
"wms/models"
@@ -40,14 +43,43 @@
util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浣嶇疆")
return
}
- if params.ProductId == "" {
- util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧")
+
+ if params.RuleType != constvar.RuleType_Product && params.RuleType != constvar.RuleType_ProductCategory {
+ util.ResponseFormat(c, code.RequestParamError, "ruleType寮傚父")
return
}
- //if params.ProductCategoryID == 0 {
- // util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
- // return
- //}
+
+ if params.RuleType == constvar.RuleType_Product {
+ if params.ProductId == "" {
+ util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧")
+ return
+ }
+ if _, err := models.NewLocationProductSearch().SetProductId(params.ProductId).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
+ if !errors.Is(err, gorm.ErrRecordNotFound) {
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
+ return
+ }
+ } else {
+ util.ResponseFormat(c, code.RequestParamError, "宸插瓨鍦ㄨ涓婂瑙勫垯锛岃鍕块噸澶嶆坊鍔�")
+ return
+ }
+ }
+
+ if params.RuleType == constvar.RuleType_ProductCategory {
+ if params.ProductCategoryID == 0 {
+ util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
+ return
+ }
+ if _, err := models.NewLocationProductSearch().SetProductCategoryId(params.ProductCategoryID).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
+ if !errors.Is(err, gorm.ErrRecordNotFound) {
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
+ return
+ }
+ } else {
+ util.ResponseFormat(c, code.RequestParamError, "宸插瓨鍦ㄨ涓婂瑙勫垯锛岃鍕块噸澶嶆坊鍔�")
+ return
+ }
+ }
if err := models.NewLocationProductSearch().Create(¶ms); err != nil {
logx.Errorf("Operation create err: %v", err)
@@ -116,14 +148,44 @@
util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浣嶇疆")
return
}
- if params.ProductId == "" {
- util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧")
+
+ if params.RuleType != constvar.RuleType_Product && params.RuleType != constvar.RuleType_ProductCategory {
+ util.ResponseFormat(c, code.RequestParamError, "ruleType寮傚父")
return
}
- if params.ProductCategoryID == 0 {
- util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
- return
+
+ if params.RuleType == constvar.RuleType_Product {
+ if params.ProductId == "" {
+ util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧")
+ return
+ }
+ if rule, err := models.NewLocationProductSearch().SetProductId(params.ProductId).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
+ if !errors.Is(err, gorm.ErrRecordNotFound) {
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
+ return
+ }
+ } else if params.Id != rule.Id {
+ util.ResponseFormat(c, code.RequestParamError, "宸插瓨鍦ㄨ涓婂瑙勫垯锛岃鍕块噸澶嶆坊鍔�")
+ return
+ }
}
+
+ if params.RuleType == constvar.RuleType_ProductCategory {
+ if params.ProductCategoryID == 0 {
+ util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
+ return
+ }
+ if rule, err := models.NewLocationProductSearch().SetProductCategoryId(params.ProductCategoryID).SetLocationId(params.LocationId).SetAreaId(params.AreaId).First(); err != nil {
+ if !errors.Is(err, gorm.ErrRecordNotFound) {
+ util.ResponseFormat(c, code.RequestParamError, err.Error())
+ return
+ }
+ } else if params.Id != rule.Id {
+ util.ResponseFormat(c, code.RequestParamError, "宸插瓨鍦ㄨ涓婂瑙勫垯锛岃鍕块噸澶嶆坊鍔�")
+ return
+ }
+ }
+
if err := models.NewLocationProductSearch().SetID(params.Id).Update(¶ms); err != nil {
logx.Errorf("LocationProduct update err: %v", err)
util.ResponseFormat(c, code.SaveFail, "淇敼澶辫触锛�"+err.Error())
diff --git a/controllers/location_product_amount.go b/controllers/location_product_amount.go
index 3f33ff3..bcf0abb 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -60,7 +60,7 @@
if params.Page*params.PageSize > 0 {
search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
}
- if err := search.Orm.Order("wms_location_product_amount.updated_at desc").Find(&records).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ if err := search.Orm.Order("wms_location_product_amount.updated_at desc").Find(&records).Error; err != nil {
util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
return
}
diff --git a/controllers/operation.go b/controllers/operation.go
index 478bff6..6ac7bae 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -71,7 +71,7 @@
}
func CheckDetailsRepeat(details []*models.OperationDetails) bool {
- detailIDs := []string{}
+ var detailIDs []string
var tempID string
for _, v := range details {
detailIDs = append(detailIDs, v.ProductId)
@@ -346,7 +346,7 @@
}
if operation.BaseOperationType == constvar.BaseOperationTypeIncoming {
- operationInputs := []*models.Operation{}
+ var operationInputs []*models.Operation
for k, v := range listProdt {
value, ok := mapProdt[v.ID]
if !ok {
@@ -362,6 +362,7 @@
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
+
if err == nil {
operationTransfer := &models.Operation{
Number: operation.Number,
@@ -379,20 +380,10 @@
Comment: operation.Comment,
BaseOperationType: constvar.BaseOperationTypeInternal,
Details: []*models.OperationDetails{
- &models.OperationDetails{
+ {
ProductId: v.ID,
Amount: value,
},
- },
- }
- operationTransfer.Id = 0
- operationTransfer.FromLocationID = locationRule.AreaId
- operationTransfer.ToLocationID = locationRule.LocationId
- operationTransfer.Status = constvar.OperationStatus_Finish
- operationTransfer.Details = []*models.OperationDetails{
- &models.OperationDetails{
- ProductId: v.ID,
- Amount: value,
},
}
operationInputs = append(operationInputs, operationTransfer)
@@ -417,20 +408,70 @@
return res.Error
}
} else {
- //TODO:鍑哄叆搴撶殑finish鍜屾姤搴熺殑finish閮借澧炲姞瀵筶ocation_product_amount琛ㄦ暟閲忕殑鏇存柊,鍥犱负姝よ〃鏈塒roductCategory瀛楁锛屾墍浠peration_details琛ㄤ腑瑕佸鍔燩roductCategoryId瀛楁
- locAmount, err := models.NewLocationProductAmountSearch().
- SetProductId(v.ID).
- SetLocationId(operation.ToLocationID).
- First()
+ locationRule, err = models.NewLocationProductSearch().SetProductCategoryId(v.CategoryId).SetAreaId(operation.ToLocationID).First()
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
- locAmount.LocationId = operation.ToLocationID
- locAmount.ProductId = v.ID
- locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
- locAmount.Amount = locAmount.Amount.Add(value)
- if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
- return res.Error
+ if err == nil {
+ operationTransfer := &models.Operation{
+ Number: operation.Number,
+ SourceNumber: operation.SourceNumber,
+ OperationTypeId: 0,
+ OperationTypeName: operation.OperationTypeName,
+ Status: constvar.OperationStatus_Finish,
+ FromLocationID: locationRule.AreaId,
+ ToLocationID: locationRule.LocationId,
+ OperationDate: operation.OperationDate,
+ ContacterID: operation.ContacterID,
+ ContacterName: operation.ContacterName,
+ CompanyID: operation.CompanyID,
+ CompanyName: operation.CompanyName,
+ Comment: operation.Comment,
+ BaseOperationType: constvar.BaseOperationTypeInternal,
+ Details: []*models.OperationDetails{
+ {
+ ProductId: v.ID,
+ Amount: value,
+ },
+ },
+ }
+ operationInputs = append(operationInputs, operationTransfer)
+
+ //if err := tx.Create(&operationTransfer).Error; err != nil {
+ // return err
+ //}
+
+ //TODO:鍑哄叆搴撶殑finish鍜屾姤搴熺殑finish閮借澧炲姞瀵筶ocation_product_amount琛ㄦ暟閲忕殑鏇存柊,鍥犱负姝よ〃鏈塒roductCategory瀛楁锛屾墍浠peration_details琛ㄤ腑瑕佸鍔燩roductCategoryId瀛楁
+ locAmount, err := models.NewLocationProductAmountSearch().
+ SetProductId(v.ID).
+ SetLocationId(locationRule.LocationId).
+ First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ locAmount.LocationId = locationRule.LocationId
+ locAmount.ProductId = v.ID
+ locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
+ locAmount.Amount = locAmount.Amount.Add(value)
+ if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
+ return res.Error
+ }
+ } else {
+ //TODO:鍑哄叆搴撶殑finish鍜屾姤搴熺殑finish閮借澧炲姞瀵筶ocation_product_amount琛ㄦ暟閲忕殑鏇存柊,鍥犱负姝よ〃鏈塒roductCategory瀛楁锛屾墍浠peration_details琛ㄤ腑瑕佸鍔燩roductCategoryId瀛楁
+ locAmount, err := models.NewLocationProductAmountSearch().
+ SetProductId(v.ID).
+ SetLocationId(operation.ToLocationID).
+ First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ locAmount.LocationId = operation.ToLocationID
+ locAmount.ProductId = v.ID
+ locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
+ locAmount.Amount = locAmount.Amount.Add(value)
+ if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
+ return res.Error
+ }
}
}
}
@@ -471,7 +512,9 @@
}
}
}
+
if operation.BaseOperationType == constvar.BaseOperationTypeInternal {
+ var operationInputs []*models.Operation
for _, v := range listProdt {
value, ok := mapProdt[v.ID]
if !ok {
@@ -496,15 +539,122 @@
return err
}
- toLocAmount, res := models.NewLocationProductAmountSearch().
- SetProductId(v.ID).
- SetLocationId(operation.ToLocationID).
- FirstRes()
- if res.Error != nil {
+ locationRule, err := models.NewLocationProductSearch().SetProductId(v.ID).SetAreaId(operation.ToLocationID).First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
- toLocAmount.Amount = toLocAmount.Amount.Add(value)
- if err := models.NewLocationProductAmountSearch().SetID(toLocAmount.Id).Update(toLocAmount); err != nil {
+
+ if err == nil {
+ operationTransfer := &models.Operation{
+ Number: operation.Number,
+ SourceNumber: operation.SourceNumber,
+ OperationTypeId: 0,
+ OperationTypeName: operation.OperationTypeName,
+ Status: constvar.OperationStatus_Finish,
+ FromLocationID: locationRule.AreaId,
+ ToLocationID: locationRule.LocationId,
+ OperationDate: operation.OperationDate,
+ ContacterID: operation.ContacterID,
+ ContacterName: operation.ContacterName,
+ CompanyID: operation.CompanyID,
+ CompanyName: operation.CompanyName,
+ Comment: operation.Comment,
+ BaseOperationType: constvar.BaseOperationTypeInternal,
+ Details: []*models.OperationDetails{
+ {
+ ProductId: v.ID,
+ Amount: value,
+ },
+ },
+ }
+ operationInputs = append(operationInputs, operationTransfer)
+
+ //if err := tx.Create(&operationTransfer).Error; err != nil {
+ // return err
+ //}
+
+ locAmount, err := models.NewLocationProductAmountSearch().
+ SetProductId(v.ID).
+ SetLocationId(locationRule.LocationId).
+ First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ locAmount.LocationId = locationRule.LocationId
+ locAmount.ProductId = v.ID
+ locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
+ locAmount.Amount = locAmount.Amount.Add(value)
+ if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
+ return res.Error
+ }
+ } else {
+ locationRule, err = models.NewLocationProductSearch().SetProductCategoryId(v.CategoryId).SetAreaId(operation.ToLocationID).First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ if err == nil {
+ operationTransfer := &models.Operation{
+ Number: operation.Number,
+ SourceNumber: operation.SourceNumber,
+ OperationTypeId: 0,
+ OperationTypeName: operation.OperationTypeName,
+ Status: constvar.OperationStatus_Finish,
+ FromLocationID: locationRule.AreaId,
+ ToLocationID: locationRule.LocationId,
+ OperationDate: operation.OperationDate,
+ ContacterID: operation.ContacterID,
+ ContacterName: operation.ContacterName,
+ CompanyID: operation.CompanyID,
+ CompanyName: operation.CompanyName,
+ Comment: operation.Comment,
+ BaseOperationType: constvar.BaseOperationTypeInternal,
+ Details: []*models.OperationDetails{
+ {
+ ProductId: v.ID,
+ Amount: value,
+ },
+ },
+ }
+ operationInputs = append(operationInputs, operationTransfer)
+
+ //if err := tx.Create(&operationTransfer).Error; err != nil {
+ // return err
+ //}
+
+ locAmount, err := models.NewLocationProductAmountSearch().
+ SetProductId(v.ID).
+ SetLocationId(locationRule.LocationId).
+ First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ locAmount.LocationId = locationRule.LocationId
+ locAmount.ProductId = v.ID
+ locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
+ locAmount.Amount = locAmount.Amount.Add(value)
+ if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
+ return res.Error
+ }
+ } else {
+ locAmount, err := models.NewLocationProductAmountSearch().
+ SetProductId(v.ID).
+ SetLocationId(operation.ToLocationID).
+ First()
+ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
+ return err
+ }
+ locAmount.LocationId = operation.ToLocationID
+ locAmount.ProductId = v.ID
+ locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05")
+ locAmount.Amount = locAmount.Amount.Add(value)
+ if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil {
+ return res.Error
+ }
+ }
+ }
+ }
+ if len(operationInputs) > 0 {
+ if err := tx.Create(&operationInputs).Error; err != nil {
return err
}
}
diff --git a/docs/docs.go b/docs/docs.go
index 56f55bb..f287150 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -2172,6 +2172,21 @@
"ReservationMethodByDate"
]
},
+ "constvar.RuleType": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2
+ ],
+ "x-enum-comments": {
+ "RuleType_Product": "浜у搧涓婃灦瑙勫垯",
+ "RuleType_ProductCategory": "浜у搧绫诲埆涓婃灦瑙勫垯"
+ },
+ "x-enum-varnames": [
+ "RuleType_Product",
+ "RuleType_ProductCategory"
+ ]
+ },
"constvar.WhetherType": {
"type": "integer",
"enum": [
@@ -2836,6 +2851,14 @@
"productId": {
"description": "浜у搧id",
"type": "string"
+ },
+ "ruleType": {
+ "description": "涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.RuleType"
+ }
+ ]
}
}
},
@@ -3388,6 +3411,14 @@
"productId": {
"description": "浜у搧id",
"type": "string"
+ },
+ "ruleType": {
+ "description": "涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.RuleType"
+ }
+ ]
}
}
},
diff --git a/docs/swagger.json b/docs/swagger.json
index 03c0a38..c3e37c3 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -2160,6 +2160,21 @@
"ReservationMethodByDate"
]
},
+ "constvar.RuleType": {
+ "type": "integer",
+ "enum": [
+ 1,
+ 2
+ ],
+ "x-enum-comments": {
+ "RuleType_Product": "浜у搧涓婃灦瑙勫垯",
+ "RuleType_ProductCategory": "浜у搧绫诲埆涓婃灦瑙勫垯"
+ },
+ "x-enum-varnames": [
+ "RuleType_Product",
+ "RuleType_ProductCategory"
+ ]
+ },
"constvar.WhetherType": {
"type": "integer",
"enum": [
@@ -2824,6 +2839,14 @@
"productId": {
"description": "浜у搧id",
"type": "string"
+ },
+ "ruleType": {
+ "description": "涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.RuleType"
+ }
+ ]
}
}
},
@@ -3376,6 +3399,14 @@
"productId": {
"description": "浜у搧id",
"type": "string"
+ },
+ "ruleType": {
+ "description": "涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�",
+ "allOf": [
+ {
+ "$ref": "#/definitions/constvar.RuleType"
+ }
+ ]
}
}
},
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index c8df29e..96396c4 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -178,6 +178,17 @@
- ReservationMethodAtConfirm
- ReservationMethodManual
- ReservationMethodByDate
+ constvar.RuleType:
+ enum:
+ - 1
+ - 2
+ type: integer
+ x-enum-comments:
+ RuleType_Product: 浜у搧涓婃灦瑙勫垯
+ RuleType_ProductCategory: 浜у搧绫诲埆涓婃灦瑙勫垯
+ x-enum-varnames:
+ - RuleType_Product
+ - RuleType_ProductCategory
constvar.WhetherType:
enum:
- 1
@@ -647,6 +658,10 @@
productId:
description: 浜у搧id
type: string
+ ruleType:
+ allOf:
+ - $ref: '#/definitions/constvar.RuleType'
+ description: 涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�
type: object
request.AddOperation:
properties:
@@ -1029,6 +1044,10 @@
productId:
description: 浜у搧id
type: string
+ ruleType:
+ allOf:
+ - $ref: '#/definitions/constvar.RuleType'
+ description: 涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�
type: object
request.UpdateLocationProductAmount:
properties:
diff --git a/models/location_product.go b/models/location_product.go
index f737765..6a66ba5 100644
--- a/models/location_product.go
+++ b/models/location_product.go
@@ -3,21 +3,23 @@
import (
"fmt"
"gorm.io/gorm"
+ "wms/constvar"
"wms/pkg/mysqlx"
)
type (
LocationProduct struct {
WmsModel
- Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
- LocationId int `json:"locationId" gorm:"type:int;not null;comment:浣嶇疆id"` //浣嶇疆id
- Location Location `json:"location" gorm:"foreignKey:LocationId;references:id"`
- AreaId int `json:"areaId" grom:"type:int;not null;comment:鍖哄煙id"` //鍖哄煙id
- Area Location `json:"area" gorm:"foreignKey:AreaId;references:id"`
- ProductCategoryID int `json:"productCategoryId" gorm:"type:int;not null;comment:浜у搧绉嶇被id"` //浜у搧绉嶇被id
- ProductCategory ProductCategory `json:"productCategory"`
- ProductId string `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"` //浜у搧id
- Product Material `json:"product" gorm:"foreignKey:ProductId;references:ID"`
+ Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"`
+ LocationId int `json:"locationId" gorm:"type:int;not null;comment:浣嶇疆id"` //浣嶇疆id
+ Location Location `json:"location" gorm:"foreignKey:LocationId;references:id"`
+ AreaId int `json:"areaId" grom:"type:int;not null;comment:鍖哄煙id"` //鍖哄煙id
+ Area Location `json:"area" gorm:"foreignKey:AreaId;references:id"`
+ ProductCategoryID int `json:"productCategoryId" gorm:"type:int;not null;comment:浜у搧绉嶇被id"` //浜у搧绉嶇被id
+ ProductCategory ProductCategory `json:"productCategory"`
+ ProductId string `json:"productId" gorm:"type:varchar(191);not null;comment:浜у搧id"` //浜у搧id
+ Product Material `json:"product" gorm:"foreignKey:ProductId;references:ID"`
+ RuleType constvar.RuleType `json:"ruleType" gorm:"type:int(11);not null;comment:涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�"`
}
LocationProductSearch struct {
@@ -90,6 +92,11 @@
return slf
}
+func (slf *LocationProductSearch) SetProductCategoryId(productCategoryID int) *LocationProductSearch {
+ slf.ProductCategoryID = productCategoryID
+ return slf
+}
+
func (slf *LocationProductSearch) build() *gorm.DB {
var db = slf.Orm.Model(&LocationProduct{})
@@ -130,6 +137,10 @@
db = db.Where("area_id = ?", slf.AreaId)
}
+ if slf.ProductCategoryID != 0 {
+ db = db.Where("product_category_id = ?", slf.ProductCategoryID)
+ }
+
return db
}
diff --git a/request/location_product.go b/request/location_product.go
index feccc4f..b0e3320 100644
--- a/request/location_product.go
+++ b/request/location_product.go
@@ -1,16 +1,20 @@
package request
+import "wms/constvar"
+
type AddLocationProduct struct {
- LocationId int `json:"locationId"` //浣嶇疆id
- ProductId string `json:"productId"` //浜у搧id
- ProductCategoryId int `json:"productCategoryId"` //浜у搧绉嶇被id
- AreaId int `json:"areaId"` //鍖哄煙id
+ LocationId int `json:"locationId"` //浣嶇疆id
+ ProductId string `json:"productId"` //浜у搧id
+ ProductCategoryId int `json:"productCategoryId"` //浜у搧绉嶇被id
+ AreaId int `json:"areaId"` //鍖哄煙id
+ RuleType constvar.RuleType `json:"ruleType"` //涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�
}
type UpdateLocationProduct struct {
- Id int `json:"id"`
- LocationId int `json:"locationId"` //浣嶇疆id
- ProductId string `json:"productId"` //浜у搧id
- ProductCategoryId int `json:"productCategoryId"` //浜у搧绉嶇被id
- AreaId int `json:"areaId"` //鍖哄煙id
+ Id int `json:"id"`
+ LocationId int `json:"locationId"` //浣嶇疆id
+ ProductId string `json:"productId"` //浜у搧id
+ ProductCategoryId int `json:"productCategoryId"` //浜у搧绉嶇被id
+ AreaId int `json:"areaId"` //鍖哄煙id
+ RuleType constvar.RuleType `json:"ruleType"` //涓婃灦瑙勫垯绫诲瀷 1锛氫骇鍝佺被鍨嬶紱2锛氫骇鍝佺被鍒被鍨�
}
--
Gitblit v1.8.0