From 2f856eaa7e46c884f1cb7ad721919a086d7f34a3 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 13 六月 2024 15:57:45 +0800 Subject: [PATCH] 出入库明细列表和报表增加多单位 --- service/history_forms.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 48 insertions(+), 10 deletions(-) diff --git a/service/history_forms.go b/service/history_forms.go index 14e212e..02b27bf 100644 --- a/service/history_forms.go +++ b/service/history_forms.go @@ -19,6 +19,7 @@ func (slf *HistoryFormsService) Query(params request.GetInventoryHistory) (result []*response.InventoryHistory, err error) { search, err := slf.BuildSearch(params) + search = search.SetPreload(true) if err != nil { return nil, err } @@ -27,7 +28,33 @@ search = search.SetPage(params.Page, params.PageSize) } result = make([]*response.InventoryHistory, 0, params.PageSize) - err = search.FindAs(&result) + list, err := search.FindNotTotal() + + for _, v := range list { + data := &response.InventoryHistory{ + Number: v.Number, + Date: v.UpdatedAt, + ProductName: v.ProductName, + FromLocation: v.FromLocation, + ToLocation: v.ToLocation, + Amount: v.Amount, + AmountMoreUnits: nil, + Unit: v.Unit, + ContactedName: v.Operator, + BaseOperationType: v.BaseOperationType, + Weight: v.Weight, + ProductId: v.ProductId, + FromLocationId: v.FromLocationId, + ToLocationId: v.ToLocationId, + OperationId: v.OperationId, + OperationTypeName: v.OperationTypeName, + } + moreUnit := v.Product.MoreUnit + if moreUnit != nil && *moreUnit { + data.AmountMoreUnits = CreateMoreUnit(v.Amount, v.Product.MoreUnitList) + } + result = append(result, data) + } return result, nil } @@ -48,8 +75,8 @@ } search.Orm = search.Orm.Model(&models.MoveHistory{}). - Select("number, updated_at as date, product_name as product_name, from_location_id, operation_id,to_location_id, amount, " + - "unit, operator as contacted_name, base_operation_type, weight, product_id, from_location, to_location, operation_type_name, weight").Order("id desc") + Select("number, updated_at, product_name, from_location_id, operation_id,to_location_id, amount, " + + "unit, operator, base_operation_type, weight, product_id, from_location, to_location, operation_type_name, weight").Order("id desc") if len(ids) > 0 { search.Orm = search.Orm.Where("id in ?", ids) } @@ -96,16 +123,26 @@ f := excelize.NewFile() // 鑷畾涔夎〃澶� - headers := []string{"鏃ユ湡", "鍗曞彿", "浜у搧", "浜у搧缂栫爜", "涓氬姟绫诲瀷", "浠�", "鑷�", "鏁伴噺", "鍗曚綅", "閲嶉噺"} + headers := []interface{}{"鏃ユ湡", "鍗曞彿", "浜у搧", "浜у搧缂栫爜", "涓氬姟绫诲瀷", "浠�", "鑷�", map[string][]string{"鏁伴噺": {"浠�", "鍖�", "绫�", "閲嶉噺"}}, "鍗曚綅", "閲嶉噺"} // 璁剧疆琛ㄥご - for i, header := range headers { - cell := getColumnAlphabet(i) + "1" - f.SetCellValue("Sheet1", cell, header) + if err := SetExcelHeader(headers, f); err != nil { + return "", err } + style, err := SetHeaderStyle(f) + if err != nil { + return "", err + } + + lastColumn := getColumnAlphabet(13) + f.SetCellStyle("Sheet1", "A1", lastColumn+"2", style) + // 璁剧疆鍒楀 + f.SetColWidth("Sheet1", "A", "G", 30) + f.SetColWidth("Sheet1", "H", "K", 15) + for i, v := range dataList { - column := strconv.Itoa(i + 2) + column := strconv.Itoa(i + 3) f.SetCellValue("Sheet1", "A"+column, v.Date.Format("2006-01-02")) f.SetCellValue("Sheet1", "B"+column, v.Number) f.SetCellValue("Sheet1", "C"+column, v.ProductName) @@ -114,8 +151,9 @@ f.SetCellValue("Sheet1", "F"+column, v.FromLocation) f.SetCellValue("Sheet1", "G"+column, v.ToLocation) f.SetCellValue("Sheet1", "H"+column, v.Amount) - f.SetCellValue("Sheet1", "I"+column, v.Unit) - f.SetCellValue("Sheet1", "J"+column, v.Weight) + FillMoreUnitToExcel(v.Amount, v.AmountMoreUnits, 7, i+3, f) + f.SetCellValue("Sheet1", "L"+column, v.Unit) + f.SetCellValue("Sheet1", "M"+column, v.Weight) } if params.BaseOperationType == constvar.BaseOperationTypeIncoming { -- Gitblit v1.8.0