From 38c6f7308c1dd22a8ea286c3ea1de3a4e714f78f Mon Sep 17 00:00:00 2001 From: yinbentan <yinbentan@live.com> Date: 星期五, 02 八月 2024 16:44:51 +0800 Subject: [PATCH] BUG修复,新的工资计算方式添加遗漏的“考勤及补贴数据”(工作日加班时长、休息日加班时长、带徒天数、满勤奖、请假天数、工龄) --- utils/timex.go | 27 ++++++++++++++++++++++++++- 1 files changed, 26 insertions(+), 1 deletions(-) diff --git a/utils/timex.go b/utils/timex.go index 98ca7b1..75ac954 100644 --- a/utils/timex.go +++ b/utils/timex.go @@ -1,6 +1,9 @@ package utils -import "time" +import ( + "slices" + "time" +) // IsOverlap 鍒ゆ柇涓や釜鏃堕棿娈垫槸鍚︽湁閲嶅彔 func IsOverlap(start1, end1, start2, end2 string) bool { @@ -22,6 +25,10 @@ return time.Now().AddDate(0, offset, 0) } +func GetDayByOffset(offset int) time.Time { + return time.Now().AddDate(0, 0, offset) +} + // GetLastMonthPeriod 杩斿洖涓婁釜鏈堢殑鏈堝垵鏃堕棿鍜屾湀鏈椂闂� func GetLastMonthPeriod(now time.Time) (firstDay time.Time, lastDay time.Time) { // 鑾峰彇鏈釜鏈堢殑绗竴澶╃殑鏃ユ湡锛堝嵆鏈湀鏈堝垵锛� @@ -40,3 +47,21 @@ func GetMonthDuration(d time.Time) (duration int) { return d.AddDate(0, 1, -1).Day() } + +func CalcWorkHour(begin, end time.Time, dayOff []time.Weekday, cellHour float32) (workHour float32, workingCount int) { + var currentTime = begin + for { + if currentTime.After(end) { + break + } + if slices.Contains(dayOff, currentTime.Weekday()) { + // nothing + } else { + workHour += cellHour + workingCount++ + } + currentTime = currentTime.AddDate(0, 0, 1) // .Add(24 * time.Hour) + } + + return float32(workHour), workingCount +} -- Gitblit v1.8.0