|
@@ -4,6 +4,7 @@ using OASystem.Domain.Entities.PersonnelModule;
|
|
|
using OASystem.Domain.ViewModels.PersonnelModule;
|
|
|
using OASystem.Domain.ViewModels.QiYeWeChat;
|
|
|
using OASystem.Infrastructure.Repositories.Groups;
|
|
|
+using TencentCloud.Ocr.V20181119.Models;
|
|
|
|
|
|
namespace OASystem.API.OAMethodLib
|
|
|
{
|
|
@@ -53,18 +54,23 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
List<Data> checkInDatas = checkIn.datas;
|
|
|
|
|
|
- List<Sp_Info> sp_Infos = new List<Sp_Info>();
|
|
|
- sp_Infos = await _qiYeWeChatApiService.GetApprovalDatasAsync(startDt, endDt);
|
|
|
-
|
|
|
- if (sp_Infos.Count <= 0)
|
|
|
+
|
|
|
+ List<Sp_Detail> sp_leave_details = new List<Sp_Detail>();
|
|
|
+ sp_leave_details = await _qiYeWeChatApiService.GetApprovalDetailsAsync(startDt, endDt, 2, 1);
|
|
|
+ if (sp_leave_details.Count <= 0)
|
|
|
{
|
|
|
- string errMsg = startDt + " - " + endDt + "审批数据获取失败!";
|
|
|
+ string errMsg = startDt + " - " + endDt + "请假 审批数据获取失败!";
|
|
|
return _result;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- List<Sp_Info> sp_leave_InfosData = sp_Infos.Where(it => it.sp_status == 2 && it.spname == "请假" && it.leave.start_time_dt >= startDt && it.leave.start_time_dt <= endDt).ToList();
|
|
|
- List<Sp_Info> sp_reissuecard_InfosData = sp_Infos.Where(it => it.sp_status == 2 && it.spname == "打卡补卡" && it.comm.FillingDt >= startDt && it.comm.FillingDt <= endDt).ToList();
|
|
|
+
|
|
|
+ List<Sp_Detail> sp_reissuecard_details = new List<Sp_Detail>();
|
|
|
+ sp_reissuecard_details = await _qiYeWeChatApiService.GetApprovalDetailsAsync(startDt, endDt, 2, 2);
|
|
|
+ if (sp_reissuecard_details.Count <= 0)
|
|
|
+ {
|
|
|
+ string errMsg = startDt + " - " + endDt + "打卡补卡 审批数据获取失败!";
|
|
|
+ return _result;
|
|
|
+ }
|
|
|
|
|
|
foreach (var pm_wsInfo in pm_WageSheetDattaSources)
|
|
|
{
|
|
@@ -95,6 +101,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
|
|
|
Data? checkInData = checkInDatas.Where(it => it.base_info.name == itemName).FirstOrDefault();
|
|
|
+
|
|
|
if (checkInData == null) { continue; }
|
|
|
string acctid = checkInData.base_info.acctid;
|
|
|
|
|
@@ -161,176 +168,186 @@ namespace OASystem.API.OAMethodLib
|
|
|
|
|
|
#region 请假类型金额/餐补 处理
|
|
|
|
|
|
- List<Sp_Info> sp_leave_item_infosData = sp_leave_InfosData.Where(it => it.spname == "请假" && it.apply_name == itemName).ToList();
|
|
|
+ List<Sp_Detail> sp_leave_item_infosData = sp_leave_details.Where(it => it.applyer.userid == acctid).ToList();
|
|
|
|
|
|
List<Ex_Items> ex_Items = new List<Ex_Items>();
|
|
|
Ex_Items ex_Items_jq = new Ex_Items() { Type = "假勤" };
|
|
|
List<Ex_Item> ex_ItemInfos = new List<Ex_Item>();
|
|
|
|
|
|
- foreach (Sp_Info sp_item in sp_leave_item_infosData)
|
|
|
+ foreach (Sp_Detail sp_item in sp_leave_item_infosData)
|
|
|
{
|
|
|
- Leave? sp_leave = sp_item.leave;
|
|
|
- if (sp_leave != null)
|
|
|
+ Apply_data? apply_data = sp_item.apply_data;
|
|
|
+ if (apply_data != null)
|
|
|
{
|
|
|
+ List<ContentsItem> contents = apply_data.contents;
|
|
|
+ ContentsItem content_Vacation = contents.Where(it => it.control== "Vacation").FirstOrDefault();
|
|
|
+ ContentsItem content_Textarea = contents.Where(it => it.control == "Textarea").FirstOrDefault();
|
|
|
|
|
|
-
|
|
|
- double leaveLength = (sp_leave.end_time_dt - sp_leave.start_time_dt).TotalHours;
|
|
|
-
|
|
|
- string typeName = string.Empty;
|
|
|
-
|
|
|
- switch (sp_leave.leave_type)
|
|
|
+ if (content_Vacation != null)
|
|
|
{
|
|
|
- case 1:
|
|
|
- typeName = "年假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- typeName = "事假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- personalLeaveTotal += dailyWage / 2;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- typeName = "病假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- sickLeaveTotal += sickLeave_deduction / 2;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- typeName = "调休假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- typeName = "婚假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- typeName = "产假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case 7:
|
|
|
- typeName = "陪产假";
|
|
|
- if (sp_leave.timeunit == 0)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.timeunit == 1)
|
|
|
- {
|
|
|
- if (sp_leave.duration >= 3 && sp_leave.duration <= 7.5)
|
|
|
- {
|
|
|
- meal_deduction += 10;
|
|
|
- }
|
|
|
- else if (sp_leave.duration > 7.5)
|
|
|
- {
|
|
|
- decimal daysPrice = Convert.ToDecimal(sp_leave.duration / 7.5 * 10);
|
|
|
- meal_deduction += daysPrice;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ Vacation vacation = content_Vacation.value.vacation;
|
|
|
+ Attendance attendance = vacation.attendance;
|
|
|
+ Selector selector = vacation.selector;
|
|
|
}
|
|
|
|
|
|
- Ex_Item ex_Item = new Ex_Item()
|
|
|
- {
|
|
|
- SubTypeId = sp_leave.leave_type,
|
|
|
- SubType = typeName,
|
|
|
- Start_time_dt = sp_leave.start_time_dt,
|
|
|
- End_time_dt = sp_leave.end_time_dt,
|
|
|
- Duration = sp_leave.duration,
|
|
|
- Reason = sp_leave.reason,
|
|
|
- Apply_time_dt = sp_item.apply_time_dt,
|
|
|
- Approval_name = sp_item.approval_name,
|
|
|
- };
|
|
|
- ex_ItemInfos.Add(ex_Item);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -361,7 +378,7 @@ namespace OASystem.API.OAMethodLib
|
|
|
Ex_Items ex_Items_dk = new Ex_Items() { Type = "打卡" };
|
|
|
|
|
|
List<dynamic> ex_reissuecard_Items = new List<dynamic>();
|
|
|
- List<Sp_Info> sp_reissuecard_item_InfosData = sp_reissuecard_InfosData.Where(it => it.apply_name == itemName).ToList();
|
|
|
+ List<Sp_Detail> sp_reissuecard_item_InfosData = sp_reissuecard_details.Where(it => it.applyer.userid == acctid).ToList();
|
|
|
|
|
|
#region 打卡异常处理 统计 1-迟到;2-早退;3-缺卡;4-旷工;5-地点异常;6-设备异常;
|
|
|
|
|
@@ -386,123 +403,123 @@ namespace OASystem.API.OAMethodLib
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- foreach (Sp_Info sp_reissuecard_item in sp_reissuecard_item_InfosData)
|
|
|
- {
|
|
|
- DateTime apply_time_dt = sp_reissuecard_item.apply_time_dt;
|
|
|
- List<string>? approval_name = sp_reissuecard_item.approval_name;
|
|
|
-
|
|
|
- Comm sp_comm = sp_reissuecard_item.comm;
|
|
|
- if (sp_comm != null)
|
|
|
- {
|
|
|
- if (sp_comm.applydata != null)
|
|
|
- {
|
|
|
- List<ApplyInfo> applyInfos = sp_comm.applydata;
|
|
|
- if (applyInfos.Count > 0)
|
|
|
- {
|
|
|
-
|
|
|
- dynamic ex_reissuecard_Item = null;
|
|
|
- string text = applyInfos.Where(it => it.type == "text").FirstOrDefault().value.ToString();
|
|
|
- DateTime? datehour = applyInfos.Where(it => it.type == "datehour").FirstOrDefault().valueDt;
|
|
|
- string textarea = applyInfos.Where(it => it.type == "textarea").FirstOrDefault().value.ToString();
|
|
|
- if (text.Contains("未打卡"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 0,
|
|
|
- SubType = "未打卡",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("迟到"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 1,
|
|
|
- SubType = "迟到",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("早退"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 2,
|
|
|
- SubType = "早退",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("缺卡"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 3,
|
|
|
- SubType = "缺卡",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("旷工"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 4,
|
|
|
- SubType = "旷工",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("地点异常"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 5,
|
|
|
- SubType = "地点异常",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- else if (text.Contains("设备异常"))
|
|
|
- {
|
|
|
- ex_reissuecard_Item = new
|
|
|
- {
|
|
|
- SubTypeId = 6,
|
|
|
- SubType = "设备异常",
|
|
|
- title = text,
|
|
|
- datehour = datehour == null ? "" : Convert.ToDateTime(datehour).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
- textarea = textarea,
|
|
|
- apply_time_dt = apply_time_dt,
|
|
|
- approval_name = approval_name
|
|
|
- };
|
|
|
- }
|
|
|
- if (ex_reissuecard_Item != null)
|
|
|
- {
|
|
|
- ex_reissuecard_Items.Add(ex_reissuecard_Item);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
if (ex_reissuecard_Items.Count > 0)
|
|
|
{
|