From 647fd6d88e3e7d4809fecd5b88f3a0f537bc2623 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期二, 16 四月 2024 17:25:39 +0800 Subject: [PATCH] 产品修改字段 --- controllers/report_forms_controller.go | 74 ++++++++++++++++++++++++++----------- 1 files changed, 52 insertions(+), 22 deletions(-) diff --git a/controllers/report_forms_controller.go b/controllers/report_forms_controller.go index 7c57613..1c7bb9a 100644 --- a/controllers/report_forms_controller.go +++ b/controllers/report_forms_controller.go @@ -32,9 +32,33 @@ // @Router /api-wms/v1/forms/getInventoryForms [post] func (slf ReportFormsController) GetInventoryForms(c *gin.Context) { var params request.GetInventoryForms - if err := c.BindJSON(¶ms); err != nil { + err := c.BindJSON(¶ms) + if err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟瑙f瀽澶辫触锛屾暟鎹被鍨嬮敊璇�") return + } + locationIds := make([]int, 0) + productIds := make([]string, 0) + productAmounts := make([]*models.LocationProductAmount, 0) + if params.WarehouseCode != "" { + locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浠撳簱浣嶇疆澶辫触") + return + } + + for _, location := range locations { + locationIds = append(locationIds, location.Id) + } + productAmounts, err = models.NewLocationProductAmountSearch().SetLocationIds(locationIds).SetQuery("amount > 0").Find() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触") + return + } + for _, amount := range productAmounts { + productIds = append(productIds, amount.ProductId) + } + } //鏌ヨ浜у搧 search := models.NewMaterialSearch() @@ -46,6 +70,9 @@ } if params.KeyWord != "" { search.Orm.Where("material.name like ?", "%"+params.KeyWord+"%").Or("wms_product_category.name like ?", "%"+params.KeyWord+"%") + } + if len(productIds) > 0 { + search.Orm.Where("material.id in (?)", productIds) } var ( materials = make([]*models.Material, 0) @@ -63,24 +90,16 @@ return } - locations, err := models.NewLocationSearch().SetJointName(params.WarehouseCode).FindNotTotal() - if err != nil { - util.ResponseFormat(c, code.RequestParamError, "鏌ヨ浠撳簱浣嶇疆澶辫触") - return - } - locationIds := make([]int, 0) - for _, location := range locations { - locationIds = append(locationIds, location.Id) - } //鏌ヨ鍦ㄥ簱鏁伴噺 - productIds := make([]string, 0) - for _, material := range materials { - productIds = append(productIds, material.ID) - } - productAmounts, err := models.NewLocationProductAmountSearch().SetProductIds(productIds).SetLocationIds(locationIds).Find() - if err != nil { - util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触") - return + if len(productIds) == 0 { + for _, material := range materials { + productIds = append(productIds, material.ID) + } + productAmounts, err = models.NewLocationProductAmountSearch().SetProductIds(productIds).SetLocationIds(locationIds).Find() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "鏌ヨ鍦ㄥ簱鏁伴噺澶辫触") + return + } } //鏌ヨ鍑哄叆搴撳氨缁暟閲� @@ -97,8 +116,8 @@ Where("wms_operation.base_operation_type in (?)", []constvar.BaseOperationType{constvar.BaseOperationTypeOutgoing, constvar.BaseOperationTypeInternal, constvar.BaseOperationTypeDisuse}). Where("wms_operation.status in (?)", []constvar.OperationStatus{constvar.OperationStatus_Ready, constvar.OperationStatus_Finish}) if len(locationIds) > 0 { - dbIn.Where("wms_operation.to_location_id in (?)", locationIds) - dbOut.Where("wms_operation.from_location_id in (?)", locationIds) + dbIn.Where("wms_operation_details.to_location_id in (?)", locationIds) + dbOut.Where("wms_operation_details.from_location_id in (?)", locationIds) } if len(productIds) > 0 { dbIn.Where("wms_operation_details.product_id in (?)", productIds) @@ -265,13 +284,23 @@ } detailsSearch.Orm = detailsSearch.Orm.Model(&models.MoveHistory{}). - Select("number, updated_at as date, product_name as product_name, from_location_id," + - "to_location_id, amount, unit, operator as contacted_name, base_operation_type, weight, product_id, from_location, to_location").Order("id desc") + Select("number, updated_at as date, product_name as product_name, from_location_id, operation_id,to_location_id, amount, " + + "unit, operator as contacted_name, base_operation_type, weight, product_id, from_location, to_location, operation_type_name, weight").Order("id desc") if len(ids) > 0 { detailsSearch.Orm = detailsSearch.Orm.Where("id in ?", ids) } if params.BaseOperationType != 0 { detailsSearch.Orm = detailsSearch.Orm.Where("base_operation_type = ?", params.BaseOperationType) + } + var t int64 + err = detailsSearch.Orm.Count(&t).Error + if err != nil { + util.ResponseFormat(c, code.RequestParamError, fmt.Errorf("鏌ヨ鎬绘潯鏁板け璐�: %v", err)) + return + } + total = uint64(t) + if params.Page*params.PageSize > 0 { + detailsSearch.Orm = detailsSearch.Orm.Offset((params.Page - 1) * params.PageSize).Limit(params.PageSize) } err = detailsSearch.Orm.Find(&result).Error if err != nil { @@ -329,6 +358,7 @@ for _, amount := range amounts { var resp response.LocationForms resp.Amount = amount.Amount + resp.LocationId = amount.LocationId resp.LocationName = amount.Location.Name resp.ProduceId = amount.Product.ID resp.ProductName = amount.Product.Name -- Gitblit v1.8.0