Library.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870
  1. using NPOI.SS.Formula.Functions;
  2. using OASystem.Domain.Entities.Financial;
  3. using OASystem.Domain.Entities.Groups;
  4. using OASystem.Domain.ViewModels.Groups;
  5. using OASystem.Domain.ViewModels.QiYeWeChat;
  6. using OASystem.Infrastructure.Repositories.Groups;
  7. namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
  8. {
  9. public static class AppNoticeLibrary
  10. {
  11. private static readonly IQiYeWeChatApiService _qiYeWeChatApiService = AutofacIocManager.Instance.GetService<IQiYeWeChatApiService>();
  12. private static readonly DelegationInfoRepository _grpDeleRep = AutofacIocManager.Instance.GetService<DelegationInfoRepository>();
  13. #region 获取企微Id
  14. public static List<string> GetQiyeChatUserIdList(List<string> userId)
  15. {
  16. List<string> result = new List<string>();
  17. try
  18. {
  19. foreach (string item in userId)
  20. {
  21. int uid = int.Parse(item);
  22. Sys_Users users = _grpDeleRep.Query<Sys_Users>(s => s.Id == uid).First();
  23. if (!string.IsNullOrEmpty(users.QiyeChatUserId))
  24. {
  25. result.Add(users.QiyeChatUserId);
  26. }
  27. }
  28. }
  29. catch (Exception ex)
  30. {
  31. }
  32. return result;
  33. }
  34. #endregion
  35. #region 确认出团
  36. /// <summary>
  37. /// 向指定群聊发送- 确认出团 -通知
  38. /// </summary>
  39. /// <param name="diId"></param>
  40. /// <param name="qwEnum"></param>
  41. /// <returns></returns>
  42. public static async Task<bool> SendChatMsg_GroupStatus_Create(int diId, QiyeWeChatEnum qwEnum)
  43. {
  44. Grp_DelegationInfo entity = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  45. string dateRange = string.Format(@"{0}至{1}", entity.VisitStartDate.ToString("yyyy-MM-dd"), entity.VisitEndDate.ToString("yyyy-MM-dd"));
  46. string grpTypeStr = (_grpDeleRep.Query<Sys_SetData>(s => s.Id == entity.TeamDid).First()).Name;
  47. GroupStatus_CreateModel info = new GroupStatus_CreateModel()
  48. {
  49. ClientName = entity.ClientName,
  50. ClientUnit = entity.ClientUnit,
  51. TeamName = entity.TeamName,
  52. VisitDays = entity.VisitDays,
  53. VisitPNumber = entity.VisitPNumber,
  54. VisitDateRange = dateRange,
  55. TeamDid_Text = grpTypeStr
  56. };
  57. string chatId = qwEnum.GetEnumDescription();
  58. //发送信息
  59. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupStatus_Create(info));
  60. if (result.errcode != 0)
  61. {
  62. //抄送日志
  63. return false;
  64. }
  65. return true;
  66. }
  67. /// <summary>
  68. /// 向指定用户发送- 确认出团 -通知
  69. /// </summary>
  70. /// <param name="diId"></param>
  71. /// <param name="userId"></param>
  72. /// <returns></returns>
  73. public static async Task<bool> SendUserMsg_GroupStatus_Create(int diId, List<string> userId)
  74. {
  75. Grp_DelegationInfo entity = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  76. string dateRange = string.Format(@"{0}至{1}", entity.VisitStartDate.ToString("yyyy-MM-dd"), entity.VisitEndDate.ToString("yyyy-MM-dd"));
  77. string grpTypeStr = (_grpDeleRep.Query<Sys_SetData>(s => s.Id == entity.TeamDid).First()).Name;
  78. GroupStatus_CreateModel info = new GroupStatus_CreateModel()
  79. {
  80. ClientName = entity.ClientName,
  81. ClientUnit = entity.ClientUnit,
  82. TeamName = entity.TeamName,
  83. VisitDays = entity.VisitDays,
  84. VisitPNumber = entity.VisitPNumber,
  85. VisitDateRange = dateRange,
  86. TeamDid_Text = grpTypeStr
  87. };
  88. //发送信息
  89. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  90. if (qwUserIdList.Count > 0)
  91. {
  92. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupStatus_Create(info));
  93. if (result.errcode != 0)
  94. {
  95. //抄送日志
  96. return false;
  97. }
  98. }
  99. return true;
  100. }
  101. #endregion
  102. #region 团组费用审核
  103. /// <summary>
  104. /// 向指定群聊发送- 费用申请 -通知
  105. /// </summary>
  106. /// <param name="diId"></param>
  107. /// <param name="qwEnum"></param>
  108. /// <returns></returns>
  109. public static async Task<bool> SendChatMsg_GroupStatus_ApplyFee(int Grp_CreditCardPaymentId, int sign, QiyeWeChatEnum qwEnum)
  110. {
  111. string chatId = qwEnum.GetEnumDescription();
  112. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  113. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  114. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  115. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  116. List<Grp_CreditCardPayment> entityList = _grpDeleRep
  117. .Query<Grp_CreditCardPayment>(s => s.DIId == ccp.DIId && s.IsDel == 0 && s.CreateUserId > 0 && s.IsAuditGM == 0)
  118. .ToList();
  119. GroupStatus_ApplyFeeModel info = new GroupStatus_ApplyFeeModel()
  120. {
  121. QueueCount = entityList.Count,
  122. TeamName = group.TeamName,
  123. Price = priceStr
  124. };
  125. if (sign == 2)
  126. {
  127. info.TitleStr = "[更新]一项费用待审核";
  128. }
  129. //CTable
  130. #region CTable
  131. if (ccp.CTable == 76)//76,酒店预订
  132. {
  133. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  134. info.CreateDt = _HotelReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  135. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  136. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  137. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  138. info.PriceModule = "酒店预订";
  139. info.PriceName = _HotelReservations.HotelName;
  140. }
  141. else if (ccp.CTable == 79) //79://车/导游地接
  142. {
  143. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  144. info.CreateDt = _CarTouristGuideGroundReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  145. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  146. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  147. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  148. info.PriceModule = "车/导游地接";
  149. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  150. }
  151. else if (ccp.CTable == 80) //签证
  152. {
  153. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  154. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  155. info.CreateDt = _VisaInfos.CreateTime.ToString("yyyy-MM-dd HH:mm");
  156. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  157. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  158. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  159. info.PriceModule = "签证";
  160. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  161. }
  162. else if (ccp.CTable == 81)//邀请/公务活动
  163. {
  164. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  165. info.CreateDt = _InvitationOfficialActivities.CreateTime.ToString("yyyy-MM-dd HH:mm");
  166. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  167. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  168. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  169. info.PriceModule = "邀请/公务活动";
  170. info.PriceName = _InvitationOfficialActivities.InviterArea;
  171. }
  172. else if (ccp.CTable == 82)//团组客户保险
  173. {
  174. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  175. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  176. info.CreateDt = _Customers.CreateTime.ToString("yyyy-MM-dd HH:mm");
  177. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  178. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  179. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  180. info.PriceModule = "团组客户保险";
  181. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  182. }
  183. else if (ccp.CTable == 85) //机票预订
  184. {
  185. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  186. info.CreateDt = _AirTicketReservations.CreateTime.ToString("yyyy-MM-dd HH:mm");
  187. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  188. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  189. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  190. info.PriceModule = "机票预订";
  191. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  192. }
  193. else if (ccp.CTable == 98) //其他款项
  194. {
  195. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  196. info.CreateDt = _DecreasePayments.CreateTime.ToString("yyyy-MM-dd HH:mm");
  197. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  198. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  199. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  200. info.PriceModule = "其他款项";
  201. info.PriceName = _DecreasePayments.PriceName;
  202. }
  203. #endregion
  204. //发送信息
  205. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupStatus_ApplyFee(info));
  206. if (result.errcode != 0)
  207. {
  208. //抄送日志
  209. return false;
  210. }
  211. return true;
  212. }
  213. /// <summary>
  214. /// 向财务群发送费用审核结果通知(审核通过条件下发送)
  215. /// </summary>
  216. /// <param name="Grp_CreditCardPaymentId"></param>
  217. /// <param name="qwEnum"></param>
  218. /// <returns></returns>
  219. public static async Task<bool> SendChatMsg_GroupStatus_AuditFee(int Grp_CreditCardPaymentId, QiyeWeChatEnum qwEnum)
  220. {
  221. string chatId = qwEnum.GetEnumDescription();
  222. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  223. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  224. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  225. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  226. AuditResult_ApplyFee_GroupModel info = new AuditResult_ApplyFee_GroupModel()
  227. {
  228. TeamName = group.TeamName,
  229. Price = priceStr,
  230. GMAuditDate = "-"
  231. };
  232. DateTime gmAuditDt;
  233. bool bGMAuditDt = DateTime.TryParse(ccp.AuditGMDate, out gmAuditDt);
  234. info.GMAuditDate = gmAuditDt.ToString("yyyy-MM-dd HH:mm");
  235. //CTable
  236. #region CTable
  237. if (ccp.CTable == 76)//76,酒店预订
  238. {
  239. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  240. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  241. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  242. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  243. info.PriceModule = "酒店预订";
  244. info.PriceName = _HotelReservations.HotelName;
  245. }
  246. else if (ccp.CTable == 79) //79://车/导游地接
  247. {
  248. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  249. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  250. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  251. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  252. info.PriceModule = "车/导游地接";
  253. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  254. }
  255. else if (ccp.CTable == 80) //签证
  256. {
  257. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  258. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  259. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  260. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  261. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  262. info.PriceModule = "签证";
  263. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  264. }
  265. else if (ccp.CTable == 81)//邀请/公务活动
  266. {
  267. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  268. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  269. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  270. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  271. info.PriceModule = "邀请/公务活动";
  272. info.PriceName = _InvitationOfficialActivities.InviterArea;
  273. }
  274. else if (ccp.CTable == 82)//团组客户保险
  275. {
  276. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  277. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  278. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  279. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  280. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  281. info.PriceModule = "团组客户保险";
  282. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  283. }
  284. else if (ccp.CTable == 85) //机票预订
  285. {
  286. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  287. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  288. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  289. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  290. info.PriceModule = "机票预订";
  291. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  292. }
  293. else if (ccp.CTable == 98) //其他款项
  294. {
  295. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  296. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  297. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  298. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  299. info.PriceModule = "其他款项";
  300. info.PriceName = _DecreasePayments.PriceName;
  301. }
  302. #endregion
  303. //发送信息
  304. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.AuditResult_ApplyFee_Chat(info));
  305. if (result.errcode != 0)
  306. {
  307. //抄送日志
  308. return false;
  309. }
  310. return true;
  311. }
  312. /// <summary>
  313. /// 向指定用户发送-团组费用审核结果
  314. /// </summary>
  315. /// <param name="Grp_CreditCardPaymentId"></param>
  316. /// <param name="userId"></param>
  317. /// <returns></returns>
  318. public static async Task<bool> SendUserMsg_GroupStatus_AuditFee(int Grp_CreditCardPaymentId, List<string> userId, QiyeWeChatEnum qwEnum)
  319. {
  320. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  321. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  322. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  323. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  324. AuditResult_ApplyFee_GroupModel info = new AuditResult_ApplyFee_GroupModel()
  325. {
  326. TeamName = group.TeamName,
  327. Price = priceStr,
  328. GMAuditDate = "-"
  329. };
  330. DateTime gmAuditDt;
  331. bool bGMAuditDt = DateTime.TryParse(ccp.AuditGMDate, out gmAuditDt);
  332. info.GMAuditDate = gmAuditDt.ToString("yyyy-MM-dd HH:mm");
  333. if (ccp.IsAuditGM == 2)
  334. {
  335. info.Result = "总经理审核未通过";
  336. info.ResultColor = "warning";
  337. }
  338. //CTable
  339. #region CTable
  340. if (ccp.CTable == 76)//76,酒店预订
  341. {
  342. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  343. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _HotelReservations.CreateUserId).First();
  344. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  345. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  346. info.PriceModule = "酒店预订";
  347. info.PriceName = _HotelReservations.HotelName;
  348. }
  349. else if (ccp.CTable == 79) //79://车/导游地接
  350. {
  351. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  352. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _CarTouristGuideGroundReservations.CreateUserId).First();
  353. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  354. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  355. info.PriceModule = "车/导游地接";
  356. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  357. }
  358. else if (ccp.CTable == 80) //签证
  359. {
  360. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  361. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  362. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _VisaInfos.CreateUserId).First();
  363. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  364. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  365. info.PriceModule = "签证";
  366. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  367. }
  368. else if (ccp.CTable == 81)//邀请/公务活动
  369. {
  370. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  371. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _InvitationOfficialActivities.CreateUserId).First();
  372. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  373. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  374. info.PriceModule = "邀请/公务活动";
  375. info.PriceName = _InvitationOfficialActivities.InviterArea;
  376. }
  377. else if (ccp.CTable == 82)//团组客户保险
  378. {
  379. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  380. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  381. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _Customers.CreateUserId).First();
  382. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  383. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  384. info.PriceModule = "团组客户保险";
  385. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  386. }
  387. else if (ccp.CTable == 85) //机票预订
  388. {
  389. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  390. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _AirTicketReservations.CreateUserId).First();
  391. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  392. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  393. info.PriceModule = "机票预订";
  394. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  395. }
  396. else if (ccp.CTable == 98) //其他款项
  397. {
  398. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  399. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == _DecreasePayments.CreateUserId).First();
  400. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  401. info.CreateUser = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  402. info.PriceModule = "其他款项";
  403. info.PriceName = _DecreasePayments.PriceName;
  404. }
  405. #endregion
  406. //发送信息
  407. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  408. if (qwUserIdList.Count > 0)
  409. {
  410. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.AuditResult_ApplyFee_User(info));
  411. if (ccp.IsAuditGM == 1)
  412. {
  413. await SendChatMsg_GroupStatus_AuditFee(Grp_CreditCardPaymentId, qwEnum);
  414. }
  415. if (result.errcode != 0)
  416. {
  417. //抄送日志
  418. return false;
  419. }
  420. }
  421. return true;
  422. }
  423. /// <summary>
  424. /// 向指定用户发送-团组费用支付结果
  425. /// </summary>
  426. /// <param name="Grp_CreditCardPaymentId"></param>
  427. /// <param name="userId"></param>
  428. /// <returns></returns>
  429. public static async Task<bool> SendUserMsg_GroupStatus_PayResult(int Grp_CreditCardPaymentId, List<string> userId)
  430. {
  431. Grp_CreditCardPayment ccp = _grpDeleRep.Query<Grp_CreditCardPayment>(s => s.Id == Grp_CreditCardPaymentId).First();
  432. Grp_DelegationInfo group = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == ccp.DIId).First();
  433. Sys_SetData payMoneyCurrencySetData = _grpDeleRep.Query<Sys_SetData>(s => s.Id == ccp.PaymentCurrency).First();
  434. string priceStr = string.Format(@"{0} {1}", ccp.PayMoney, payMoneyCurrencySetData.Name);
  435. PayResult_Group_ToUserModel info = new PayResult_Group_ToUserModel()
  436. {
  437. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  438. Price = priceStr,
  439. TeamName = group.TeamName
  440. };
  441. #region CTable
  442. if (ccp.CTable == 76)//76,酒店预订
  443. {
  444. Grp_HotelReservations _HotelReservations = _grpDeleRep.Query<Grp_HotelReservations>(s => s.Id == ccp.CId).First();
  445. info.PriceModule = "酒店预订";
  446. info.PriceName = _HotelReservations.HotelName;
  447. }
  448. else if (ccp.CTable == 79) //79://车/导游地接
  449. {
  450. Grp_CarTouristGuideGroundReservations _CarTouristGuideGroundReservations = _grpDeleRep.Query<Grp_CarTouristGuideGroundReservations>(s => s.Id == ccp.CId).First();
  451. info.PriceModule = "车/导游地接";
  452. info.PriceName = _CarTouristGuideGroundReservations.PriceName;
  453. }
  454. else if (ccp.CTable == 80) //签证
  455. {
  456. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  457. Grp_VisaInfo _VisaInfos = _grpDeleRep.Query<Grp_VisaInfo>(s => s.Id == ccp.CId).First();
  458. info.PriceModule = "签证";
  459. info.PriceName = getClientNameStr(clientNameList, _VisaInfos.VisaClient);
  460. }
  461. else if (ccp.CTable == 81)//邀请/公务活动
  462. {
  463. Grp_InvitationOfficialActivities _InvitationOfficialActivities = _grpDeleRep.Query<Grp_InvitationOfficialActivities>(s => s.Id == ccp.CId).First();
  464. info.PriceModule = "邀请/公务活动";
  465. info.PriceName = _InvitationOfficialActivities.InviterArea;
  466. }
  467. else if (ccp.CTable == 82)//团组客户保险
  468. {
  469. List<SimplClientInfo> clientNameList = getSimplClientList(group.Id);
  470. Grp_Customers _Customers = _grpDeleRep.Query<Grp_Customers>(s => s.Id == ccp.CId).First();
  471. info.PriceModule = "团组客户保险";
  472. info.PriceName = getClientNameStr(clientNameList, _Customers.ClientName);
  473. }
  474. else if (ccp.CTable == 85) //机票预订
  475. {
  476. Grp_AirTicketReservations _AirTicketReservations = _grpDeleRep.Query<Grp_AirTicketReservations>(s => s.Id == ccp.CId).First();
  477. info.PriceModule = "机票预订";
  478. info.PriceName = "(" + _AirTicketReservations.FlightsCode + ")";
  479. }
  480. else if (ccp.CTable == 98) //其他款项
  481. {
  482. Grp_DecreasePayments _DecreasePayments = _grpDeleRep.Query<Grp_DecreasePayments>(s => s.Id == ccp.CId).First();
  483. info.PriceModule = "其他款项";
  484. info.PriceName = _DecreasePayments.PriceName;
  485. }
  486. #endregion
  487. //发送信息
  488. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  489. if (qwUserIdList.Count > 0)
  490. {
  491. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.PayResult_Group_ToUser(info));
  492. if (result.errcode != 0)
  493. {
  494. //抄送日志
  495. return false;
  496. }
  497. }
  498. return true;
  499. }
  500. #endregion
  501. #region 团组出发、结束提醒(财务群)
  502. public static async Task<bool> SendChatMsg_GroupRemindersToCaiwu(List<Grp_DelegationInfo> list_7day, List<Grp_DelegationInfo> list_3day, QiyeWeChatEnum qwEnum)
  503. {
  504. string chatId = qwEnum.GetEnumDescription();
  505. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.GroupRemindersToCaiwuChat(list_7day, list_3day));
  506. if (result.errcode != 0)
  507. {
  508. //抄送日志
  509. return false;
  510. }
  511. return true;
  512. }
  513. #endregion
  514. #region 日付申请审核
  515. /// <summary>
  516. /// 日付申请提交时推送财务群
  517. /// </summary>
  518. /// <param name="dailyPayId"></param>
  519. /// <param name="qwEnum"></param>
  520. /// <returns></returns>
  521. public static async Task<bool> DailyPayReminders_Create_ToCaiwuChat(int dailyPayId, int sign, QiyeWeChatEnum qwEnum)
  522. {
  523. string chatId = qwEnum.GetEnumDescription();
  524. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  525. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  526. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  527. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  528. string[] companyArr = new string[] { "未知", "成都泛美商务有限公司", "四川泛美交流有限公司", "成都纽茵教育科技有限公司", "成都鸿企中元科技有限公司", "测试公司1" };
  529. string companyStr = "未知";
  530. if (fin_DailyFeePayment.CompanyId < companyArr.Length)
  531. {
  532. companyStr = companyArr[fin_DailyFeePayment.CompanyId];
  533. }
  534. Sys_SetData sd_tansferType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.TransferTypeId).First();
  535. Sys_SetData sd_priceType = _grpDeleRep.Query<Sys_SetData>(s => s.Id == fin_DailyFeePayment.PriceTypeId).First();
  536. string feeSignStr = string.Format(@"{0}-{1}", sd_tansferType.Name, sd_priceType.Name);
  537. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  538. DailyPayReminders_Create_ToCaiwuChatModel info = new DailyPayReminders_Create_ToCaiwuChatModel()
  539. {
  540. CreateDt = fin_DailyFeePayment.CreateTime.ToString("yyyy-MM-dd HH:mm"),
  541. CreateUser = users,
  542. Price = priceStr,
  543. Company = companyStr,
  544. FeeSign = feeSignStr,
  545. PriceName = fin_DailyFeePayment.Instructions
  546. };
  547. if (sign == 2)
  548. {
  549. info.TitleStr = "[更新]一项费用待审核";
  550. }
  551. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminders_Create_ToCaiwuChat(info));
  552. if (result.errcode != 0)
  553. {
  554. //抄送日志
  555. return false;
  556. }
  557. return true;
  558. }
  559. /// <summary>
  560. /// 日付申请审核结果推送给申请人
  561. /// </summary>
  562. /// <param name="dailyPayId"></param>
  563. /// <param name="userId"></param>
  564. /// <param name="qwEnum"></param>
  565. /// <returns></returns>
  566. public static async Task<bool> DailyPayReminder_Audit_ToUser(int dailyPayId, List<string> userId, QiyeWeChatEnum qwEnum)
  567. {
  568. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  569. Sys_Users user = _grpDeleRep.Query<Sys_Users>(s => s.Id == fin_DailyFeePayment.CreateUserId).First();
  570. Sys_JobPost job = _grpDeleRep.Query<Sys_JobPost>(s => s.Id == user.JobPostId).First();
  571. string users = string.Format(@"{0}-{1}", job.JobName, user.CnName);
  572. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  573. DailyPayReminder_Audit_ToUserModel info = new DailyPayReminder_Audit_ToUserModel()
  574. {
  575. Price = priceStr,
  576. PriceName = fin_DailyFeePayment.Instructions
  577. };
  578. if (fin_DailyFeePayment.FAudit == 1)
  579. {
  580. info.AuditDate = fin_DailyFeePayment.MAuditDate.ToString("yyyy-MM-dd HH:mm");
  581. if (fin_DailyFeePayment.MAudit == 1)
  582. {
  583. info.Result = "你有一笔日付申请已通过审核";
  584. info.ResultColor = "info";
  585. //发送至财务群
  586. DailyPayReminder_Audit_ToCaiwuChatModel chatInfo = new DailyPayReminder_Audit_ToCaiwuChatModel()
  587. {
  588. AuditDate = info.AuditDate,
  589. CreateUser = users,
  590. Price = priceStr,
  591. PriceName = fin_DailyFeePayment.Instructions
  592. };
  593. string chatId = qwEnum.GetEnumDescription();
  594. await _qiYeWeChatApiService.GroupStatus_SendChatMsg_Markdown(chatId, MarkdownLib.DailyPayReminder_Audit_ToCaiwuChat(chatInfo));
  595. }
  596. else if (fin_DailyFeePayment.MAudit == 2)
  597. {
  598. info.Result = "你有一笔日付申请未通过总经理审核";
  599. info.ResultColor = "warning";
  600. }
  601. }
  602. else if (fin_DailyFeePayment.FAudit == 2)
  603. {
  604. info.AuditDate = fin_DailyFeePayment.FAuditDate.ToString("yyyy-MM-dd HH:mm");
  605. info.Result = "你有一笔日付申请未通过财务审核";
  606. info.ResultColor = "warning";
  607. }
  608. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  609. if (qwUserIdList.Count > 0)
  610. {
  611. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Audit_ToUser(info));
  612. if (result.errcode != 0)
  613. {
  614. //抄送日志
  615. return false;
  616. }
  617. }
  618. return true;
  619. }
  620. /// <summary>
  621. /// 日付申请已付款推送给申请人
  622. /// </summary>
  623. /// <returns></returns>
  624. public static async Task<bool> DailyPayReminder_Pay_ToUser(int dailyPayId, List<string> userId)
  625. {
  626. Fin_DailyFeePayment fin_DailyFeePayment = _grpDeleRep.Query<Fin_DailyFeePayment>(s => s.Id == dailyPayId).First();
  627. string priceStr = fin_DailyFeePayment.SumPrice.ToString("#0.00");
  628. DailyPayReminder_Pay_ToUserModel info = new DailyPayReminder_Pay_ToUserModel()
  629. {
  630. PayDt = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  631. PriceName = fin_DailyFeePayment.Instructions,
  632. Price = priceStr
  633. };
  634. List<string> qwUserIdList = GetQiyeChatUserIdList(userId);
  635. if (qwUserIdList.Count > 0)
  636. {
  637. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.DailyPayReminder_Pay_ToUser(info));
  638. if (result.errcode != 0)
  639. {
  640. //抄送日志
  641. return false;
  642. }
  643. }
  644. return true;
  645. }
  646. #endregion
  647. #region 成本通知
  648. /// <summary>
  649. /// 成本通知发送给对应岗位用户
  650. /// </summary>
  651. /// <param name="diId"></param>
  652. /// <returns></returns>
  653. public static async Task<bool> SendUserMsg_GroupShare_ToJob(int diId)
  654. {
  655. Grp_DelegationInfo groupInfo = _grpDeleRep.Query<Grp_DelegationInfo>(s => s.Id == diId).First();
  656. List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 24 || s.JobPostId == 25 || s.JobPostId == 28)).ToList();
  657. //List<Sys_Users> list_user = _grpDeleRep.Query<Sys_Users>(s => s.IsDel == 0 && (s.JobPostId == 40 || s.JobPostId == 41)).ToList();
  658. List<string> userIds = new List<string>();
  659. list_user.ForEach(s => userIds.Add(s.Id.ToString()));
  660. List<string> qwUserIdList = GetQiyeChatUserIdList(userIds);
  661. GroupShare_ToUserModel info = new GroupShare_ToUserModel()
  662. {
  663. RefreshDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm"),
  664. TeamName = groupInfo.TeamName
  665. };
  666. if (qwUserIdList.Count > 0)
  667. {
  668. ResponseBase result = await _qiYeWeChatApiService.GroupStatus_SendMessage_ToUser_Markdown(qwUserIdList, MarkdownLib.GroupShare_ToUser(info));
  669. if (result.errcode != 0)
  670. {
  671. //抄送日志
  672. return false;
  673. }
  674. }
  675. return true;
  676. }
  677. #endregion
  678. #region Helper
  679. private static string getClientNameStr(List<SimplClientInfo> list, string origin)
  680. {
  681. string result = origin;
  682. if (Regex.Match(origin, @"\d+,?").Value.Length > 0)
  683. {
  684. string[] temparr = origin.Split(',');
  685. string fistrStr = temparr[0];
  686. int count = temparr.Count();
  687. int tempId;
  688. bool success = int.TryParse(fistrStr, out tempId);
  689. if (success)
  690. {
  691. SimplClientInfo tempInfo = list.FirstOrDefault(s => s.Id == tempId);
  692. if (tempInfo != null)
  693. {
  694. if (count > 1)
  695. {
  696. result = string.Format(@"{0}{1}等{2}人", tempInfo.LastName, tempInfo.FirstName, count);
  697. }
  698. else
  699. {
  700. result = string.Format(@"{0}{1}", tempInfo.LastName, tempInfo.FirstName);
  701. }
  702. }
  703. }
  704. }
  705. return result;
  706. }
  707. private static List<SimplClientInfo> getSimplClientList(int diId)
  708. {
  709. string sql = string.Format("select b.Id,b.Pinyin,b.lastName,b.firstName,b.phone from Grp_TourClientList a, Crm_DeleClient b where a.clientid = b.id and a.isdel = 0 and a.diid = {0}", diId);
  710. List<SimplClientInfo> arr = _grpDeleRep._sqlSugar.SqlQueryable<SimplClientInfo>(sql).ToList();
  711. return arr;
  712. }
  713. #endregion
  714. }
  715. }