From 3f4f2d033f63296ad7e80415cfe2af41f136bfc0 Mon Sep 17 00:00:00 2001
From: jiangshuai <291802688@qq.com>
Date: 星期一, 13 十一月 2023 11:18:53 +0800
Subject: [PATCH] 修改文件服务器端口号
---
controllers/operation.go | 269 +++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 235 insertions(+), 34 deletions(-)
diff --git a/controllers/operation.go b/controllers/operation.go
index 3b435f6..08031a9 100644
--- a/controllers/operation.go
+++ b/controllers/operation.go
@@ -1,16 +1,20 @@
package controllers
import (
+ "context"
"encoding/json"
"errors"
"fmt"
"github.com/gin-gonic/gin"
"github.com/shopspring/decimal"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials/insecure"
"gorm.io/gorm"
"os"
"sort"
"strconv"
"time"
+ "wms/conf"
"wms/constvar"
"wms/extend/code"
"wms/extend/util"
@@ -18,6 +22,7 @@
"wms/opa"
"wms/pkg/logx"
"wms/pkg/structx"
+ "wms/proto/product_inventory"
"wms/request"
)
@@ -74,7 +79,7 @@
}
func CheckDetailsRepeat(details []*models.OperationDetails) bool {
- detailIDs := []string{}
+ var detailIDs []string
var tempID string
for _, v := range details {
detailIDs = append(detailIDs, v.ProductId)
@@ -257,7 +262,7 @@
util.ResponseFormat(c, code.Success, "淇敼鎴愬姛")
}
-// DeleteDevice
+// Delete
//
// @Tags 鍏ュ簱/鍑哄簱
// @Summary 鍒犻櫎鍏ュ簱/鍑哄簱淇℃伅
@@ -299,7 +304,7 @@
util.ResponseFormat(c, code.Success, "鍒犻櫎鎴愬姛")
}
-// DeleteDevice
+// Finish
//
// @Tags 鍏ュ簱/鍑哄簱
// @Summary 鏇存敼璁板綍鐘舵��
@@ -349,7 +354,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 +370,7 @@
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return err
}
+
if err == nil {
operationTransfer := &models.Operation{
Number: operation.Number,
@@ -382,20 +388,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 +416,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 +532,9 @@
}
}
}
+
if operation.BaseOperationType == constvar.BaseOperationTypeInternal {
+ var operationInputs []*models.Operation
for _, v := range listProdt {
value, ok := mapProdt[v.ID]
if !ok {
@@ -511,15 +559,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
}
}
@@ -529,10 +684,41 @@
util.ResponseFormat(c, code.RequestError, err.Error())
return
}
+ if operation.SourceNumber != "" {
+ go UpdateSalesDetailStatus(operation.SourceNumber)
+ }
util.ResponseFormat(c, code.Success, "鎿嶄綔鎴愬姛")
}
-// listTransfer
+var ProductInventoryServiceConn *grpc.ClientConn
+
+func InitProductInventoryServiceConn() {
+ var err error
+ ProductInventoryServiceConn, err = grpc.Dial(conf.GrpcServerConf.CrmAddr, grpc.WithTransportCredentials(insecure.NewCredentials()))
+ if err != nil {
+ logx.Errorf("grpc dial product service error: %v", err.Error())
+ return
+ }
+}
+
+func CloseProductInventoryServiceConn() {
+ if ProductInventoryServiceConn != nil {
+ ProductInventoryServiceConn.Close()
+ }
+}
+
+func UpdateSalesDetailStatus(number string) {
+ client := product_inventory.NewProductInventoryServiceClient(ProductInventoryServiceConn)
+ _, err := client.UpdateSalesDetailStatus(context.Background(), &product_inventory.UpdateSalesDetailStatusRequest{
+ Number: number,
+ SalesDetailStatus: "宸插嚭搴�",
+ })
+ if err != nil {
+ logx.Errorf("grpc dial UpdateSalesDetailStatus service error: %v", err)
+ }
+}
+
+// ListTransfer
// @Tags 鍏ュ簱/鍑哄簱
// @Summary 搴撳瓨璋冩嫧鍒楄〃
// @Produce application/json
@@ -562,3 +748,18 @@
}
util.ResponseFormatListWithPage(c, code.Success, list, int(total), params.Page, params.PageSize)
}
+
+// GetLogisticCompanyList
+// @Tags 鍏ュ簱/鍑哄簱
+// @Summary 鑾峰彇鐗╂祦鍏徃鍒楄〃
+// @Produce application/json
+// @Success 200 {object} util.ResponseList{data=[]models.LogisticCompany} "鎴愬姛"
+// @Router /api-wms/v1/operation/getLogisticCompanyList [get]
+func (slf OperationController) GetLogisticCompanyList(c *gin.Context) {
+ companies, err := models.NewLogisticCompanySearch().FindNotTotal()
+ if err != nil {
+ util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error())
+ return
+ }
+ util.ResponseFormat(c, code.Success, companies)
+}
--
Gitblit v1.8.0