From 1444c7c800fc042cd99213e901d6ad3722d0f03f Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期三, 27 九月 2023 16:13:53 +0800
Subject: [PATCH] 1.二期一部分代码
---
controllers/operation.go | 28 +++++++++
models/location_product_amount.go | 14 +++-
request/location_product_amount.go | 8 +-
controllers/location_product.go | 8 +-
docs/swagger.yaml | 12 ++--
docs/docs.go | 14 ++--
docs/swagger.json | 14 ++--
controllers/location_product_amount.go | 34 ++++++++--
8 files changed, 93 insertions(+), 39 deletions(-)
diff --git a/controllers/location_product.go b/controllers/location_product.go
index 59cf228..3ebb6ef 100644
--- a/controllers/location_product.go
+++ b/controllers/location_product.go
@@ -44,10 +44,10 @@
util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧")
return
}
- if params.ProductCategoryID == 0 {
- util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
- return
- }
+ //if params.ProductCategoryID == 0 {
+ // util.ResponseFormat(c, code.RequestParamError, "璇烽�夋嫨浜у搧绫诲埆")
+ // return
+ //}
if err := models.NewLocationProductSearch().Create(¶ms); err != nil {
logx.Errorf("Operation create 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 c3fc1b8..5e0b383 100644
--- a/controllers/location_product_amount.go
+++ b/controllers/location_product_amount.go
@@ -23,14 +23,14 @@
// @Produce application/json
// @Param object body request.PageInfo true "鏌ヨ鍙傛暟"
// @Success 200 {object} util.Response "鎴愬姛"
-// @Router /api-wms/v1/locationProductamount/list [post]
+// @Router /api-wms/v1/locationProductAmount/list [post]
func (slf LocationProductAmountController) List(c *gin.Context) {
var params request.PageInfo
if err := c.BindJSON(¶ms); err != nil {
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�:"+err.Error())
return
}
- if params.Check() {
+ if !params.Check() {
util.ResponseFormat(c, code.RequestParamError, "鍙傛暟寮傚父")
return
}
@@ -38,10 +38,26 @@
search := models.NewLocationProductAmountSearch()
search.SetPage(params.Page, params.PageSize)
- search.Orm = search.Orm.Model(&models.LocationProductAmountWithOperation{}).Table("wms_location_product_amount").Select("wms_location_product_amount.*,wms_operation.amount as adjust_amount").InnerJoins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").InnerJoins("inner join wms_operation_details on wms_operation_details.product_id=wms_location_product.product_id").InnerJoins("inner join wms_operation on wms_operation.id=wms_operation_details.operation_id").Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeAdjust)
+ search.Orm = search.Orm.
+ Table("wms_location_product_amount").
+ Select(`
+ wms_location.id as location_id,
+ wms_location.name as location_name,
+ material.id as product_id,
+ material.name as product_name,
+ wms_location_product_amount.amount,
+ material.unit,
+ wms_location_product_amount.create_date,
+ wms_operation_details.amount as adjust_amount`).
+ InnerJoins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").
+ InnerJoins("inner join wms_location on wms_location.id=wms_location_product.location_id").
+ InnerJoins("inner join wms_operation_details on wms_operation_details.product_id=wms_location_product.product_id").
+ InnerJoins("inner join material on material.id=wms_operation_details.product_id").
+ InnerJoins("inner join wms_operation on wms_operation.id=wms_operation_details.operation_id").
+ Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeAdjust)
var (
- records = make([]*models.ResponseDisuseList, 0)
+ records = make([]*models.LocationProductAmountWithOperation, 0)
total int64
)
@@ -49,7 +65,7 @@
util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
return
}
- search.Orm = search.Orm.Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product")
+ //search.Orm = search.Orm.Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product")
if params.Page*params.PageSize > 0 {
search.Orm = search.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize)
}
@@ -57,7 +73,9 @@
util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err))
return
}
-
+ for k, v := range records {
+ records[k].DifferenceAmount = v.Amount.Sub(v.AdjustAmount)
+ }
util.ResponseFormatListWithPage(c, code.Success, records, int(total), params.Page, params.PageSize)
}
@@ -67,7 +85,7 @@
// @Produce application/json
// @Param object body request.AddLocationProductAmount true "鍏ュ簱/鍑哄簱淇℃伅"
// @Success 200 {object} util.Response "鎴愬姛"
-// @Router /api-wms/v1/locationProductamount/add [post]
+// @Router /api-wms/v1/locationProductAmount/add [post]
func (slf LocationProductAmountController) Add(c *gin.Context) {
var reqParams request.AddLocationProductAmount
if err := c.BindJSON(&reqParams); err != nil {
@@ -84,7 +102,7 @@
}
var existCount int64
- if err := models.NewOperationSearch().Orm.Table("wms_operation").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation.from_location_id=? and wms_operation_details.product_id=? and wms_operation.base_operation_type=? and wms_operaton.status=?", reqParams.LocationId, reqParams.ProductId, constvar.BaseOperationTypeAdjust, constvar.OperationStatus_Ready).Count(&existCount).Error; err != nil {
+ if err := models.NewOperationSearch().Orm.Table("wms_operation").InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id").Where("wms_operation.from_location_id=? and wms_operation_details.product_id=? and wms_operation.base_operation_type=? and wms_operation.status=?", reqParams.LocationId, reqParams.ProductId, constvar.BaseOperationTypeAdjust, constvar.OperationStatus_Ready).Count(&existCount).Error; err != nil {
util.ResponseFormat(c, code.RequestParamError, err.Error())
return
}
diff --git a/controllers/operation.go b/controllers/operation.go
index 9a87ab0..fa8137d 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -6,6 +6,7 @@
"github.com/gin-gonic/gin"
"github.com/shopspring/decimal"
"gorm.io/gorm"
+ "sort"
"strconv"
"time"
"wms/constvar"
@@ -46,6 +47,12 @@
util.ResponseFormat(c, code.RequestParamError, err.Error())
return
}
+
+ if CheckDetailsRepeat(params.Details) {
+ util.ResponseFormat(c, code.RequestParamError, "鏄庣粏涓笉鑳藉瓨鍦ㄩ噸澶嶇殑浜у搧")
+ return
+ }
+
operationType, err := models.NewOperationTypeSearch().SetID(uint(params.OperationTypeId)).First()
if err != nil {
util.ResponseFormat(c, code.RequestParamError, err.Error())
@@ -61,6 +68,23 @@
return
}
util.ResponseFormat(c, code.Success, "娣诲姞鎴愬姛")
+}
+
+func CheckDetailsRepeat(details []*models.OperationDetails) bool {
+ detailIDs := []string{}
+ var tempID string
+ for _, v := range details {
+ detailIDs = append(detailIDs, v.ProductId)
+ }
+ sort.Strings(detailIDs)
+ for _, v := range detailIDs {
+ if v != tempID {
+ tempID = v
+ } else {
+ return true
+ }
+ }
+ return false
}
func (slf OperationController) FormatLocation(params *models.Operation) error {
@@ -202,6 +226,10 @@
util.ResponseFormat(c, code.RequestParamError, err.Error())
return
}
+ if CheckDetailsRepeat(params.Details) {
+ util.ResponseFormat(c, code.RequestParamError, "鏄庣粏涓笉鑳藉瓨鍦ㄩ噸澶嶇殑浜у搧")
+ return
+ }
if err := slf.FormatLocation(¶ms); err != nil {
util.ResponseFormat(c, code.RequestParamError, err.Error())
return
diff --git a/docs/docs.go b/docs/docs.go
index 531b4e8..e2104ff 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -585,7 +585,7 @@
}
}
},
- "/api-wms/v1/locationProductamount/add": {
+ "/api-wms/v1/locationProductAmount/add": {
"post": {
"produces": [
"application/json"
@@ -615,7 +615,7 @@
}
}
},
- "/api-wms/v1/locationProductamount/list": {
+ "/api-wms/v1/locationProductAmount/list": {
"post": {
"produces": [
"application/json"
@@ -2531,15 +2531,15 @@
"request.AddLocationProductAmount": {
"type": "object",
"properties": {
+ "Amount": {
+ "description": "搴撳瓨鏁伴噺",
+ "type": "number"
+ },
"adjustAmount": {
"description": "宸��",
"type": "number"
},
- "decimal": {
- "description": "搴撳瓨鏁伴噺",
- "type": "number"
- },
- "difference_amount": {
+ "differenceAmount": {
"description": "璁℃暟鏁伴噺",
"type": "number"
},
diff --git a/docs/swagger.json b/docs/swagger.json
index 0087423..ff7fbba 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -573,7 +573,7 @@
}
}
},
- "/api-wms/v1/locationProductamount/add": {
+ "/api-wms/v1/locationProductAmount/add": {
"post": {
"produces": [
"application/json"
@@ -603,7 +603,7 @@
}
}
},
- "/api-wms/v1/locationProductamount/list": {
+ "/api-wms/v1/locationProductAmount/list": {
"post": {
"produces": [
"application/json"
@@ -2519,15 +2519,15 @@
"request.AddLocationProductAmount": {
"type": "object",
"properties": {
+ "Amount": {
+ "description": "搴撳瓨鏁伴噺",
+ "type": "number"
+ },
"adjustAmount": {
"description": "宸��",
"type": "number"
},
- "decimal": {
- "description": "搴撳瓨鏁伴噺",
- "type": "number"
- },
- "difference_amount": {
+ "differenceAmount": {
"description": "璁℃暟鏁伴噺",
"type": "number"
},
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index dab3c6c..706069c 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -650,13 +650,13 @@
type: object
request.AddLocationProductAmount:
properties:
+ Amount:
+ description: 搴撳瓨鏁伴噺
+ type: number
adjustAmount:
description: 宸��
type: number
- decimal:
- description: 搴撳瓨鏁伴噺
- type: number
- difference_amount:
+ differenceAmount:
description: 璁℃暟鏁伴噺
type: number
locationId:
@@ -1429,7 +1429,7 @@
summary: 淇敼涓婃灦瑙勫垯
tags:
- 涓婃灦瑙勫垯
- /api-wms/v1/locationProductamount/add:
+ /api-wms/v1/locationProductAmount/add:
post:
parameters:
- description: 鍏ュ簱/鍑哄簱淇℃伅
@@ -1448,7 +1448,7 @@
summary: 娣诲姞搴撳瓨鐩樼偣淇℃伅
tags:
- 搴撳瓨鐩樼偣
- /api-wms/v1/locationProductamount/list:
+ /api-wms/v1/locationProductAmount/list:
post:
parameters:
- description: 鏌ヨ鍙傛暟
diff --git a/models/location_product_amount.go b/models/location_product_amount.go
index e8e0e7e..c2ee64c 100644
--- a/models/location_product_amount.go
+++ b/models/location_product_amount.go
@@ -14,6 +14,7 @@
LocationProductId int `json:"locationProductId" gorm:"type:int;not null;comment:涓婃灦瑙勫垯id"` //涓婃灦瑙勫垯id
LocationProduct LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"`
Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:搴撳瓨鏁伴噺"` //搴撳瓨鏁伴噺
+ CreateDate string `json:"createDate" gorm:"type:varchar(63);comment:鏃ユ湡"` //鏃ユ湡
}
LocationProductAmountSearch struct {
@@ -27,9 +28,16 @@
}
LocationProductAmountWithOperation struct {
- LocationProductAmount LocationProductAmount `json:"locationProductAmount"`
- AdjustAmount decimal.Decimal `json:"adjustAmount" gorm:"column:adjust_amount"`
- DifferenceAmount decimal.Decimal `json:"difference_amount"`
+ //LocationProductAmount LocationProductAmount `json:"locationProductAmount"`
+ LocationId int `json:"locationId" gorm:"column:location_id"`
+ LocationName string `json:"locationName" gorm:"column:location_name"`
+ ProductId string `json:"productId" gorm:"column:product_id"`
+ ProductName string `json:"productName" gorm:"column:product_name"`
+ Amount decimal.Decimal `json:"amount" gorm:"column:amount"`
+ Unit string `json:"unit" gorm:"column:unit"`
+ CreateDate string `json:"createDate" gorm:"column:create_date"`
+ AdjustAmount decimal.Decimal `json:"adjustAmount" gorm:"column:adjust_amount"`
+ DifferenceAmount decimal.Decimal `json:"differenceAmount" gorm:"-"`
}
)
diff --git a/request/location_product_amount.go b/request/location_product_amount.go
index 7b1ff44..78adb84 100644
--- a/request/location_product_amount.go
+++ b/request/location_product_amount.go
@@ -5,13 +5,13 @@
type AddLocationProductAmount struct {
LocationId int `json:"locationId"`
ProductId string `json:"productId"`
- Amount decimal.Decimal `json:"decimal"` //搴撳瓨鏁伴噺
- AdjustAmount decimal.Decimal `json:"adjustAmount" ` //宸��
- DifferenceAmount decimal.Decimal `json:"difference_amount"` //璁℃暟鏁伴噺
+ Amount decimal.Decimal `json:"Amount"` //搴撳瓨鏁伴噺
+ AdjustAmount decimal.Decimal `json:"adjustAmount" ` //宸��
+ DifferenceAmount decimal.Decimal `json:"differenceAmount"` //璁℃暟鏁伴噺
}
type UpdateLocationProductAmount struct {
LocationProductAmountId int `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id
AdjustAmount decimal.Decimal `json:"adjustAmount" ` //宸��
- DifferenceAmount decimal.Decimal `json:"difference_amount"` //璁℃暟鏁伴噺
+ DifferenceAmount decimal.Decimal `json:"differenceAmount"` //璁℃暟鏁伴噺
}
--
Gitblit v1.8.0