瀏覽代碼

工资计算 PersonnelModuleController 更改

leiy 1 年之前
父節點
當前提交
99c49dc6c1

+ 13 - 4
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -308,6 +308,11 @@ namespace OASystem.API.Controllers
         {
             Result result = new Result();
 
+            try
+            {
+
+           
+
             //参数处理
             string ymFormat = "yyyy-MM";
             string ymdFormat = "yyyy-MM-dd";
@@ -367,11 +372,15 @@ namespace OASystem.API.Controllers
                     return it;
                 }
             ).ToList();
-            #endregion
-
-           
+                #endregion
+                return Ok(JsonView(true, "操作成功!", wageSheetItems[0]));
+            }
+            catch (Exception ex)
+            {
+                return Ok(JsonView(false, ex.Message));
+            }
 
-            return Ok(JsonView(true, "操作成功!", wageSheetItems[0]));
+            
         }
         #endregion
 

+ 1 - 1
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs

@@ -54,7 +54,7 @@ namespace OASystem.API.OAMethodLib
             List<Data> checkInDatas = checkIn.datas;
 
             List<Sp_Info> sp_Infos = new List<Sp_Info>();
-            sp_Infos = await _qiYeWeChatApiService.GetApprovalDataRedisAsync(startDt, endDt); //时间段内所有 审批数据
+            sp_Infos = await _qiYeWeChatApiService.GetApprovalDatasAsync(startDt, endDt); //时间段内所有 审批数据
 
             if (sp_Infos.Count <= 0)
             {

+ 17 - 1
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/IQiYeWeChatApiService.cs

@@ -35,6 +35,14 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         /// <returns></returns>
         Task<CheckInView> GetCheckin_MonthDataAsync(DateTime startDt, DateTime endDt);
 
+        /// <summary>
+        /// 获取月打卡数据 Redis
+        /// </summary>
+        /// <param name="startDt"></param>
+        /// <param name="endDt"></param>
+        /// <returns></returns>
+        Task<CheckInView> GetCheckin_MonthDataRedisAsync(DateTime startDt, DateTime endDt);
+
         /// <summary>
         /// 获取审批数据(旧)
         /// </summary>
@@ -43,12 +51,20 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         /// <returns></returns>
         Task<ApprovalDataView> GetApprovalDataAsync(DateTime startDt, DateTime endDt);
 
+        /// <summary>
+        /// 获取审批数据(旧)
+        /// </summary>
+        /// <param name="startDt"></param>
+        /// <param name="endDt"></param>
+        /// <returns></returns>
+        Task<List<Sp_Info>> GetApprovalDatasAsync(DateTime startDt, DateTime endDt);
+
         /// <summary>
         /// 获取审批数据(旧)(redis缓存)
         /// </summary>
         /// <param name="startDt"></param>
         /// <param name="endDt"></param>
         /// <returns></returns>
-        Task<List<Sp_Info>> GetApprovalDataRedisAsync(DateTime startDt, DateTime endDt);
+        Task<List<Sp_Info>> GetApprovalDatasRedisAsync(DateTime startDt, DateTime endDt);
     }
 }

+ 96 - 4
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/QiYeWeChatApiService.cs

@@ -301,6 +301,61 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         {
             CheckInView checkInView = new CheckInView();
 
+            //获取员工Id
+            UserIdListView userIdListView = await GetUserIdListAsync();
+            if (userIdListView.errcode != 0)
+            {
+                checkInView.errcode = userIdListView.errcode;
+                checkInView.errmsg = string.Format("【企业微信】【获取员工IdList】【Msg】{0}",userIdListView.errmsg);
+                return checkInView;
+            }
+
+            if (userIdListView.dept_user == null || userIdListView.dept_user.Count <= 0)
+            {
+                checkInView.errmsg = string.Format("【企业微信】【获取员工IdList】【Msg】未查出员工Id");
+                return checkInView;
+            }
+
+            //获取月打卡数据 token
+            Access_TokenView access_Token = await GetTokenAsync(2);
+            if (access_Token.errcode != 0)
+            {
+                checkInView.errcode = access_Token.errcode;
+                checkInView.errmsg = string.Format("【企业微信】【获取月打卡数据】【Token】【Msg】{0}", access_Token.errmsg);
+                return checkInView;
+            }
+
+            string url = string.Format("/cgi-bin/checkin/getcheckin_monthdata?access_token={0}", access_Token.access_token);
+
+            Checkin_MonthData_Request checkInReq = new Checkin_MonthData_Request();
+            checkInReq.access_token = access_Token.access_token;
+            
+            checkInReq.starttime = (uint)(startDt - _1970).TotalSeconds;
+            checkInReq.endtime = (uint)(endDt - _1970).TotalSeconds;
+            checkInReq.useridlist = userIdListView.dept_user.Select(it => it.userid).ToList();
+
+            var json = System.Text.Json.JsonSerializer.Serialize(checkInReq);
+            var content = new StringContent(json, Encoding.UTF8, "application/json");
+            var create_Req = await _httpClient.PostAsync(url, content);
+            var stringResponse = await create_Req.Content.ReadAsStringAsync();
+
+            checkInView = System.Text.Json.JsonSerializer.Deserialize<CheckInView>(stringResponse,
+                new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase });
+
+
+            return checkInView;
+        }
+
+        /// <summary>
+        /// 获取月打卡数据(redis缓存)
+        /// </summary>
+        /// <param name="startDt"></param>
+        /// <param name="endDt"></param>
+        /// <returns></returns>
+        public async Task<CheckInView> GetCheckin_MonthDataRedisAsync(DateTime startDt, DateTime endDt)
+        {
+            CheckInView checkInView = new CheckInView();
+
             string checkInDatastring = await RedisRepository.RedisFactory
                                                     .CreateRedisRepository()
                                                     .StringGetAsync<string>("Checkin_MonthData");//List<T> 取
@@ -318,7 +373,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
             if (userIdListView.errcode != 0)
             {
                 checkInView.errcode = userIdListView.errcode;
-                checkInView.errmsg = string.Format("【企业微信】【获取员工IdList】【Msg】{0}",userIdListView.errmsg);
+                checkInView.errmsg = string.Format("【企业微信】【获取员工IdList】【Msg】{0}", userIdListView.errmsg);
                 return checkInView;
             }
 
@@ -341,7 +396,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
 
             Checkin_MonthData_Request checkInReq = new Checkin_MonthData_Request();
             checkInReq.access_token = access_Token.access_token;
-            
+
             checkInReq.starttime = (uint)(startDt - _1970).TotalSeconds;
             checkInReq.endtime = (uint)(endDt - _1970).TotalSeconds;
             checkInReq.useridlist = userIdListView.dept_user.Select(it => it.userid).ToList();
@@ -363,7 +418,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
                     .CreateRedisRepository()
                     .StringSetAsync<string>("Checkin_MonthData", JsonConvert.SerializeObject(checkInView), ts);//List<T> 存
             }
-           
+
 
             return checkInView;
         }
@@ -442,6 +497,43 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
             return approvalDataView;
         }
 
+        /// <summary>
+        /// 获取审批数据(旧)(redis缓存)
+        /// </summary>
+        /// <param name="startDt"></param>
+        /// <param name="endDt"></param>
+        /// <returns></returns>
+        public async Task<List<Sp_Info>> GetApprovalDatasAsync(DateTime startDt, DateTime endDt)
+        {
+            List<Sp_Info> sp_Infos = new List<Sp_Info>();
+
+            //获取所有打卡补卡,审批 数据 前后范围增加10天
+            DateTime sp_startDt = startDt.AddDays(-10);
+            DateTime sp_centerDt = sp_startDt.AddDays(30);
+            DateTime sp_endDt = endDt.AddDays(10);
+
+            ApprovalDataView approvalData_1 = await GetApprovalDataAsync(sp_startDt, sp_centerDt);  //时间段内所有 审批数据
+            ApprovalDataView approvalData_2 = await GetApprovalDataAsync(sp_centerDt, sp_endDt);    //时间段内所有 审批数据
+            if (approvalData_1.errcode != 0)
+            {
+                Log.Error("企业微信 获取 " + sp_startDt + " - " + sp_centerDt + " 内审批 Msg:" + approvalData_1.errmsg);
+
+                return sp_Infos;
+            }
+            sp_Infos.AddRange(approvalData_1.data);
+            if (approvalData_2.errcode != 0)
+            {
+                Log.Error("企业微信 获取 " + sp_centerDt + " - " + sp_endDt + " 内审批 Msg:" + approvalData_2.errmsg);
+
+                return sp_Infos;
+            }
+            sp_Infos.AddRange(approvalData_2.data);
+
+            sp_Infos = sp_Infos.Where(it => it.sp_status == 2).ToList(); //存储已审核的数据
+
+
+            return sp_Infos;
+        }
 
         /// <summary>
         /// 获取审批数据(旧)(redis缓存)
@@ -449,7 +541,7 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
         /// <param name="startDt"></param>
         /// <param name="endDt"></param>
         /// <returns></returns>
-        public async Task<List<Sp_Info>> GetApprovalDataRedisAsync(DateTime startDt, DateTime endDt)
+        public async Task<List<Sp_Info>> GetApprovalDatasRedisAsync(DateTime startDt, DateTime endDt)
         {
             List<Sp_Info> sp_Infos = new List<Sp_Info>();