From 9b60ddba27ef778419da5089e3b30ebe173afd7d Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期五, 28 六月 2024 14:24:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/jialian' into jialian --- controllers/operation.go | 60 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 42 insertions(+), 18 deletions(-) diff --git a/controllers/operation.go b/controllers/operation.go index 2cc1671..e174c67 100644 --- a/controllers/operation.go +++ b/controllers/operation.go @@ -72,17 +72,28 @@ util.ResponseFormat(c, code.RequestParamError, "鏄庣粏涓笉鑳藉瓨鍦ㄩ噸澶嶇殑浜у搧") return } - - operationType, err := models.NewOperationTypeSearch().SetID(uint(params.OperationTypeId)).First() - if err != nil { - util.ResponseFormat(c, code.RequestParamError, err.Error()) - return + var operationType *models.OperationType + var err error + if params.OperationTypeId == 0 { + operationType, err = models.NewOperationTypeSearch().SetWarehouseId(params.WarehouseId).SetBaseOperationType(params.BaseOperationType).First() + if err != nil || params.WarehouseId != operationType.WarehouseId { + util.ResponseFormat(c, code.RequestParamError, "鍙傛暟缂哄け") + return + } + } else { + operationType, err = models.NewOperationTypeSearch().SetID(uint(params.OperationTypeId)).First() + if err != nil { + util.ResponseFormat(c, code.RequestParamError, err.Error()) + return + } } + userInfo := middleware.GetUserInfo(c) params.CreatedBy = userInfo.Username params.Status = constvar.OperationStatus_Ready //params.Number = strconv.FormatInt(time.Now().Unix(), 10) params.BaseOperationType = operationType.BaseOperationType + params.WarehouseId = operationType.WarehouseId var numberNum int64 if err := mysqlx.GetDB().Model(&models.Operation{}).Where("number=?", params.Number).Count(&numberNum).Error; err != nil { @@ -191,7 +202,13 @@ } if params.OperationTypeId == 0 && int(params.BaseOperationType) == 0 { - return errors.New("鏈瘑鍒璁板綍绫诲瀷") + return errors.New("鏈瘑鍒璁板綍绫诲瀷1") + } + + if params.BaseOperationType != 0 { + if params.WarehouseId == 0 { + return errors.New("鏈瘑鍒璁板綍绫诲瀷2") + } } if params.OperationDate == "" { @@ -282,7 +299,9 @@ costMap[material.ID] = material.Cost salePriceMap[material.ID] = material.SalePrice } - list, total, err := search.SetOperationTypeId(params.OperationTypeId).SetPreload(true).SetOrder("created_at desc").Find() + list, total, err := search.SetOperationTypeId(params.OperationTypeId). + SetBaseOperationType(params.BaseOperationType). + SetPreload(true).SetOrder("created_at desc").Find() if err != nil { util.ResponseFormat(c, code.RequestError, "鏌ユ壘澶辫触:"+err.Error()) return @@ -303,8 +322,8 @@ if !params.PageInfo.Check() { return errors.New("鏁版嵁鍒嗛〉淇℃伅閿欒") } - if params.OperationTypeId == 0 { - return errors.New("operationTypeId涓�0") + if params.OperationTypeId == 0 && params.BaseOperationType == 0 { + return errors.New("operationTypeId鍜宐aseOperationType涓嶈兘鍚屾椂涓�0") } return nil } @@ -1002,8 +1021,8 @@ sheet := "Sheet1" f.SetCellValue(sheet, "A2", "鍗曚綅(閮ㄩ棬):"+operation.CompanyName) // 鍗曚綅閮ㄩ棬 - f.SetCellValue(sheet, "H2", operation.OperationDate) // 鏃堕棿 - f.SetCellValue(sheet, "O2", operation.Number) // 缂栧彿 + f.SetCellValue(sheet, "J2", operation.OperationDate) // 鏃堕棿 + f.SetCellValue(sheet, "Q2", operation.Number) // 缂栧彿 totalAmount := decimal.NewFromInt(0) // 鎬婚噾棰� totalPrice := decimal.NewFromInt(0) // 鎬讳环 @@ -1013,14 +1032,19 @@ if i > 9 { break } - f.SetCellValue(sheet, "A"+strconv.Itoa(rowIndex), v.Product.Name) // 浜у搧鍚嶇О - f.SetCellValue(sheet, "B"+strconv.Itoa(rowIndex), v.Product.Specs) //瑙勬牸 - f.SetCellValue(sheet, "C"+strconv.Itoa(rowIndex), v.TotalGrossWeight.String()) //閲嶉噺 - f.SetCellValue(sheet, "D"+strconv.Itoa(rowIndex), v.Amount.String()) //鏁伴噺 - f.SetCellValue(sheet, "E"+strconv.Itoa(rowIndex), v.AuxiliaryAmount.String()) //杈呭姪鏁伴噺 - f.SetCellValue(sheet, "F"+strconv.Itoa(rowIndex), v.AuxiliaryUnit) //杈呭姪鍗曚綅 + f.SetCellValue(sheet, "A"+strconv.Itoa(rowIndex), v.Product.Name) // 鍝佸悕 + f.SetCellValue(sheet, "B"+strconv.Itoa(rowIndex), v.Product.Type) // 鍨嬪彿 + f.SetCellValue(sheet, "C"+strconv.Itoa(rowIndex), v.Product.Unit) // 鍗曚綅 + f.SetCellValue(sheet, "D"+strconv.Itoa(rowIndex), v.Amount.String()) // 鏁伴噺 + unit := service.CreateMoreUnit(v.Amount, v.Product.MoreUnitList) + for _, v1 := range unit { + if !v1.Amount.IsZero() { + f.SetCellValue(sheet, "E"+strconv.Itoa(rowIndex), v1.Amount) // 杈呮暟閲� + f.SetCellValue(sheet, "F"+strconv.Itoa(rowIndex), v1.Unit) // 杈呭崟浣� + break + } + } f.SetCellValue(sheet, "G"+strconv.Itoa(rowIndex), v.Product.SalePrice.String()) // 鍗曚环 - // 閲戦 if !v.Product.SalePrice.IsZero() { ap := v.Amount.Mul(v.Product.SalePrice) -- Gitblit v1.8.0