From 34de248a46755b2309f5ac8e95261c25fe1e210d Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 30 七月 2024 19:12:47 +0800 Subject: [PATCH] 月度报表多单位使用动态表头及相应调整 --- service/more_units.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 59 insertions(+), 0 deletions(-) diff --git a/service/more_units.go b/service/more_units.go index 5abdb09..7343b9b 100644 --- a/service/more_units.go +++ b/service/more_units.go @@ -23,6 +23,50 @@ return moreValueArr } +func AddMoreUnit(units []models.UnitItems, units2 []models.UnitItems) []models.UnitItems { + moreValueArr := make([]models.UnitItems, 0, len(units)) + for _, unitItem1 := range units { + for _, unitItem2 := range units2 { + if unitItem1.Unit == unitItem2.Unit { + moreValueArr = append(moreValueArr, models.UnitItems{ + Amount: unitItem1.Amount.Add(unitItem2.Amount), + Unit: unitItem1.Unit, + Floating: unitItem1.Floating, + }) + } + } + } + return moreValueArr +} + +// MoreUnitIsEnough 澶氬崟浣嶅簱瀛樻槸鍚﹁冻澶� +func MoreUnitIsEnough(units []models.UnitItems, units2 []models.UnitItems) bool { + for _, unitItem1 := range units { + for _, unitItem2 := range units2 { + if unitItem1.Amount.LessThan(unitItem2.Amount) { + return false + } + } + } + return true +} + +func SubMoreUnit(units []models.UnitItems, units2 []models.UnitItems) []models.UnitItems { + moreValueArr := make([]models.UnitItems, 0, len(units)) + for _, unitItem1 := range units { + for _, unitItem2 := range units2 { + if unitItem1.Unit == unitItem2.Unit { + moreValueArr = append(moreValueArr, models.UnitItems{ + Amount: unitItem1.Amount.Sub(unitItem2.Amount), + Unit: unitItem1.Unit, + Floating: unitItem1.Floating, + }) + } + } + } + return moreValueArr +} + func FillMoreUnitToExcel(amount decimal.Decimal, units []models.UnitItems, startIndex int, column int, f *excelize.File) { columnStr := strconv.Itoa(column) for _, v := range units { @@ -88,3 +132,18 @@ } return f.NewStyle(style) } + +func GetAllUnits() (allUnits []string, unitIndexMap map[string]int) { + units, err := models.NewUnitDictSearch().FindNotTotal() + allUnits = make([]string, 0, len(units)) + unitIndexMap = make(map[string]int) + if err != nil { + return + } + + for k, v := range units { + allUnits = append(allUnits, v.Name) + unitIndexMap[v.Name] = k + } + return +} -- Gitblit v1.8.0