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