OfRzDataSyncDal.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using DllUfpEntity;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace DllUfpDal
  10. {
  11. /// <summary>
  12. /// 欧非人资系统员工同步
  13. /// </summary>
  14. public class OfRzDataSyncDal
  15. {
  16. /// <summary>
  17. /// 将EAP系统中已离职的员工置为离职状态
  18. /// </summary>
  19. /// <returns></returns>
  20. public async Task Sync()
  21. {
  22. IDatabase eapDb = null;
  23. IDatabase rzDb = null;
  24. string errorinfo = string.Empty;
  25. try
  26. {
  27. eapDb = DbFactory.Base("ufp");
  28. rzDb = DbFactory.Base("OfilmRZ");
  29. var staffs = await eapDb.FindListForConditionAsync<Staff>($" and a.isSa=-1", ref errorinfo);
  30. var disables = new List<Staff>();
  31. if (staffs != null && staffs.Count() > 0)
  32. {
  33. foreach (var item in staffs)
  34. {
  35. var sql = "select name as staffName,psn_code as StaffCode from OFNCHR.hr_hrpsndoc_ccmon " +
  36. $"where SUBSTR(PSN_CODE, 3, LENGTH(PSN_CODE)-2)='{item.FCode}' ";
  37. var rzs = await rzDb.FindListAsync<OfilmRzEmployee>(sql, null);
  38. if (rzs == null || rzs.Count() <= 0)
  39. {
  40. disables.Add(item);
  41. }
  42. }
  43. }
  44. if (disables.Count > 0)
  45. {
  46. var updateSql = $"Update Staff set FStastus = -1 where id in ({string.Join(",", disables.Select(c => $"'{c.ID}'"))})";
  47. eapDb.ExecuteBySql(updateSql);
  48. }
  49. }
  50. catch (Exception e)
  51. {
  52. throw e;
  53. }
  54. finally
  55. {
  56. if (eapDb != null)
  57. eapDb.Close();
  58. if (rzDb != null)
  59. rzDb.Close();
  60. }
  61. }
  62. }
  63. public class OfilmRzEmployee
  64. {
  65. public string StaffCode { get; set; }
  66. public string StaffName { get; set; }
  67. }
  68. }