Selaa lähdekoodia

合并签证申请表

Lyyyi 1 tunti sitten
vanhempi
commit
6f3bf835c0

+ 8 - 5
OASystem/OASystem.Api/Controllers/FinancialController.cs

@@ -1090,7 +1090,7 @@ namespace OASystem.API.Controllers
                     //住宿费 伙食费 公杂费 培训费 选中才计算出费用
 
                     //住宿费 选中赋值
-                    List<Grp_DayAndCost> dac1 = new List<Grp_DayAndCost>(); 
+                    List<Grp_DayAndCost> dac1 = new List<Grp_DayAndCost>();
                     if (_EnterExitCosts.ChoiceThree == 1) dac1 = _DayAndCosts.Where(it => it.Type == 1).ToList(); //住宿费
 
                     //伙食费 选中赋值
@@ -1378,7 +1378,7 @@ namespace OASystem.API.Controllers
 
                             }
                             placeArr.Clear();
-                            
+
                             TeableBookmarkArr.Add("zsinfo", zsinfo); //住宿费详情
                             TeableBookmarkArr.Add("hs", dac2.Sum(x => Convert.ToDecimal(x.SubTotal)).ToString("#0.00") + " 元"); //伙食费
                             TeableBookmarkArr.Add("hsinfo", hsinfo); //伙食费详情
@@ -1794,7 +1794,7 @@ namespace OASystem.API.Controllers
                .ToListAsync();
 
             decimal visaFee = costInfo?.Visa ?? 0.00M, //签证费
-                    //intercityFare = costInfo?.CityTranffic ?? 0.00M, //城市区间交通费
+                                                       //intercityFare = costInfo?.CityTranffic ?? 0.00M, //城市区间交通费
                     hotelFee = hotelCostInfos.Sum(x => x.Cost), //住宿费
                     hotelCNYEquivalent = hotelCostInfos.Sum(x => x.SubTotal), //住宿费CNY折算价
                     hotelRate = rateInfos.FirstOrDefault(x => x.CurrencyCode.Equals(hotelCostInfos.FirstOrDefault().Name))?.Rate ?? 0.00M; //住宿费汇率
@@ -2644,7 +2644,7 @@ namespace OASystem.API.Controllers
                     if (sum_fr <= 0m && (sum_fr + sum_extra) <= 0m && sum_refund <= 0m && ((sum_fr + sum_extra) - (sum_pr - sum_refund)) <= 0m)
                     {
                         item_rst.isChangeColorRed = true;
-                       
+
                         var currDatas = datas.Where(w => w.Id == diId).ToList();
 
                         decimal totalCost = currDatas.Sum(s => s.CNYMoney);
@@ -4375,7 +4375,10 @@ namespace OASystem.API.Controllers
                 return Ok(JsonView(false, "查询失败"));
             }
 
-            detailView.Remark = detailView.Remark.Replace("[TuT]", string.Empty);
+            if (!string.IsNullOrEmpty(detailView.Remark))
+            {
+                detailView.Remark = detailView.Remark.Replace("[TuT]", string.Empty);
+            }
 
             return Ok(JsonView(true, "查询成功", detailView));
         }

+ 62 - 15
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -4214,7 +4214,7 @@ FROM
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> VisaFileDownload(int groupId, int fileTypeId)
         {
-            if(!_visaTypeInit.TryGetValue(fileTypeId, out _))
+            if (!_visaTypeInit.TryGetValue(fileTypeId, out _))
             {
                 return Ok(JsonView(false, "请选择正确的文件类型!"));
             }
@@ -4251,7 +4251,7 @@ FROM
 
             //团组客户详细信息
             var groupCustInfos = _sqlSugar.Queryable<Crm_DeleClient>().Where(x => x.IsDel == 0 && groupClients.Contains(x.Id)).ToList();
-            
+
             //家庭成员资料
             var familyInfos = _sqlSugar.Queryable<Crm_VisaCustomerFamily>().Where(x => x.IsDel == 0 && groupClients.Contains(x.DcId)).ToList();
 
@@ -4281,7 +4281,7 @@ FROM
             var certInfos = _sqlSugar.Queryable<Crm_CustomerCert>().Where(x => x.IsDel == 0 && groupClients.Contains(x.DcId)).ToList();
 
             //利用字典创建书签与书签的值的键值对,第一个string为键,第二个string为值
-           
+
             var applyDate = DateTime.Now.ToString("yyyy-MM-dd");
 
             var filePaths = new List<string>();
@@ -4322,7 +4322,8 @@ FROM
                         dics.Add("OldName", custInfo?.FirstName ?? "");//曾用姓名
 
                         //未设置、未婚、已婚、离异、丧偶
-                        var marriage = custInfo.Marriage switch { 
+                        var marriage = custInfo.Marriage switch
+                        {
                             0 => "未设置",
                             1 => "未婚",
                             2 => "已婚",
@@ -4345,7 +4346,7 @@ FROM
                             string m_day = m_idCard.Substring(12, 2);
                             m_birthday = m_year + "." + m_month + "." + m_day;
                         }
-                        
+
                         dics.Add("BirthDay", m_birthday);//出生日期 
                         dics.Add("Tel", custInfo?.Tel ?? "");//移动电话
                         dics.Add("Email", custInfo?.Email ?? "");//电子信箱
@@ -4637,7 +4638,7 @@ FROM
                                 var ac = _sqlSugar.Queryable<Res_AirCompany>().Where(x => x.ShortCode == threeCodeTwo).First();
                                 if (ac != null)
                                 {
-                                    dics.Add("AirName",$"{ac?.EnName ?? ""} {three}");   //入境口岸
+                                    dics.Add("AirName", $"{ac?.EnName ?? ""} {three}");   //入境口岸
                                 }
 
                                 var tc = _sqlSugar.Queryable<Res_ThreeCode>().Where(x => x.Three == threeCodeTwo).First();
@@ -4654,7 +4655,7 @@ FROM
                         if (groupInfo != null)
                         {
                             dics.Add("Destination", groupInfo?.VisitPurpose ?? "");  //出访目的 Destination2
-                                                                              //DickeyValue.Add("Destination2", dgi.VisitCountry);  //出访目的地
+                                                                                     //DickeyValue.Add("Destination2", dgi.VisitCountry);  //出访目的地
                         }
 
                         if (!string.IsNullOrEmpty(city))
@@ -4764,7 +4765,7 @@ FROM
                     foreach (var custInfo in groupCustInfos)
                     {
                         EncryptionProcessor.DecryptProperties(custInfo);
-                                                
+
                         Dictionary<string, string> dics = new();
 
                         var idInfo = certInfos.FirstOrDefault(x => x.DcId == custInfo.Id && x.PassportType == 773);
@@ -4794,7 +4795,7 @@ FROM
                             string year = idCard.Substring(6, 4);
                             string month = idCard.Substring(10, 2);
                             string day = idCard.Substring(12, 2);
-                             birthday = year + "/" + month + "/" + day;
+                            birthday = year + "/" + month + "/" + day;
                         }
 
                         dics.Add("BirthDay", birthday);//出生日期 
@@ -4833,12 +4834,12 @@ FROM
 
                         dics.Add("Address", custInfo?.Address ?? "");//现居家庭地址
                         dics.Add("Tel1", custInfo?.Tel ?? "");//移动电话 /家庭电话 /电子信箱
-                                                                    //dics.Add("Tel2",  );//电子信箱
+                                                              //dics.Add("Tel2",  );//电子信箱
                         dics.Add("Email", custInfo?.Email ?? "");//电子信箱
 
                         //判断婚姻状况
                         var marriage = custInfo.Marriage switch
-                        { 
+                        {
                             1 => "未婚",
                             2 => "已婚",
                             3 => "离异",
@@ -4865,8 +4866,8 @@ FROM
                                     string mateFirstName = mateName.Remove(0, 1);
                                     dics.Add("MateLastName", mateName.Substring(0, 1)); //配偶姓
                                     dics.Add("MateFirstName", mateFirstName);  //配偶名
-                                                                                      //dics.Add("MateLastName", MateName.Substring(0, 1)); //配偶姓
-                                                                                      //dics.Add("MateFirstName", MateName.Substring(1, MateName.Length - 1));  //配偶名
+                                                                               //dics.Add("MateLastName", MateName.Substring(0, 1)); //配偶姓
+                                                                               //dics.Add("MateFirstName", MateName.Substring(1, MateName.Length - 1));  //配偶名
                                 }
                                 catch { }
                                 dics.Add("MateBirthDay", custInfo?.MateBirthDay.ToString("yyyy-MM-dd"));   //配偶生日
@@ -5007,7 +5008,7 @@ FROM
                             else
                                 dics.Add("IsNo", "√");
                         }
-                       
+
                         //费用信息
                         if (groupInfo != null)
                         {
@@ -5025,7 +5026,7 @@ FROM
                         {
                             dics.Add("WirteTableYes", "√");
                             dics.Add("OpTableName", custInfo.TableOpName.ToString());  //协助填表人姓名
-                                                                                         //dics.Add("OpTableDateTime",custInfo.OpDate.ToString());   //填表时间 
+                                                                                       //dics.Add("OpTableDateTime",custInfo.OpDate.ToString());   //填表时间 
                             dics.Add("OpTableTel", custInfo.TableOpTel.ToString());     //协助人联系电话
                             dics.Add("OpTableGuanXi", "雇佣");     //和协助人关系
                         }
@@ -9306,6 +9307,52 @@ FROM
 
         #region 共享文件上传
 
+        /// <summary>
+        /// 超支通知推送
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IActionResult> qyWeChatNotification(qyWeChatNotificationDto dto)
+        {
+            //81	邀请/公务活动
+            var syCTable = new List<int> { 81 };
+            //76	酒店预订
+            //79	车/导游地接
+            //85	机票预订
+            var gjCTable = new List<int> { 76, 79, 85 };
+            var jw = JsonView(false);
+            var di = _sqlSugar.Queryable<Grp_DelegationInfo>().First(x => x.IsDel == 0 && x.Id == dto.Diid);
+            if (di == null)
+            {
+                jw.Msg = "团组信息不存在!";
+                return Ok(jw);
+            }
+            var user = _sqlSugar.Queryable<Sys_Users>().First(x => x.IsDel == 0 && x.Id == dto.UserId);
+            if (user == null)
+            {
+                jw.Msg = "用户信息不存在!";
+                return Ok(jw);
+            }
+
+            if (syCTable.Contains(dto.CTable))
+            {
+                await AppNoticeLibrary.SendChatMsg_ExpenseOverrunsChat(dto.Diid, dto.UserId, dto.CTable, QiyeWeChatEnum.ExpenseOverrunsChat02);
+            }
+            else if (gjCTable.Contains(dto.CTable))
+            {
+                await AppNoticeLibrary.SendChatMsg_ExpenseOverrunsChat(dto.Diid, dto.UserId, dto.CTable, QiyeWeChatEnum.ExpenseOverrunsChat01);
+            }
+            else
+            {
+                jw.Msg = "CTABLE类型有误!";
+            }
+
+            jw = JsonView(true, "推送成功!", "");
+
+            return Ok(jw);
+        }
+
         /// <summary>
         /// 共享文件数据初始化
         /// </summary>

+ 5 - 3
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1736,11 +1736,12 @@ WHERE
 
         //     //    //List<string> userList1 = new List<string>() { "Feint", "amy.zhu@pan-american-intl.com", "judy.zeng@pan-american-intl.com", "FuHongJin" };
         //     //    //List<string> userList2 = new List<string>() {  "Feint", "ZhaoYaQi", "LiaoWenYa" };
-        //     List<string> userList3 = new List<string>() { "rongfeng.yuan", "zhaiyang" };
+        //     // List<string> userList3 = new List<string>() { "rongfeng.yuan", "zhaiyang" };
 
         //     //    //GroupStatus_CreateChatView rst1 = await _qiYeWeChatApiService.GroupStatus_CreateChat("团组通知", "Feint", userList1, "CaiWuChat01");
         //     //    //GroupStatus_CreateChatView rst2 = await _qiYeWeChatApiService.GroupStatus_CreateChat("OA通知-国交部", "Feint", userList2, "GuoJiaoLeader01");
-        //     GroupStatus_CreateChatView rst3 = await _qiYeWeChatApiService.GroupStatus_CreateChat("OA通知-机票预算", "rongfeng.yuan", userList3, "AirCostChat01");
+        //     // GroupStatus_CreateChatView rst3 = await _qiYeWeChatApiService.GroupStatus_CreateChat("OA通知-团组超支费用通知", "rongfeng.yuan", userList3, "ExpenseOverrunsChat01");
+        //     // GroupStatus_CreateChatView rst4 = await _qiYeWeChatApiService.GroupStatus_CreateChat("OA通知-团组超支费用通知(商邀)", "rongfeng.yuan", userList3, "ExpenseOverrunsChat02");
 
         //     //    //推送消息(模板)
 
@@ -1768,7 +1769,8 @@ WHERE
         //     //    //List<Grp_DelegationInfo> listAdd3day = new List<Grp_DelegationInfo>() { };
 
         //     //机票预算群通知
-        //     await AppNoticeLibrary.SendChatMsg_AirCostChat(dto.DiId, QiyeWeChatEnum.AirCostChat01);
+        //     await AppNoticeLibrary.SendChatMsg_ExpenseOverrunsChat(dto.DiId, dto.UserId, QiyeWeChatEnum.ExpenseOverrunsChat01);
+        //     await AppNoticeLibrary.SendChatMsg_ExpenseOverrunsChat(dto.DiId, dto.UserId, QiyeWeChatEnum.ExpenseOverrunsChat02);
 
         //     //    //日付申请提醒财务群
         //     //    //AppNoticeLibrary.DailyPayReminders_Create_ToCaiwuChat(dto.DiId, QiyeWeChatEnum.CaiWuChat02);

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

@@ -54,6 +54,18 @@ namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
         /// </summary>
         [Description("AirCostChat01")]
         AirCostChat01,
+
+        /// <summary>
+        /// 团组通知-费用超支群(国交、财务、主管)
+        /// </summary>
+        [Description("ExpenseOverrunsChat01")]
+        ExpenseOverrunsChat01,
+
+        /// <summary>
+        /// 团组通知-费用超支群(商邀、财务、主管)
+        /// </summary>
+        [Description("ExpenseOverrunsChat02")]
+        ExpenseOverrunsChat02,
     }
 
     public class MarkdownLib

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

@@ -1642,6 +1642,35 @@ di.VisitPNumber);
         }
         #endregion
 
+        #region 团组超支费用通知
+        public static async Task<bool> SendChatMsg_ExpenseOverrunsChat(int diId, int userid, int cTable, QiyeWeChatEnum qwEnum)
+        {
+            string chatId = qwEnum.GetEnumDescription();
+            Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId && s.IsDel == 0).First();
+            var operationName = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && s.Id == userid).First()?.CnName ?? "Unknown";
+            var table = _grpDeleRep.Query<Sys_SetData>(s => s.IsDel == 0 && s.Id == cTable && s.STid == 16).First()?.Name ?? "Unknown";
+
+            string markDown = @$"`团组超支费用通知`
+>团组名称:<font color='info'> {groupInfo.TeamName} </font>
+><font color='warning'>此团组{table}版块有超支费用产生(目前因票据未出,无法上传相应票据)</font>
+>更新时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm")}
+>更新人:{operationName}";
+
+            ResponseBase result = await _qiYeWeChatApiService.
+           GroupStatus_SendChatMsg_Markdown(chatId,
+           markDown);
+
+            if (result.errcode != 0)
+            {
+                //抄送日志 
+                return false;
+            }
+
+            return true;
+        }
+
+        #endregion
+
         #region Helper
 
         private static string getClientNameStr(List<SimplClientInfo> list, string origin)

+ 11 - 2
OASystem/OASystem.Domain/Dtos/FileDto/FileDto.cs

@@ -44,6 +44,15 @@ namespace OASystem.Domain.Dtos.FileDto
         public int FileType { get; set; }
     }
 
+    public class qyWeChatNotificationDto
+    {
+        public int CTable { get; set; }
+
+        public int UserId { get; set; }
+
+        public int Diid { get; set; }
+    }
+
     public class QuerySharedFileDto
     {
         public int Diid { get; set; }
@@ -53,7 +62,7 @@ namespace OASystem.Domain.Dtos.FileDto
         public int PageSize { get; set; }
 
         public string FileName { get; set; }
-        
+
         public string StartTime { get; set; }
 
         public string EndTime { get; set; }
@@ -79,7 +88,7 @@ namespace OASystem.Domain.Dtos.FileDto
     {
         public int Ctable { get; set; }
 
-        public int Diid { get;set; }
+        public int Diid { get; set; }
     }
 
     public class DeleteGroupFileDto