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 | 62 +++++++++++++++++++++++++++++++ 1 files changed, 62 insertions(+), 0 deletions(-) diff --git a/service/more_units.go b/service/more_units.go index 729ce4a..7343b9b 100644 --- a/service/more_units.go +++ b/service/more_units.go @@ -11,11 +11,58 @@ func CreateMoreUnit(amount decimal.Decimal, units []models.UnitItems) []models.UnitItems { moreValueArr := make([]models.UnitItems, 0, len(units)) for _, unitItem := range units { + if unitItem.Amount.IsZero() { + continue + } moreValueArr = append(moreValueArr, models.UnitItems{ Amount: amount.Div(unitItem.Amount), Unit: unitItem.Unit, Floating: unitItem.Floating, }) + } + 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 } @@ -85,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