From be19d957b591ad27a47057929c4a8694f0776a1a Mon Sep 17 00:00:00 2001 From: jiangshuai <291802688@qq.com> Date: 星期四, 26 十月 2023 10:15:26 +0800 Subject: [PATCH] bug修改 --- controllers/product_controller.go | 32 +++- controllers/operation.go | 226 ++++++++++++++++++--------- models/location_product.go | 17 ++ controllers/report_forms_controller.go | 39 +--- models/location_product_amount.go | 76 +++++++-- request/location_product_amount.go | 13 controllers/location_product.go | 13 - docs/swagger.yaml | 7 docs/docs.go | 12 + docs/swagger.json | 12 + controllers/location_product_amount.go | 29 +-- 11 files changed, 310 insertions(+), 166 deletions(-) diff --git a/controllers/location_product.go b/controllers/location_product.go index ca86491..854d451 100644 --- a/controllers/location_product.go +++ b/controllers/location_product.go @@ -2,9 +2,7 @@ import ( "github.com/gin-gonic/gin" - "github.com/shopspring/decimal" "strconv" - "time" "wms/extend/code" "wms/extend/util" "wms/models" @@ -52,16 +50,6 @@ //} if err := models.NewLocationProductSearch().Create(¶ms); err != nil { - logx.Errorf("Operation create err: %v", err) - util.ResponseFormat(c, code.SaveFail, "娣诲姞澶辫触锛�"+err.Error()) - return - } - locationProductAmount := &models.LocationProductAmount{ - LocationProductId: params.Id, - Amount: decimal.NewFromFloat(0), - CreateDate: time.Now().Format("2006-01-02 15:04:05"), - } - if err := models.NewLocationProductAmountSearch().Create(locationProductAmount); err != nil { logx.Errorf("Operation create err: %v", err) util.ResponseFormat(c, code.SaveFail, "娣诲姞澶辫触锛�"+err.Error()) return @@ -163,7 +151,6 @@ util.ResponseFormat(c, code.RequestParamError, "id涓�0") return } - //TODO:姝ゅ鍙兘闇�瑕佸鍔犻檺鍒讹紝濡傛灉璇ヤ笂鏋惰鍒欏鏋滃凡缁忎骇鐢熶簡搴撳瓨鏁伴噺锛屽垹闄や細閫犳垚搴撳瓨鏌ヤ笉鍒扮殑褰卞搷 if err := models.NewLocationProductSearch().SetID(id).Delete(); err != nil { logx.Errorf("LocationProduct delete 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 f895a6c..3f33ff3 100644 --- a/controllers/location_product_amount.go +++ b/controllers/location_product_amount.go @@ -44,11 +44,9 @@ search.Orm = search.Orm. Table("wms_location_product_amount"). Select(`wms_location_product_amount.id as location_product_amount_id,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`). - InnerJoins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id"). - InnerJoins("inner join material on material.id=wms_location_product.product_id"). - InnerJoins("inner join wms_location on wms_location.id=wms_location_product.location_id") - //Joins("inner join wms_operation_details on wms_operation_details.product_id=wms_location_product.product_id"). - //Joins("inner join wms_operation on wms_operation.id=wms_operation_details.operation_id and wms_operation.base_operation_type=? and wms_operation.status=?", constvar.BaseOperationTypeAdjust, constvar.OperationStatus_Ready) + InnerJoins("inner join material on material.id=wms_location_product_amount.product_id"). + InnerJoins("inner join wms_location on wms_location.id=wms_location_product_amount.location_id") + var ( records = make([]*models.LocationProductAmountWithOperation, 0) total int64 @@ -62,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 { + if err := search.Orm.Order("wms_location_product_amount.updated_at desc").Find(&records).Error; err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { util.ResponseFormat(c, code.RequestError, fmt.Errorf("find count err: %v", err)) return } @@ -127,25 +125,22 @@ return errors.New("璇ュ晢鍝佸湪宸查�変腑鐨勪綅缃瓨鍦ㄦ湭楠岃瘉鐨勫簱瀛樼洏鐐逛俊鎭紝鏃犳硶缁х画娣诲姞鐩稿叧淇℃伅") } - locProduct, err := models.NewLocationProductSearch().SetLocationId(reqParams.LocationId).SetProductId(reqParams.ProductId).First() - if err != nil { - return errors.New("鍙傛暟寮傚父锛屾湭鎵惧埌璇ヤ笂鏋惰鍒�") - } - - existAmount, err := models.NewLocationProductAmountSearch().SetLocationProductId(locProduct.Id).First() - if err != nil { - return err + existAmount, res := models.NewLocationProductAmountSearch().SetLocationId(reqParams.LocationId).SetProductId(reqParams.ProductId).FirstRes() + if res.Error != nil && !errors.Is(res.Error, gorm.ErrRecordNotFound) { + return res.Error } location, err := models.NewLocationSearch().SetType(int(constvar.LocationTypeAdjust)).First() if err != nil { return err } - //reqParams.AdjustAmount = reqParams.Amount.Sub(reqParams.DifferenceAmount) reqParams.AdjustAmount = reqParams.DifferenceAmount.Sub(reqParams.Amount) var locAmount models.LocationProductAmount - if existAmount.Id == 0 { + if res.Error != nil && errors.Is(res.Error, gorm.ErrRecordNotFound) { locAmount = models.LocationProductAmount{ - LocationProductId: locProduct.Id, + LocationId: reqParams.LocationId, + //TODO:姝ゅ鏂板浜哖roductCategoryId鍏ュ弬锛岀洰鍓嶄笉娓呮杩欎釜鍊肩殑鏉ユ簮 + ProductCategoryID: reqParams.ProductCategoryId, + ProductId: reqParams.ProductId, Amount: decimal.NewFromInt(0), CreateDate: time.Now().Format("2006-01-02 15:04:05"), } diff --git a/controllers/operation.go b/controllers/operation.go index 21b953d..c53ead6 100644 --- a/controllers/operation.go +++ b/controllers/operation.go @@ -314,7 +314,7 @@ util.ResponseFormat(c, code.RequestParamError, "id涓�0") return } - operation, err := models.NewOperationSearch().SetID(id).First() + operation, err := models.NewOperationSearch().SetPreload(true).SetID(id).First() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏈壘鍒扮浉鍏冲嚭鍏ュ簱淇℃伅:"+err.Error()) return @@ -323,17 +323,12 @@ util.ResponseFormat(c, code.RequestError, "璇ュ嚭鍏ュ簱淇℃伅鏃犳硶瀹屾垚") return } - operationType, err := models.NewOperationTypeSearch().SetID(uint(operation.OperationTypeId)).First() - if err != nil { - util.ResponseFormat(c, code.RequestError, err.Error()) - return - } if err := models.WithTransaction(func(tx *gorm.DB) error { if err := models.NewOperationSearch().SetOrm(tx).SetID(id).Update(&models.Operation{Status: constvar.OperationStatus_Finish}); err != nil { return err } - //if operationType.BaseOperationType != constvar.BaseOperationTypeInternal { + var listProdtId []string var listProdt []*models.Material mapProdt := make(map[string]decimal.Decimal) @@ -345,96 +340,175 @@ listProdtId = append(listProdtId, v.ProductId) mapProdt[v.ProductId] = v.Amount } + if err := models.NewMaterialSearch().Orm.Where("id IN ?", listProdtId).Find(&listProdt).Error; err != nil { return err } - if operationType.BaseOperationType == constvar.BaseOperationTypeIncoming { + + if operation.BaseOperationType == constvar.BaseOperationTypeIncoming { + operationInputs := []*models.Operation{} for k, v := range listProdt { - if value, ok := mapProdt[v.ID]; !ok { + value, ok := mapProdt[v.ID] + if !ok { return errors.New("浜у搧绉嶇被寮傚父") - } else { - listProdt[k].Amount = listProdt[k].Amount.Add(value) - if err := tx.Save(listProdt[k]).Error; err != nil { - return err + } + + listProdt[k].Amount = listProdt[k].Amount.Add(value) + if err := tx.Save(listProdt[k]).Error; err != nil { + return err + } + + locationRule, err := models.NewLocationProductSearch().SetProductId(v.ID).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: operation.OperationTypeId, + 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: operation.BaseOperationType, + 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) + + //if err := tx.Create(&operationTransfer).Error; err != nil { + // return err + //} + //TODO:鍑哄叆搴撶殑finish鍜屾姤搴熺殑finish閮借澧炲姞瀵筶ocation_product_amount琛ㄦ暟閲忕殑鏇存柊,鍥犱负姝よ〃鏈塒roductCategory瀛楁锛屾墍浠peration_details琛ㄤ腑瑕佸鍔燩roductCategoryId瀛楁 - var locAmount models.LocationProductAmount - if err := models.NewLocationProductAmountSearch().Orm. - Table("wms_location_product_amount"). - Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id"). - Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.ToLocationID). - First(&locAmount).Error; err != nil { + 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 err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil { - return err + if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { + return res.Error } - } - } - - } - if operationType.BaseOperationType == constvar.BaseOperationTypeOutgoing { - for k, v := range listProdt { - if value, ok := mapProdt[v.ID]; !ok { - return errors.New("浜у搧绉嶇被寮傚父") } else { - if v.Amount.LessThan(value) { - return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) - } - listProdt[k].Amount = listProdt[k].Amount.Sub(value) - if err := tx.Save(listProdt[k]).Error; err != nil { - return err - } - var locAmount models.LocationProductAmount - if err := models.NewLocationProductAmountSearch().Orm.Table("wms_location_product_amount").Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID).First(&locAmount).Error; err != nil { - return err - } - if locAmount.Amount.LessThan(value) { - return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) - } - locAmount.Amount = locAmount.Amount.Sub(value) - if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil { - return err - } - } - } - } - if operationType.BaseOperationType == constvar.BaseOperationTypeInternal { - for k, v := range listProdt { - if value, ok := mapProdt[v.ID]; !ok { - return errors.New("浜у搧绉嶇被寮傚父") - } else { - listProdt[k].Amount = listProdt[k].Amount.Add(value) - if err := tx.Save(listProdt[k]).Error; err != nil { - return err - } //TODO:鍑哄叆搴撶殑finish鍜屾姤搴熺殑finish閮借澧炲姞瀵筶ocation_product_amount琛ㄦ暟閲忕殑鏇存柊,鍥犱负姝よ〃鏈塒roductCategory瀛楁锛屾墍浠peration_details琛ㄤ腑瑕佸鍔燩roductCategoryId瀛楁 - var fromAmount, toAmount models.LocationProductAmount - if err := models.NewLocationProductAmountSearch().Orm.Table("wms_location_product_amount").Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID).Find(&fromAmount).Error; err != nil { + locAmount, err := models.NewLocationProductAmountSearch(). + SetProductId(v.ID). + SetLocationId(operation.ToLocationID). + First() + if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return err } - if fromAmount.Amount.LessThan(value) { - return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,璋冩嫧锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愯皟鎷ㄦ搷浣�", v.Name, v.Amount.String(), value.String())) + 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 } - fromAmount.Amount = fromAmount.Amount.Sub(value) - if err := models.NewLocationProductAmountSearch().SetID(fromAmount.Id).Update(&fromAmount); err != nil { - return err - } - - if err := models.NewLocationProductAmountSearch().Orm.Table("wms_location_product_amount").Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id").Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.ToLocationID).Find(&toAmount).Error; err != nil { - return err - } - toAmount.Amount = toAmount.Amount.Add(value) - if err := models.NewLocationProductAmountSearch().SetID(toAmount.Id).Update(&toAmount); err != nil { - return err - } + } + } + if len(operationInputs) > 0 { + if err := tx.Create(&operationInputs).Error; err != nil { + return err } } } - //} + if operation.BaseOperationType == constvar.BaseOperationTypeOutgoing { + for k, v := range listProdt { + value, ok := mapProdt[v.ID] + if !ok { + return errors.New("浜у搧绉嶇被寮傚父") + } + if v.Amount.LessThan(value) { + return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) + } + listProdt[k].Amount = listProdt[k].Amount.Sub(value) + if err := tx.Save(listProdt[k]).Error; err != nil { + return err + } + locAmount, res := models.NewLocationProductAmountSearch(). + SetProductId(v.ID). + SetLocationId(operation.ToLocationID). + FirstRes() + if res.Error != nil { + return err + } + if locAmount.Amount.LessThan(value) { + return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) + } + locAmount.Amount = locAmount.Amount.Sub(value) + if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(locAmount); err != nil { + return err + } + } + } + if operation.BaseOperationType == constvar.BaseOperationTypeInternal { + for _, v := range listProdt { + value, ok := mapProdt[v.ID] + if !ok { + return errors.New("浜у搧绉嶇被寮傚父") + } + //listProdt[k].Amount = listProdt[k].Amount.Add(value) + //if err := tx.Save(listProdt[k]).Error; err != nil { + // return err + //} + fromLocAmount, res := models.NewLocationProductAmountSearch(). + SetProductId(v.ID). + SetLocationId(operation.FromLocationID). + FirstRes() + if res.Error != nil { + return err + } + if fromLocAmount.Amount.LessThan(value) { + return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,璋冩嫧锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愯皟鎷ㄦ搷浣�", v.Name, v.Amount.String(), value.String())) + } + fromLocAmount.Amount = fromLocAmount.Amount.Sub(value) + if err := models.NewLocationProductAmountSearch().SetID(fromLocAmount.Id).Update(fromLocAmount); err != nil { + return err + } + + toLocAmount, res := models.NewLocationProductAmountSearch(). + SetProductId(v.ID). + SetLocationId(operation.ToLocationID). + FirstRes() + if res.Error != nil { + return err + } + toLocAmount.Amount = toLocAmount.Amount.Add(value) + if err := models.NewLocationProductAmountSearch().SetID(toLocAmount.Id).Update(toLocAmount); err != nil { + return err + } + } + } return nil }); err != nil { util.ResponseFormat(c, code.RequestError, err.Error()) diff --git a/controllers/product_controller.go b/controllers/product_controller.go index 9dee846..da77f6c 100644 --- a/controllers/product_controller.go +++ b/controllers/product_controller.go @@ -475,19 +475,35 @@ if err := tx.Save(listProdt[k]).Error; err != nil { return err } - var locAmount models.LocationProductAmount - if err := models.NewLocationProductAmountSearch().Orm. - Table("wms_location_product_amount"). - Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id"). - Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID). - First(&locAmount).Error; err != nil { + + //var locAmount models.LocationProductAmount + //if err := models.NewLocationProductAmountSearch().Orm. + // Table("wms_location_product_amount"). + // Joins("inner join wms_location_product on wms_location_product.id=wms_location_product_amount.location_product_id"). + // Where("wms_location_product.product_id=? and wms_location_product.location_id=?", v.ID, operation.FromLocationID). + // First(&locAmount).Error; err != nil { + // return err + //} + //if locAmount.Amount.LessThan(value) { + // return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) + //} + //locAmount.Amount = locAmount.Amount.Sub(value) + //if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil { + // return err + //} + + locAmount, res := models.NewLocationProductAmountSearch(). + SetProductId(v.ID). + SetLocationId(operation.ToLocationID). + FirstRes() + if res.Error != nil { return err } if locAmount.Amount.LessThan(value) { - return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鍑哄簱锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愬嚭搴撴搷浣�", v.Name, v.Amount.String(), value.String())) + return errors.New(fmt.Sprintf("浜у搧锛�%v,搴撳瓨锛�%v,鎶ュ簾锛�%v,鏁伴噺涓嶅锛屾棤娉曞畬鎴愭姤搴熸搷浣�", v.Name, v.Amount.String(), value.String())) } locAmount.Amount = locAmount.Amount.Sub(value) - if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(&locAmount); err != nil { + if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(locAmount); err != nil { return err } } diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go index 79ee050..88dc93a 100644 --- a/controllers/report_forms_controller.go +++ b/controllers/report_forms_controller.go @@ -183,10 +183,7 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return } - search := models.NewLocationProductSearch() - if params.PageInfo.Check() { - search.SetPage(params.Page, params.PageSize) - } + //鏌ヨ浣嶇疆 locations, err := models.NewLocationSearch().SetJointName(params.WareHouseCode).FindAll() if err != nil { @@ -198,36 +195,24 @@ ids = append(ids, location.Id) } - find, total, err := search.SetKeyword(params.KeyWord).SetProductId(params.ProductId).SetLocationIds(ids).FindByPage() - if err != nil { - util.ResponseFormat(c, code.RequestParamError, "鏌ヨ涓婃灦瑙勫垯澶辫触") - return - } - ruleIds := make([]int, 0) - for _, product := range find { - ruleIds = append(ruleIds, product.Id) - } - amounts, err := models.NewLocationProductAmountSearch().SetLocationProductIds(ruleIds).Find() + amounts, total, err := models.NewLocationProductAmountSearch().SetPage(params.Page, params.PageSize).SetPreload(true).SetKeyword(params.KeyWord).SetProductId(params.ProductId).SetLocationIds(ids).FindByPage() if err != nil { util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鏁伴噺澶辫触") return } + var result []response.LocationForms - for _, product := range find { + for _, amount := range amounts { var resp response.LocationForms - for _, amount := range amounts { - if product.Id == amount.LocationProductId { - resp.Amount = amount.Amount - break - } - } - resp.LocationName = product.Location.Name - resp.ProduceId = product.Product.ID - resp.ProductName = product.Product.Name - resp.ProductTypeName = product.ProductCategory.Name - resp.Unit = product.Product.Unit - resp.Value = resp.Amount.Mul(product.Product.Cost) + resp.Amount = amount.Amount + resp.LocationName = amount.Location.Name + resp.ProduceId = amount.Product.ID + resp.ProductName = amount.Product.Name + resp.ProductTypeName = amount.ProductCategory.Name + resp.Unit = amount.Product.Unit + resp.Value = resp.Amount.Mul(amount.Product.Cost) result = append(result, resp) } + util.ResponseFormatList(c, code.Success, result, int(total)) } diff --git a/docs/docs.go b/docs/docs.go index 364970e..56f55bb 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -3086,6 +3086,14 @@ "request.GetInventoryHistory": { "type": "object", "properties": { + "baseOperationType": { + "description": "鍩虹浣滀笟绫诲瀷", + "allOf": [ + { + "$ref": "#/definitions/constvar.BaseOperationType" + } + ] + }, "keyWord": { "description": "鎼滅储鏉′欢", "type": "string" @@ -3406,6 +3414,10 @@ "description": "鍑哄叆搴搃d", "type": "integer" }, + "productCategoryId": { + "description": "浜у搧绉嶇被id", + "type": "integer" + }, "productId": { "description": "浜у搧id", "type": "string" diff --git a/docs/swagger.json b/docs/swagger.json index aa533b1..03c0a38 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -3074,6 +3074,14 @@ "request.GetInventoryHistory": { "type": "object", "properties": { + "baseOperationType": { + "description": "鍩虹浣滀笟绫诲瀷", + "allOf": [ + { + "$ref": "#/definitions/constvar.BaseOperationType" + } + ] + }, "keyWord": { "description": "鎼滅储鏉′欢", "type": "string" @@ -3394,6 +3402,10 @@ "description": "鍑哄叆搴搃d", "type": "integer" }, + "productCategoryId": { + "description": "浜у搧绉嶇被id", + "type": "integer" + }, "productId": { "description": "浜у搧id", "type": "string" diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 4f54f49..c8df29e 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -820,6 +820,10 @@ type: object request.GetInventoryHistory: properties: + baseOperationType: + allOf: + - $ref: '#/definitions/constvar.BaseOperationType' + description: 鍩虹浣滀笟绫诲瀷 keyWord: description: 鎼滅储鏉′欢 type: string @@ -1044,6 +1048,9 @@ operationId: description: 鍑哄叆搴搃d type: integer + productCategoryId: + description: 浜у搧绉嶇被id + type: integer productId: description: 浜у搧id type: string diff --git a/models/location_product.go b/models/location_product.go index f42e2fe..f737765 100644 --- a/models/location_product.go +++ b/models/location_product.go @@ -85,6 +85,11 @@ return slf } +func (slf *LocationProductSearch) SetAreaId(areaId int) *LocationProductSearch { + slf.AreaId = areaId + return slf +} + func (slf *LocationProductSearch) build() *gorm.DB { var db = slf.Orm.Model(&LocationProduct{}) @@ -119,6 +124,10 @@ if len(slf.LocationIds) > 0 { db = db.Where("location_id in (?)", slf.LocationIds) + } + + if slf.AreaId != 0 { + db = db.Where("area_id = ?", slf.AreaId) } return db @@ -206,3 +215,11 @@ return records, nil } + +func (slf *LocationProductSearch) FirstRes() (*LocationProduct, *gorm.DB) { + var ( + record = new(LocationProduct) + db = slf.build() + ) + return record, db.First(record) +} diff --git a/models/location_product_amount.go b/models/location_product_amount.go index 0700984..00c7b92 100644 --- a/models/location_product_amount.go +++ b/models/location_product_amount.go @@ -11,22 +11,29 @@ type ( LocationProductAmount struct { WmsModel - Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` - LocationProductId int `json:"locationProductId" gorm:"type:int;not null;comment:涓婃灦瑙勫垯id"` //涓婃灦瑙勫垯id - LocationProduct LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"` + Id int `json:"id" gorm:"column:id;primary_key;AUTO_INCREMENT"` + //LocationProductId int `json:"locationProductId" gorm:"type:int;not null;comment:涓婃灦瑙勫垯id"` //涓婃灦瑙勫垯id + //LocationProduct LocationProduct `json:"locationProduct" gorm:"foreignKey:LocationProductId;references:Id"` + LocationId int `json:"locationId" gorm:"type:int;not null;comment:浣嶇疆id"` //浣嶇疆id + Location Location `json:"location" gorm:"foreignKey:LocationId;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"` Amount decimal.Decimal `json:"amount" gorm:"type:decimal(20,2);not null;comment:搴撳瓨鏁伴噺"` //搴撳瓨鏁伴噺 CreateDate string `json:"createDate" gorm:"type:varchar(63);comment:鏃ユ湡"` //鏃ユ湡 } LocationProductAmountSearch struct { LocationProductAmount - Order string - PageNum int - PageSize int - Keyword string - Orm *gorm.DB - Preload bool - LocationProductIds []int + Order string + PageNum int + PageSize int + Keyword string + Orm *gorm.DB + Preload bool + //LocationProductIds []int + LocationIds []int } LocationProductAmountWithOperation struct { @@ -85,13 +92,23 @@ return slf } -func (slf *LocationProductAmountSearch) SetLocationProductId(id int) *LocationProductAmountSearch { - slf.LocationProductId = id +func (slf *LocationProductAmountSearch) SetProductId(productId string) *LocationProductAmountSearch { + slf.ProductId = productId return slf } -func (slf *LocationProductAmountSearch) SetLocationProductIds(ids []int) *LocationProductAmountSearch { - slf.LocationProductIds = ids +func (slf *LocationProductAmountSearch) SetLocationId(locationId int) *LocationProductAmountSearch { + slf.LocationId = locationId + return slf +} + +//func (slf *LocationProductAmountSearch) SetLocationProductIds(ids []int) *LocationProductAmountSearch { +// slf.LocationProductIds = ids +// return slf +//} + +func (slf *LocationProductAmountSearch) SetLocationIds(ids []int) *LocationProductAmountSearch { + slf.LocationIds = ids return slf } @@ -110,13 +127,25 @@ } if slf.Preload { - db = db.Model(&LocationProductAmount{}).Preload("LocationProduct").Preload("LocationProduct.Location").Preload("LocationProduct.Product") + db = db.Model(&LocationProductAmount{}).Preload("Location").Preload("Product").Preload("ProductCategory") } - if slf.LocationProductId != 0 { - db = db.Where("location_product_id=?", slf.LocationProductId) + //if slf.LocationProductId != 0 { + // db = db.Where("location_product_id=?", slf.LocationProductId) + //} + //if len(slf.LocationProductIds) > 0 { + // db = db.Where("location_product_id in (?)", slf.LocationProductIds) + //} + + if len(slf.LocationIds) > 0 { + db = db.Where("location_id in (?)", slf.LocationIds) } - if len(slf.LocationProductIds) > 0 { - db = db.Where("location_product_id in (?)", slf.LocationProductIds) + + if slf.LocationId != 0 { + db = db.Where("location_id = ?", slf.LocationId) + } + + if slf.ProductId != "" { + db = db.Where("product_id=?", slf.ProductId) } return db @@ -204,3 +233,12 @@ return records, nil } + +func (slf *LocationProductAmountSearch) FirstRes() (*LocationProductAmount, *gorm.DB) { + var ( + record = new(LocationProductAmount) + db = slf.build() + ) + + return record, db.First(&record) +} diff --git a/request/location_product_amount.go b/request/location_product_amount.go index d4c4e9d..6b34041 100644 --- a/request/location_product_amount.go +++ b/request/location_product_amount.go @@ -14,12 +14,13 @@ type UpdateLocationProductAmount struct { //LocationProductAmountId int `json:"locationProductAmountId"` //搴撳瓨鐩樼偣id - AdjustAmount decimal.Decimal `json:"adjustAmount" ` //宸�� - DifferenceAmount decimal.Decimal `json:"differenceAmount"` //璁℃暟鏁伴噺 - Amount decimal.Decimal `json:"amount"` //搴撳瓨鏁伴噺 - ProductId string `json:"productId"` //浜у搧id - OperationId int `json:"operationId"` //鍑哄叆搴搃d - LocationId int `json:"locationId"` //浣嶇疆id + AdjustAmount decimal.Decimal `json:"adjustAmount" ` //宸�� + DifferenceAmount decimal.Decimal `json:"differenceAmount"` //璁℃暟鏁伴噺 + Amount decimal.Decimal `json:"amount"` //搴撳瓨鏁伴噺 + ProductId string `json:"productId"` //浜у搧id + OperationId int `json:"operationId"` //鍑哄叆搴搃d + LocationId int `json:"locationId"` //浣嶇疆id + ProductCategoryId int `json:"productCategoryId"` //浜у搧绉嶇被id } type GetRuleList struct { -- Gitblit v1.8.0