| | |
| | | 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" |
| | |
| | | "wms/opa" |
| | | "wms/pkg/logx" |
| | | "wms/pkg/structx" |
| | | "wms/proto/product_inventory" |
| | | "wms/proto/purchase_wms" |
| | | "wms/request" |
| | | ) |
| | | |
| | |
| | | util.ResponseFormat(c, code.Success, "修改成功") |
| | | } |
| | | |
| | | // DeleteDevice |
| | | // Delete |
| | | // |
| | | // @Tags 入库/出库 |
| | | // @Summary 删除入库/出库信息 |
| | |
| | | util.ResponseFormat(c, code.Success, "删除成功") |
| | | } |
| | | |
| | | // DeleteDevice |
| | | // Finish |
| | | // |
| | | // @Tags 入库/出库 |
| | | // @Summary 更改记录状态 |
| | |
| | | locAmount.ProductId = v.ID |
| | | locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05") |
| | | locAmount.Amount = locAmount.Amount.Add(value) |
| | | locAmount.ProductCategoryID = v.CategoryId |
| | | if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { |
| | | return res.Error |
| | | } |
| | |
| | | locAmount.ProductId = v.ID |
| | | locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05") |
| | | locAmount.Amount = locAmount.Amount.Add(value) |
| | | locAmount.ProductCategoryID = v.CategoryId |
| | | if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { |
| | | return res.Error |
| | | } |
| | |
| | | locAmount.ProductId = v.ID |
| | | locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05") |
| | | locAmount.Amount = locAmount.Amount.Add(value) |
| | | locAmount.ProductCategoryID = v.CategoryId |
| | | if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { |
| | | return res.Error |
| | | } |
| | |
| | | if err := tx.Create(&operationInputs).Error; err != nil { |
| | | return err |
| | | } |
| | | } |
| | | if operation.SourceNumber != "" { |
| | | go UpdatePurchaseStatus(operation.SourceNumber) |
| | | } |
| | | |
| | | } |
| | |
| | | if err := models.NewLocationProductAmountSearch().SetID(locAmount.Id).Update(locAmount); err != nil { |
| | | return err |
| | | } |
| | | } |
| | | if operation.SourceNumber != "" { |
| | | go UpdateSalesDetailStatus(operation.SourceNumber) |
| | | } |
| | | } |
| | | |
| | |
| | | locAmount.ProductId = v.ID |
| | | locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05") |
| | | locAmount.Amount = locAmount.Amount.Add(value) |
| | | locAmount.ProductCategoryID = v.CategoryId |
| | | if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { |
| | | return res.Error |
| | | } |
| | |
| | | locAmount.ProductId = v.ID |
| | | locAmount.CreateDate = time.Now().Format("2006-01-02 15:04:05") |
| | | locAmount.Amount = locAmount.Amount.Add(value) |
| | | locAmount.ProductCategoryID = v.CategoryId |
| | | if res := models.NewLocationProductAmountSearch().Orm.Where("id=?", locAmount.ID).Save(locAmount); res.Error != nil { |
| | | return res.Error |
| | | } |
| | |
| | | util.ResponseFormat(c, code.RequestError, err.Error()) |
| | | return |
| | | } |
| | | |
| | | util.ResponseFormat(c, code.Success, "操作成功") |
| | | } |
| | | |
| | | // listTransfer |
| | | var ( |
| | | ProductInventoryServiceConn *grpc.ClientConn |
| | | PurchaseServiceConn *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 |
| | | } |
| | | PurchaseServiceConn, err = grpc.Dial(conf.GrpcServerConf.SrmAddr, 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() |
| | | } |
| | | if PurchaseServiceConn != nil { |
| | | PurchaseServiceConn.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) |
| | | } |
| | | } |
| | | |
| | | func UpdatePurchaseStatus(number string) { |
| | | client := purchase_wms.NewPurchaseServiceClient(PurchaseServiceConn) |
| | | _, err := client.UpdatePurchaseStatus(context.Background(), &purchase_wms.UpdatePurchaseStatusRequest{Number: number}) |
| | | if err != nil { |
| | | logx.Errorf("grpc dial UpdatePurchaseStatus service error: %v", err) |
| | | } |
| | | } |
| | | |
| | | // ListTransfer |
| | | // @Tags 入库/出库 |
| | | // @Summary 库存调拨列表 |
| | | // @Produce application/json |
| | |
| | | } |
| | | 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) |
| | | } |
| | | |
| | | // Cancel |
| | | // |
| | | // @Tags 入库/出库 |
| | | // @Summary 取消 |
| | | // @Produce application/json |
| | | // @Param id path int true "id" |
| | | // @Success 200 {object} util.Response "成功" |
| | | // @Router /api-wms/v1/operation/cancel/{id} [put] |
| | | func (slf OperationController) Cancel(c *gin.Context) { |
| | | id, err := strconv.Atoi(c.Param("id")) |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "错误的id值") |
| | | return |
| | | } |
| | | if id == 0 { |
| | | util.ResponseFormat(c, code.RequestParamError, "id为0") |
| | | return |
| | | } |
| | | operation, err := models.NewOperationSearch().SetPreload(true).SetID(id).First() |
| | | if err != nil { |
| | | util.ResponseFormat(c, code.RequestParamError, "未找到相关出入库信息:"+err.Error()) |
| | | return |
| | | } |
| | | if operation.Status != constvar.OperationStatus_Ready { |
| | | util.ResponseFormat(c, code.RequestError, "该出入库信息无法取消") |
| | | return |
| | | } |
| | | operation.Status = constvar.OperationStatus_Cancel |
| | | if err := models.NewOperationSearch().SetID(operation.Id).Save(operation); err != nil { |
| | | util.ResponseFormat(c, code.SaveFail, err.Error()) |
| | | return |
| | | } |
| | | util.ResponseFormat(c, code.Success, "操作成功") |
| | | } |