|
@@ -67,6 +67,11 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
|
|
|
_result.Msg = string.Empty;
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
foreach (var pm_wsInfo in pm_WageSheetDattaSources)
|
|
|
{
|
|
|
string itemName = userNames.Where(it => it.Id == pm_wsInfo.UserId).FirstOrDefault().CnName;
|
|
@@ -251,7 +256,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
SubTypeId = leaveType,
|
|
|
SubType = typeName,
|
|
|
- StartTimeDt = Convert.ToDateTime( date_Range.new_begin_dt.ToString("yyyy-MM-dd HH:mm:ss")),
|
|
|
+ StartTimeDt = Convert.ToDateTime(date_Range.new_begin_dt.ToString("yyyy-MM-dd HH:mm:ss")),
|
|
|
EndTimeDt = Convert.ToDateTime(date_Range.new_end_dt.ToString("yyyy-MM-dd HH:mm:ss")),
|
|
|
Duration = new_duration,
|
|
|
Deduction = thisTypeDeduction,
|
|
@@ -274,7 +279,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
Ex_Items ex_Items_dk = new Ex_Items() { Type = "打卡" };
|
|
|
List<Ex_Item> ex_Item_Infos = new List<Ex_Item>();
|
|
|
#region 打卡补卡 补卡次数 处理
|
|
@@ -299,6 +303,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
|
SubTypeId = 7,
|
|
|
SubType = "补卡次数",
|
|
|
+ Duration = reissueCardNum,
|
|
|
Deduction = reissuecard_deduction,
|
|
|
Reason = "补卡:员工发现自己漏打卡时,需及时提起补卡申请,并说明情况。试用期员工每月有 2 次\r\n补卡机会,超过 2 次不足 5 次的部分,按 10 元/次处罚,5 次及以上的漏卡,按 50 元/次处罚;正式员工每月 3 次以内的补卡,按 10 元/次处罚,3 次及以上的漏卡,按 50 元/次处罚。\r\n补卡路径为:企微-工作台-审批-打卡补卡。",
|
|
|
unit = string.Empty
|
|
@@ -336,7 +341,6 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
CheckInDataView checkInDataView = new CheckInDataView();
|
|
|
checkInDataView = await _qiYeWeChatApiService.GetCheckinDataAsync(new List<string>() { acctid },3,startDt,endDt);
|
|
@@ -376,225 +380,160 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
if (pullcard_checkInDataInfos.Count > 0)
|
|
|
{
|
|
|
-
|
|
|
-
|
|
|
- #region 打卡异常处理 统计 1-迟到;2-早退;3-缺卡;4-旷工;5-地点异常;6-设备异常;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- #endregion
|
|
|
-
|
|
|
foreach (var pc_ex_item in pullcard_checkInDataInfos)
|
|
|
{
|
|
|
|
|
|
- CheckInDayDataView checkInDayDataView = await _qiYeWeChatApiService.GetCheckInDayDataAsync(new List<string>() { acctid },startDt,endDt);
|
|
|
+
|
|
|
|
|
|
- if (checkInDayDataView.errcode != 0)
|
|
|
- {
|
|
|
- _result.Msg += startDt + " - " + endDt + " " + itemName + " 异常信息数据获取未获取到!\r\n";
|
|
|
- continue;
|
|
|
- }
|
|
|
- List<Root> roots_words= checkInDayDataView.datas.Where(it => it.base_info.day_type == 0).ToList();
|
|
|
- List<Root> roots_exs = checkInDayDataView.datas.Where(it => it.exception_infos.Count > 0).ToList();
|
|
|
- Root roots_ex = roots_exs.Where(it => it.base_info.dateDt == pc_ex_item.sch_checkin_time_dt).FirstOrDefault();
|
|
|
- if (roots_ex != null) {
|
|
|
- List<Exception_infos> exception_infos = roots_ex.exception_infos;
|
|
|
+
|
|
|
|
|
|
- List<Exception_infos> exception_infos1 = checkInDayDataView.datas[29].exception_infos;
|
|
|
- string exc_type = pc_ex_item.exception_type;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
- if (exc_type.Contains("时间异常") || exc_type.Contains("未打卡"))
|
|
|
- {
|
|
|
- int day_time_minute = (60 * 7) + 30;
|
|
|
+
|
|
|
+ string exc_type = pc_ex_item.exception_type;
|
|
|
|
|
|
- Exception_infos beLate_ex = exception_infos.Where(it => it.exception == 1).FirstOrDefault();
|
|
|
- decimal day_miner_unit = dailyWage / 15;
|
|
|
-
|
|
|
- if (beLate_ex != null)
|
|
|
+ if (exc_type.Contains("时间异常") || exc_type.Contains("未打卡"))
|
|
|
{
|
|
|
- if (beLateNum > 0)
|
|
|
- {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
- {
|
|
|
- SubTypeId = 4,
|
|
|
- SubType = "旷工",
|
|
|
- unit = "分钟",
|
|
|
- };
|
|
|
- decimal day_beLate_deduction = 0.00M;
|
|
|
- if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
- {
|
|
|
- day_beLate_deduction = beLateNum * 50;
|
|
|
- beLate_belate_ex.SubTypeId = 1;
|
|
|
- beLate_belate_ex.SubType = "迟到";
|
|
|
- }
|
|
|
- else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
- {
|
|
|
- day_beLate_deduction = day_miner_unit * 6;
|
|
|
-
|
|
|
- }
|
|
|
- else day_beLate_deduction = dailyWage;
|
|
|
-
|
|
|
- beLate_deduction += day_beLate_deduction;
|
|
|
+ int day_time_minute = (60 * 7) + 30;
|
|
|
|
|
|
+
|
|
|
+ Exception_infos beLate_ex = new Exception_infos();
|
|
|
+ decimal day_miner_unit = dailyWage / 15;
|
|
|
|
|
|
- beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
- beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
- ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if (leaveEarlyNum > 0)
|
|
|
- {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
- {
|
|
|
- SubTypeId = 4,
|
|
|
- SubType = "旷工",
|
|
|
- unit = "分钟",
|
|
|
- };
|
|
|
- decimal day_beLate_deduction = 0.00M;
|
|
|
- if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
- {
|
|
|
- day_beLate_deduction = beLateNum * 50;
|
|
|
- beLate_belate_ex.SubTypeId = 3;
|
|
|
- beLate_belate_ex.SubType = "未打卡/漏卡";
|
|
|
- }
|
|
|
- else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+
|
|
|
+
|
|
|
+ if (beLateNum > 0)
|
|
|
{
|
|
|
- day_beLate_deduction = day_miner_unit * 6;
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
+ {
|
|
|
+ SubTypeId = 4,
|
|
|
+ SubType = "旷工",
|
|
|
+ unit = "分钟",
|
|
|
+ };
|
|
|
+ decimal day_beLate_deduction = 0.00M;
|
|
|
+ if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = beLateNum * 50;
|
|
|
+ beLate_belate_ex.SubTypeId = 1;
|
|
|
+ beLate_belate_ex.SubType = "迟到";
|
|
|
+ }
|
|
|
+ else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = day_miner_unit * 6;
|
|
|
+
|
|
|
+ }
|
|
|
+ else day_beLate_deduction = dailyWage;
|
|
|
+
|
|
|
+ beLate_deduction += day_beLate_deduction;
|
|
|
+
|
|
|
+
|
|
|
+ beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
+ beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
+ ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
}
|
|
|
- else day_beLate_deduction = dailyWage;
|
|
|
-
|
|
|
- beLate_deduction += day_beLate_deduction;
|
|
|
-
|
|
|
- beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
- beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
- ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
- }
|
|
|
|
|
|
- if (dummyDeckNum > 0)
|
|
|
- {
|
|
|
- Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
+ else if (leaveEarlyNum > 0)
|
|
|
{
|
|
|
- SubTypeId = 4,
|
|
|
- SubType = "旷工",
|
|
|
- unit = "分钟",
|
|
|
- };
|
|
|
- decimal day_beLate_deduction = 0.00M;
|
|
|
- if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
- {
|
|
|
- day_beLate_deduction = beLateNum * 50;
|
|
|
- beLate_belate_ex.SubTypeId = 2;
|
|
|
- beLate_belate_ex.SubType = "早退";
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
+ {
|
|
|
+ SubTypeId = 4,
|
|
|
+ SubType = "旷工",
|
|
|
+ unit = "分钟",
|
|
|
+ };
|
|
|
+ decimal day_beLate_deduction = 0.00M;
|
|
|
+ if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = beLateNum * 50;
|
|
|
+ beLate_belate_ex.SubTypeId = 3;
|
|
|
+ beLate_belate_ex.SubType = "未打卡/漏卡";
|
|
|
+ }
|
|
|
+ else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = day_miner_unit * 6;
|
|
|
+
|
|
|
+ }
|
|
|
+ else day_beLate_deduction = dailyWage;
|
|
|
+
|
|
|
+ beLate_deduction += day_beLate_deduction;
|
|
|
+
|
|
|
+ beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
+ beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
+ ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
}
|
|
|
- else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
- {
|
|
|
- day_beLate_deduction = day_miner_unit * 6;
|
|
|
|
|
|
+ else if (dummyDeckNum > 0)
|
|
|
+ {
|
|
|
+ Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
+ {
|
|
|
+ SubTypeId = 4,
|
|
|
+ SubType = "旷工",
|
|
|
+ unit = "分钟",
|
|
|
+ };
|
|
|
+ decimal day_beLate_deduction = 0.00M;
|
|
|
+ if (beLate_ex.duration >= 10 && beLate_ex.duration <= 60)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = beLateNum * 50;
|
|
|
+ beLate_belate_ex.SubTypeId = 2;
|
|
|
+ beLate_belate_ex.SubType = "早退";
|
|
|
+ }
|
|
|
+ else if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = day_miner_unit * 6;
|
|
|
+
|
|
|
+ }
|
|
|
+ else day_beLate_deduction = dailyWage;
|
|
|
+
|
|
|
+ beLate_deduction += day_beLate_deduction;
|
|
|
+
|
|
|
+ beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
+ beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
+ ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
}
|
|
|
- else day_beLate_deduction = dailyWage;
|
|
|
-
|
|
|
- beLate_deduction += day_beLate_deduction;
|
|
|
-
|
|
|
- beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
- beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
- ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
- }
|
|
|
|
|
|
- if (minerNum > 0)
|
|
|
- {
|
|
|
- Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
- {
|
|
|
- SubTypeId = 4,
|
|
|
- SubType = "旷工",
|
|
|
- unit = "分钟",
|
|
|
- };
|
|
|
- decimal day_beLate_deduction = 0.00M;
|
|
|
-
|
|
|
- if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+ else if (minerNum > 0)
|
|
|
{
|
|
|
- day_beLate_deduction = day_miner_unit * 6;
|
|
|
-
|
|
|
+ Ex_Item beLate_belate_ex = new Ex_Item()
|
|
|
+ {
|
|
|
+ SubTypeId = 4,
|
|
|
+ SubType = "旷工",
|
|
|
+ unit = "分钟",
|
|
|
+ };
|
|
|
+ decimal day_beLate_deduction = 0.00M;
|
|
|
+
|
|
|
+ if (beLate_ex.duration > 60 && beLate_ex.duration <= 180)
|
|
|
+ {
|
|
|
+ day_beLate_deduction = day_miner_unit * 6;
|
|
|
+
|
|
|
+ }
|
|
|
+ else day_beLate_deduction = dailyWage;
|
|
|
+
|
|
|
+ beLate_deduction += day_beLate_deduction;
|
|
|
+
|
|
|
+ beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
+ beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
+ ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
}
|
|
|
- else day_beLate_deduction = dailyWage;
|
|
|
-
|
|
|
- beLate_deduction += day_beLate_deduction;
|
|
|
-
|
|
|
- beLate_belate_ex.Duration = beLate_ex.duration;
|
|
|
- beLate_belate_ex.Deduction = day_beLate_deduction;
|
|
|
- ex_reissuecard_Items.Add(beLate_belate_ex);
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -647,7 +586,16 @@ namespace OASystem.API.OAMethodLib
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ _result.Msg = ex.Message;
|
|
|
+
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
+
|
|
|
_result.Code = 0;
|
|
|
_result.Data = pm_WageSheetDattaSources;
|
|
|
|