From 0eac8cd498471e510c1887a914e6e28d1dfb4b19 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期二, 31 十月 2023 11:54:49 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/aps/WMS --- controllers/operation.go | 212 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 181 insertions(+), 31 deletions(-) diff --git a/controllers/operation.go b/controllers/operation.go index 3b435f6..5bd16ef 100644 --- a/controllers/operation.go +++ b/controllers/operation.go @@ -74,7 +74,7 @@ } func CheckDetailsRepeat(details []*models.OperationDetails) bool { - detailIDs := []string{} + var detailIDs []string var tempID string for _, v := range details { detailIDs = append(detailIDs, v.ProductId) @@ -349,7 +349,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 { @@ -365,6 +365,7 @@ if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { return err } + if err == nil { operationTransfer := &models.Operation{ Number: operation.Number, @@ -382,20 +383,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) @@ -420,20 +411,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 + } } } } @@ -486,7 +527,9 @@ } } } + if operation.BaseOperationType == constvar.BaseOperationTypeInternal { + var operationInputs []*models.Operation for _, v := range listProdt { value, ok := mapProdt[v.ID] if !ok { @@ -511,15 +554,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 } } -- Gitblit v1.8.0