Browse Source

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

LEIYI 6 months ago
parent
commit
3ab8c7a04b

+ 14 - 14
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -4967,20 +4967,20 @@ Group by PriceType ", dto.diId);
                 return Ok(jw);
             }
 
-            //机票 职位表id 24
-            int[] AirTicket = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0 && x.JobPostId == 24).Select(x => x.Id).ToArray();
+            int[] jobPostIds = { 24, 25, 26, 27, 28 };
 
-            //酒店 职位表id 25
-            int[] Hotel = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0 && x.JobPostId == 25).Select(x => x.Id).ToArray();
+            var userGroups = _sqlSugar.Queryable<Sys_Users>()
+                .Where(x => x.IsDel == 0 && jobPostIds.Contains(x.JobPostId))
+                .Select(x => new { x.Id, x.JobPostId })
+                .ToArray()
+                .GroupBy(x => x.JobPostId)
+                .ToDictionary(g => g.Key, g => g.Select(x => x.Id).ToArray());
 
-            //OP 职位表id 28 
-            int[] OP = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0 && x.JobPostId == 28).Select(x => x.Id).ToArray();
-
-            //商邀 职位表id 27
-            int[] Invitation = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0 && x.JobPostId == 27).Select(x => x.Id).ToArray();
-
-            //签证 职位表id 26
-            int[] Visa = _sqlSugar.Queryable<Sys_Users>().Where(x => x.IsDel == 0 && x.JobPostId == 26).Select(x => x.Id).ToArray();
+            int[] AirTicket = userGroups.ContainsKey(24) ? userGroups[24] : Array.Empty<int>();
+            int[] Hotel = userGroups.ContainsKey(25) ? userGroups[25] : Array.Empty<int>();
+            int[] OP = userGroups.ContainsKey(28) ? userGroups[28] : Array.Empty<int>();
+            int[] Invitation = userGroups.ContainsKey(27) ? userGroups[27] : Array.Empty<int>();
+            int[] Visa = userGroups.ContainsKey(26) ? userGroups[26] : Array.Empty<int>();
 
             //主管职位
             //string[] Manager = { "149", "283" };
@@ -5035,7 +5035,7 @@ Group by PriceType ", dto.diId);
 
                         string errMsg = string.Empty;
 
-                        if (air.FlightsDescription.Contains("\r\n"))
+                        if (air.FlightsDescription.Contains("\r\n") || Regex.Split(air.FlightsDescription, "\\d+\\.", RegexOptions.IgnoreCase).Count() > 1)
                         {
                             var rowCode = Regex.Split(air.FlightsDescription, "\\d+\\.", RegexOptions.IgnoreCase).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
                             for (int i = 0; i < rowCode.Length; i++)
@@ -5133,7 +5133,7 @@ Group by PriceType ", dto.diId);
                      JoinType.Left, x.DiId == a.Id,
                      JoinType.Left, b.CTable == 76 && b.CId == x.Id))
                     .Where((x, a, b) => x.IsDel == 0 && x.CreateUserId == userId && a.VisitDate >= StartDateTime
-                    && a.VisitDate <= EndDateTime && a.IsDel == 0 && b.IsDel == 0 && x.CardPrice > 0 && a.IsSure == 1 && auditState.Contains(b.IsAuditGM) && x.CheckType == 1001).Select((x, a, b) => new
+                    && a.VisitDate <= EndDateTime && a.IsDel == 0 && b.IsDel == 0 && x.CardPrice != 0 && a.IsSure == 1 && auditState.Contains(b.IsAuditGM) && x.CheckType == 1001).Select((x, a, b) => new
                     {
                         a.Id,
                         a.TeamName,

+ 36 - 23
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -2,6 +2,7 @@
 using Aspose.Words;
 using Aspose.Words.Drawing;
 using Aspose.Words.Tables;
+using EyeSoft.IO;
 using Microsoft.AspNetCore.SignalR;
 using MySqlX.XDevAPI.Relational;
 using NPOI.HSSF.UserModel;
@@ -33,6 +34,8 @@ using System.Data;
 using System.Diagnostics;
 using System.Globalization;
 using System.IO;
+using System.IO.Compression;
+using System.Net.Http;
 using System.Reflection.PortableExecutable;
 using Ubiety.Dns.Core;
 using static OASystem.API.OAMethodLib.JWTHelper;
@@ -15059,8 +15062,8 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
             string url = param["url"]!.ToString();
             var methon = "get";
 
-            Dictionary<string, string> bodyValues = null;
             Dictionary<string, string> headValues = null;
+            string bodyStr = string.Empty;
 
             if (param.ContainsKey("methon"))
             {
@@ -15080,27 +15083,26 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 }
             }
 
-            if (param.ContainsKey("body"))
-            {
-                var body = param["body"]!.ToString();
-                bodyValues = new Dictionary<string, string>();
-                JObject bodyJobject = JObject.Parse(body);
-                foreach (JProperty item in bodyJobject.Properties())
-                {
-                    var value = item.Value.ToString();
-                    var head = item.Path;
-                    bodyValues.Add(head, value);
-                }
-            }
-
             HttpClient client = new HttpClient();
             string responseString = string.Empty;
+            StringContent content = null;
 
             if (headValues != null)
             {
                 foreach (var item in headValues.Keys)
                 {
-                    client.DefaultRequestHeaders.Add(item, headValues[item]);
+                    if (item.ToLower().Contains("content") && item.ToLower().Contains("type"))
+                    {
+                        if (param.ContainsKey("body"))
+                        {
+                            bodyStr = param["body"]!.ToString();
+                        }
+                        content = new StringContent(bodyStr, Encoding.UTF8, headValues[item]);
+                    }
+                    else
+                    {
+                        client.DefaultRequestHeaders.Add(item, headValues[item]);
+                    }
                 }
             }
 
@@ -15113,18 +15115,29 @@ And (UnitName != '' Or UnitName != null) {sqlWhere}");
                 }
                 else if (methon == "post")
                 {
+                    var request = new HttpRequestMessage(HttpMethod.Post, url)
+                    {
+                        Content = content
+                    };
+                    var response = await client.SendAsync(request);
 
-                    if (bodyValues == null)
+                    try
                     {
-                        jw.Msg = "methon post body null";
-                        return Ok(jw);
+                        Stream responseStream = await response.Content.ReadAsStreamAsync();
+
+                        using (GZipStream gzipStream = new GZipStream(responseStream, CompressionMode.Decompress))
+                        {
+                            using (StreamReader reader = new StreamReader(gzipStream))
+                            {
+                                responseString = await reader.ReadToEndAsync();
+                            }
+                        }
+                    }
+                    catch (Exception)
+                    {
+                        responseString = await response.Content.ReadAsStringAsync();
                     }
 
-                    // 数据转化为 key=val 格式
-                    var content = new FormUrlEncodedContent(bodyValues);
-                    var response = await client.PostAsync(url, content);
-                    // 获取数据
-                    responseString = await response.Content.ReadAsStringAsync();
                 }
                 else
                 {

+ 29 - 0
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/AppNotice/Config.cs

@@ -200,6 +200,35 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
 
 <font color='info'>请各位注意检查业务费用是否录入完整</font>
 
+[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", teamNames2);
+
+            return result;
+        }
+
+        /// <summary>
+        /// 团组出发前一周提醒HR
+        /// </summary>
+        /// <returns></returns>
+        public static string GroupRemindersToHR(List<Grp_DelegationInfo> list_7day)
+        {
+            string teamNames2 = "><font color='comment'>暂无</font>";
+
+            if (list_7day.Count > 0)
+            {
+                teamNames2 = "";
+                foreach (var item in list_7day)
+                {
+                    string startDt = item.VisitStartDate.ToString("yyyy-MM-dd");
+                    teamNames2 += ">(" + startDt + ")" + item.TeamName + " \n\n";
+                }
+            }
+
+
+            string result = string.Format(@" `团组行程提醒`  
+
+><font color='warning'> - 下列团组将于7天内出发:</font>
+{0}
+
 [详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", teamNames2);
 
             return result;

+ 21 - 0
OASystem/OASystem.Api/OAMethodLib/QiYeWeChatAPI/AppNotice/Library.cs

@@ -646,6 +646,27 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
 
         #endregion
 
+        #region 团组出发提醒(HR)
+
+        public static async Task<bool> SendUserMsg_DelegationVisit_ToHR(List<Grp_DelegationInfo> list_3day, List<string> userId)
+        {
+            //发送信息
+            List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
+            if (qwUserIdList.Count > 0)
+            {
+                ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupRemindersToHR(list_3day));
+
+                if (result.errcode != 0)
+                {
+                    //抄送日志 
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        #endregion
+
         #region 市场部新增客户资源统计
 
         /// <summary>

+ 21 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Business/DeleReminderMessage.cs

@@ -116,6 +116,27 @@ namespace OASystem.API.OAMethodLib.Quartz.Business
 
         }
 
+        public static async void PostMessageByWebhook_VisitToHR()
+        {
+            DateTime dtNow = DateTime.Now;
+            if (dtNow.DayOfWeek == DayOfWeek.Friday)
+            {
+                string add1day = dtNow.AddDays(1).ToString("yyyy-MM-dd");
+                string add7day = dtNow.AddDays(7).ToString("yyyy-MM-dd");
+
+                //string sql = string.Format(@" Select * From Grp_DelegationInfo With(Nolock) Where IsDel=0 And VisitEndDate ='{0}' Or VisitStartDate='{1}' ", add3day, add7day);
+                //List<Grp_DelegationInfo> list_source = _grpDeleRep._sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql).ToList();
+
+                string sql7day = string.Format(@" Select * From Grp_DelegationInfo With(Nolock) where IsDel = 0 And VisitStartDate Between '{0} 00:00:00' And  '{1} 23:59:59' Order By VisitStartDate Asc ", add1day, add7day);
+
+                List<Grp_DelegationInfo> listAdd7day = _grpDeleRep._sqlSugar.SqlQueryable<Grp_DelegationInfo>(sql7day).ToList();
+
+                List<string> temp = new List<string>() { "234", "309" };
+                //List<string> temp = new List<string>() { "234" };
+                await AppNoticeLibrary.SendUserMsg_DelegationVisit_ToHR(listAdd7day, temp);
+            }
+        }
+
         public static async void PostMessageByWebhook_CRMStatistics()
         {
             DateTime dtNow = DateTime.Now;

+ 1 - 0
OASystem/OASystem.Api/OAMethodLib/Quartz/Jobs/ALiYunPostMessageJob.cs

@@ -17,6 +17,7 @@ namespace QuzrtzJob.Factory
             //在此处编写任务业务代码
             DeleReminderMessage.PostMessageByWebhook();
             DeleReminderMessage.PostMessageByWebhook_CRMStatistics();
+            DeleReminderMessage.PostMessageByWebhook_VisitToHR();
             return Task.CompletedTask;
         }
     }