From 9db65d2bb4937a1bdc6bfdb683479f33c2e37f3a Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 15 六月 2024 10:20:32 +0800 Subject: [PATCH] fix --- controllers/product_controller.go | 127 +++++++++++++++++++++++++++++------------- 1 files changed, 87 insertions(+), 40 deletions(-) diff --git a/controllers/product_controller.go b/controllers/product_controller.go index 9539f60..3e9ea0c 100644 --- a/controllers/product_controller.go +++ b/controllers/product_controller.go @@ -53,22 +53,40 @@ return } //params.ID = utils.GetUUID() - err := models.NewMaterialSearch().Create(¶ms) + + err := models.WithTransaction(func(tx *gorm.DB) error { + if err := models.NewMaterialSearch().SetOrm(tx).Create(¶ms); err != nil { + return err + } + materialAttachmentList := []*models.MaterialAttachment{} + for _, v := range params.AttachmentIDs { + ma := &models.MaterialAttachment{MaterialID: params.ID, AttachmentID: v} + materialAttachmentList = append(materialAttachmentList, ma) + } + if len(materialAttachmentList) > 0 { + if err := models.NewMaterialAttachmentSearch().SetOrm(tx).CreateBatch(materialAttachmentList); err != nil { + return err + } + } + avs := make([]*models.AttributeValue, 0) + for _, v := range params.Attributes { + av := models.AttributeValue{ + Model: gorm.Model{}, + EntityID: params.ID, + AttributeID: v.ID, + Value: v.Value, + } + avs = append(avs, &av) + + } + if err := models.NewAttributeValueSearch().SetOrm(tx).CreateBatch(avs); err != nil { + return err + } + return nil + }) if err != nil { util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅淇濆瓨澶辫触") return - } - - materialAttachmentList := []*models.MaterialAttachment{} - for _, v := range params.AttachmentIDs { - ma := &models.MaterialAttachment{MaterialID: params.ID, AttachmentID: v} - materialAttachmentList = append(materialAttachmentList, ma) - } - if len(materialAttachmentList) > 0 { - if err := models.NewMaterialAttachmentSearch().CreateBatch(materialAttachmentList); err != nil { - util.ResponseFormat(c, code.SaveFail, "闄勪欢淇濆瓨澶辫触") - return - } } util.ResponseFormat(c, code.Success, "淇濆瓨鎴愬姛") @@ -216,38 +234,64 @@ util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅鏇存柊澶辫触") return } - - //鏇存柊鍦ㄥ簱鐨勪骇鍝佺被鍨� - if params.CategoryId > 0 { - find, _ := models.NewLocationProductAmountSearch().SetProductId(params.ID).Find() - if len(find) > 0 { - var ids []int - for _, f := range find { - if f.ProductCategoryID != params.CategoryId { - ids = append(ids, f.Id) + err = models.WithTransaction(func(tx *gorm.DB) error { + //鏇存柊鍦ㄥ簱鐨勪骇鍝佺被鍨� + if params.CategoryId > 0 { + find, _ := models.NewLocationProductAmountSearch().SetProductId(params.ID).Find() + if len(find) > 0 { + var ids []int + for _, f := range find { + if f.ProductCategoryID != params.CategoryId { + ids = append(ids, f.Id) + } } + m := make(map[string]interface{}) + m["productCategoryId"] = params.CategoryId + _ = models.NewLocationProductAmountSearch().SetOrm(tx).SetIds(ids).UpdateByMap(m) } - m := make(map[string]interface{}) - m["productCategoryId"] = params.CategoryId - _ = models.NewLocationProductAmountSearch().SetIds(ids).UpdateByMap(m) } - } + materialAttachmentList := []*models.MaterialAttachment{} + for _, v := range params.AttachmentIDs { + ma := &models.MaterialAttachment{MaterialID: params.ID, AttachmentID: v} + materialAttachmentList = append(materialAttachmentList, ma) + } + if err := models.NewMaterialAttachmentSearch().SetOrm(tx).SetMaterialID(params.ID).Delete(); err != nil { + util.ResponseFormat(c, code.RequestParamError, "浜у搧闄勪欢娓呴櫎澶辫触") + return err + } + if len(materialAttachmentList) > 0 { + if err := models.NewMaterialAttachmentSearch().SetOrm(tx).CreateBatch(materialAttachmentList); err != nil { + util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅鏇存柊澶辫触") + return err + } + } - materialAttachmentList := []*models.MaterialAttachment{} - for _, v := range params.AttachmentIDs { - ma := &models.MaterialAttachment{MaterialID: params.ID, AttachmentID: v} - materialAttachmentList = append(materialAttachmentList, ma) - } - if err := models.NewMaterialAttachmentSearch().SetMaterialID(params.ID).Delete(); err != nil { - util.ResponseFormat(c, code.RequestParamError, "浜у搧闄勪欢娓呴櫎澶辫触") + attributeValueSearch := models.NewAttributeValueSearch() + //鍒犻櫎浠庢柊鎻掑叆 + if err := attributeValueSearch.SetOrm(tx).SetEntityID(params.ID).Delete(); err != nil { + return err + } + avs := make([]*models.AttributeValue, 0) + for _, v := range params.Attributes { + av := models.AttributeValue{ + Model: gorm.Model{}, + EntityID: params.ID, + AttributeID: v.ID, + Value: v.Value, + } + avs = append(avs, &av) + + } + if err := models.NewAttributeValueSearch().SetOrm(tx).CreateBatch(avs); err != nil { + return err + } + return nil + }) + if err != nil { + util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅鏇存柊澶辫触") return } - if len(materialAttachmentList) > 0 { - if err := models.NewMaterialAttachmentSearch().CreateBatch(materialAttachmentList); err != nil { - util.ResponseFormat(c, code.RequestParamError, "浜у搧淇℃伅鏇存柊澶辫触") - return - } - } + util.ResponseFormat(c, code.Success, "鏇存柊鎴愬姛") } @@ -510,7 +554,10 @@ db := models.NewOperationSearch().Orm. Table("wms_operation"). - Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation_details.from_location_id,wms_operation_details.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,material.name as product_name,material.unit,wms_operation_details.amount,wms_operation.base_operation_type"). + Select("wms_operation.id,wms_operation.number,wms_operation.source_number,wms_operation.status,wms_operation_details.from_location_id,"+ + "wms_operation_details.to_location_id,wms_operation.operation_date,wms_operation.contacter_id,wms_operation.contacter_name,"+ + "wms_operation.company_id,wms_operation.company_name,wms_operation.comment,wms_operation_details.product_id,"+ + "material.name as product_name,material.unit,wms_operation_details.amount,wms_operation.base_operation_type"). InnerJoins("inner join wms_operation_details on wms_operation_details.operation_id=wms_operation.id"). InnerJoins("inner join material on material.id=wms_operation_details.product_id"). Where("wms_operation.base_operation_type=?", constvar.BaseOperationTypeDisuse) -- Gitblit v1.8.0