FKYF_SyncService.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using HH.YiDaSyncNC.Dtos.NC;
  2. using HH.YiDaSyncNC.Dtos.YIDA;
  3. using HH.YiDaSyncNC.Helper;
  4. using HH.YiDaSyncNC.Models;
  5. using Newtonsoft.Json;
  6. using SqlSugar;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Configuration;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Xml.Linq;
  14. namespace HH.YiDaSyncNC.DataSync
  15. {
  16. public class FKYF_SyncService
  17. {
  18. public string _AppType;
  19. public string _SystemToken;
  20. public string _UserId;
  21. public string _FormId;
  22. public SqlSugarClient _db;
  23. public SqlSugarClient _db_nc;
  24. public string _NCApiUrl;
  25. public static string _Static_PK_bd_project = ConfigurationManager.AppSettings["bd_project"];
  26. public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
  27. public FKYF_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
  28. {
  29. _AppType = AppType;
  30. _SystemToken = SystemToken;
  31. _UserId = UserId;
  32. _FormId = FormId;
  33. _db = db;
  34. _db_nc = db_nc;
  35. _NCApiUrl = NCApiUrl;
  36. }
  37. public void DataSync()
  38. {
  39. DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
  40. // 宜搭全量数据Id
  41. var serchKeyListJson = new
  42. {
  43. radioField_lycrvvtk = "Y",
  44. selectField_lrnh633d = "预付",
  45. };
  46. var idList = _dingTalkService.GetFormIdList(JsonConvert.SerializeObject(serchKeyListJson));
  47. //LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
  48. #region 获取NC中选项数据的Id
  49. var bd_customerDic = _db_nc.Queryable<bd_customer>().ToList();
  50. var bd_incomeDic = _db_nc.Queryable<bd_income>().ToList();
  51. var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
  52. var bd_projectDic = _db_nc.Queryable<bd_project>().ToList();
  53. var bd_materialDic = _db_nc.Queryable<bd_material>().ToList();
  54. var bd_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
  55. var org_deptDic = _db_nc.Queryable<org_dept>().ToList();
  56. var bd_psndocDic = _db_nc.Queryable<bd_psndoc>().ToList();
  57. var sm_userDic = _db_nc.Queryable<sm_user>().ToList();
  58. var org_accountingbookDic = _db_nc.Queryable<org_accountingbook>().ToList();
  59. #endregion
  60. foreach (var item in idList)
  61. {
  62. string createTime = "";
  63. string modifyTime = "";
  64. var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
  65. string jsonData = JsonConvert.SerializeObject(ydDataSource);
  66. YiDa_SKDNC thisYiDaData = JsonConvert.DeserializeObject<YiDa_SKDNC>(jsonData);
  67. if (string.IsNullOrWhiteSpace(thisYiDaData.selectField_lvywoqmb)) continue;
  68. if (string.IsNullOrWhiteSpace(thisYiDaData.textField_lwitiobt)) continue;
  69. var detailObjFPList1 = thisYiDaData.tableField_lsx02qv5; //发票明细
  70. if (detailObjFPList1 is null || detailObjFPList1.Count == 0) continue;
  71. DateTime 日期 = DateTime.Now;// UnixTimeHelper.ConvertMillisecondsToDateTime(thisYiDaData.dateField_lviv4sfy);
  72. string 组织 = "";
  73. if (!string.IsNullOrWhiteSpace(thisYiDaData.selectField_lvywoqmb))
  74. {
  75. var tempData = org_orgsDic.FirstOrDefault(f => f.name == thisYiDaData.selectField_lvywoqmb);
  76. if (tempData != null)
  77. {
  78. 组织 = tempData.code; // 组织
  79. }
  80. }
  81. string 单据号 = "";
  82. if (!string.IsNullOrWhiteSpace(thisYiDaData.serialNumberField_lwiz0n9f))
  83. {
  84. 单据号 = thisYiDaData.serialNumberField_lwiz0n9f; // 组织
  85. }
  86. string 制单人 = "OA-NC";
  87. // 表头
  88. var headModel = new FKYF_SyncServiceModel.DataModel.voucher_header()
  89. {
  90. billdate = 日期.ToString("yyyy-MM-dd"),
  91. billmaker = 制单人,
  92. billno = 单据号,
  93. billperiod = 日期.ToString("MM"),
  94. billyear = 日期.ToString("yyyy"),
  95. creationtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  96. creator = 制单人,
  97. local_money = thisYiDaData.numberField_lvua3j18.ToString(),
  98. money = thisYiDaData.numberField_lvua3j18.ToString(),
  99. pk_org = 组织,
  100. pu_org = 组织,
  101. pu_deptid = "",
  102. pu_psndoc = "",
  103. };
  104. //表体
  105. var detailList = new List<FKYF_SyncServiceModel.DataModel.voucher_body>();
  106. if (thisYiDaData.tableField_lrngrtgu != null)
  107. {
  108. var detailObjList1 = thisYiDaData.tableField_lrngrtgu; //明细
  109. int index = 1;
  110. foreach (var objItem in detailObjList1)
  111. {
  112. var thisBody = new FKYF_SyncServiceModel.DataModel.voucher_body()
  113. {
  114. sett_org = 组织,
  115. supplier = thisYiDaData.textField_lwitiobt,
  116. pk_subjcode = objItem.textField_lwitioch,
  117. subjcode = objItem.textField_lwitioce,
  118. billdate = 日期.ToString("yyyy-MM-dd"),
  119. busidate = 日期.ToString("yyyy-MM-dd"),
  120. invoiceno = detailObjFPList1.FirstOrDefault().textField_lsx02qv8,
  121. price = objItem.numberField_lvxa4v09.ToString(),// "单价",
  122. taxprice = objItem.numberField_lvua3j17.ToString(),
  123. quantity_cr = "1",//"贷方数量",
  124. money_cr = objItem.numberField_lvua3j17.ToString(),//"贷方原币金额",
  125. notax_cr = objItem.numberField_lvxa4v09.ToString(),//"贷方原币无税金额",
  126. local_money_cr = objItem.numberField_lvua3j17.ToString(),//"组织本币金额(贷方)",
  127. local_notax_cr = objItem.numberField_lvxa4v09.ToString(),//"组织本币无税金额(贷方)",
  128. caltaxmny = objItem.numberField_lvxa4v09.ToString(),//"计税金额",
  129. local_tax_cr = objItem.numberField_lvxa4v08.ToString() ?? "0",//"税额",
  130. taxrate = "13",
  131. pu_org = 组织,
  132. rowno = index.ToString(),
  133. ordercubasdoc = thisYiDaData.textField_lwitiobt,
  134. pk_fiorg = 组织,
  135. pk_org = 组织,
  136. pu_deptid = "",
  137. pk_psndoc = "",
  138. pk_deptid = "",
  139. material = "",
  140. };
  141. detailList.Add(thisBody);
  142. index++;
  143. }
  144. XElement xElement = FKYF_SyncServiceModel.ImportXml_应付单.TemplateHeade(headModel);
  145. xElement.Add(FKYF_SyncServiceModel.ImportXml_应付单.Header(headModel));//添加表头数据
  146. xElement.Element("bill").Element("billhead").Element("bodys").Add(FKYF_SyncServiceModel.ImportXml_应付单.Body(detailList));
  147. //生成凭证
  148. var results_应付单 = NCImportFunc.NCImport2(xElement, _NCApiUrl + "?account=01&groupcode=0");
  149. LogHelper.WriteLog(JsonConvert.SerializeObject(results_应付单), "results_应付单");
  150. }
  151. }
  152. }
  153. }
  154. }