Library.cs 37 KB

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