guoshuang 2 éve%!(EXTRA string=óta)
szülő
commit
c8c54bf716

+ 1 - 1
HH.YiDaSyncNC/DataSync/CGDD_SyncService.cs

@@ -52,7 +52,7 @@ namespace HH.YiDaSyncNC.DataSync
 
             //var idList = _dingTalkService.GetFormIdList();
 
-            //var idList = _dingTalkService.GetFormIdList("{\"textField_lr26y1io\":\"DD202407190167\"}");
+            // var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"textField_lr26y1io\":\"DD202407170157\"}");
 
             LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 

+ 305 - 0
HH.YiDaSyncNC/DataSync/FK_CLBX_SyncService.cs

@@ -0,0 +1,305 @@
+using HH.YiDaSyncNC.Dtos;
+using HH.YiDaSyncNC.Dtos.NC;
+using HH.YiDaSyncNC.Helper;
+using HH.YiDaSyncNC.Models;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.DataSync
+{
+    class FK_CLBX_SyncService
+    {
+        public string _AppType;
+        public string _SystemToken;
+        public string _UserId;
+        public string _FormId;
+        public SqlSugarClient _db;
+        public SqlSugarClient _db_nc;
+        public string _NCApiUrl;
+
+        public static string _Static_PK_bd_project = ConfigurationManager.AppSettings["bd_project"];
+        public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
+
+        public FK_CLBX_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
+        {
+            _AppType = AppType;
+            _SystemToken = SystemToken;
+            _UserId = UserId;
+            _FormId = FormId;
+            _db = db;
+            _db_nc = db_nc;
+            _NCApiUrl = NCApiUrl;
+        }
+
+        public class IdCodeModel
+        {
+            public int sourceId { get; set; }
+            public string Id { get; set; }
+        }
+
+        public class FormItem
+        {
+            public string title { get; set; }
+        }
+
+        public void DataSync()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            // 宜搭全量数据Id
+            var idList = _dingTalkService.GetFormCodeList("");
+
+            // var idList = _dingTalkService.GetFormIdList("{\"serialNumberField_lsx02quw\":\"FYBX202407070062\"}");
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            #region 获取NC中选项数据的Id
+            var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
+            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            var bd_projectDic = _db_nc.Queryable<bd_project>().ToList();
+            var org_deptDic = _db_nc.Queryable<org_dept>().ToList();
+            #endregion
+
+            #region 插入数据
+            // 向NC插入数据
+            foreach (var item in idList)
+            {
+
+                string createTime = "";
+                string modifyTime = "";
+
+                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+                // 如果NC单据号为空,说明没有传入过NC,此时需要走此逻辑去传输
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                {
+                    continue;
+                }
+
+                var ncResData = new List<YiDaResDto>();
+
+                #region 表头
+
+                // 表头
+                var dataSource = new FK_CLBX_SyncServiceModel.DataModel();
+
+                if (!string.IsNullOrWhiteSpace(ydDataSource["associationFormField_lvyplgvg_id"].ToString()))
+                {
+                    var sourceStr = ydDataSource["associationFormField_lvyplgvg_id"].ToString().Replace("\\", "");
+                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+
+                    var tempData = org_orgsDic.FirstOrDefault(f => f.name == b[0].title);
+                    if (tempData != null)
+                    {
+                        dataSource.组织 = tempData.code; // 组织
+                    }
+                }
+
+                dataSource.支付人 = "OA-NC";
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "dateField_lsx0pirp").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["dateField_lsx0pirp"].ToString()))
+                {
+                    dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lsx0pirp"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+                else
+                {
+                    var resData = new YiDaResDto();
+                    resData.bSuccess = false;
+                    resData.syncTime = DateTime.Now;
+                    resData.ncNo = "";
+                    resData.log = "付款银行账户为空,NC无法执行审批操作";
+
+                    _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+                    continue;
+                }
+
+                dataSource.创建人 = "OA-NC";
+                dataSource.制单人 = "OA-NC";
+                dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.生效人 = "OA-NC";
+                dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
+                dataSource.付款银行账户 = ydDataSource["textField_lsx02qvj"].ToString().Trim().Replace(" ", "");
+
+                dataSource.年份 = DateTime.Now.ToString("yyyy");
+                dataSource.月份 = DateTime.Now.ToString("MM");
+
+                dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // 判断是项目、或是部门
+                // 如果通过新字段取不到,则取老字段
+                var xmbmValue = "";
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lysgxw9d").Value != null)
+                {
+                    xmbmValue = ydDataSource["selectField_lysgxw9d"].ToString();
+                }
+                else
+                {
+                    if (ydDataSource.FirstOrDefault(f => f.Key == "departmentSelectField_lvuaqzvf").Value != null)
+                    {
+                        if (!string.IsNullOrWhiteSpace(ydDataSource["departmentSelectField_lvuaqzvf"].ToString()))
+                        {
+                            xmbmValue = JsonConvert.DeserializeObject<List<string>>(JsonConvert.SerializeObject(ydDataSource["departmentSelectField_lvuaqzvf"]))[0];
+                        }
+                    }
+                }
+
+                var project = bd_projectDic.FirstOrDefault(f => f.project_name == xmbmValue); ;
+                var dept = org_deptDic.FirstOrDefault(f => f.name == xmbmValue);
+
+                if (project != null)
+                {
+                    dataSource.项目 = project.project_code;
+                }
+                else if (dept != null)
+                {
+                    dataSource.部门 = dept.code;
+                }
+
+                #endregion
+
+                var detailList = new List<FK_CLBX_SyncServiceModel.DataModel.Item>();
+
+                // 交通费(车船票)
+                if (ydDataSource.FirstOrDefault(f => f.Key == "numberField_lujixr38").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["numberField_lujixr38"].ToString()) && ydDataSource["numberField_lujixr38"].ToString() != "0")
+                {
+                    var detailItem = new FK_CLBX_SyncServiceModel.DataModel.Item();
+                    detailItem.收支项目 = "2";
+                    detailItem.价税合计 = ydDataSource["numberField_lujixr38"].ToString();
+                    detailItem.无税金额 = ydDataSource["numberField_lujixr38"].ToString();
+                    detailItem.税额 = "0";
+                    detailList.Add(detailItem);
+                }
+
+                // 住宿费
+                if (ydDataSource.FirstOrDefault(f => f.Key == "numberField_lvuk32z0").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["numberField_lvuk32z0"].ToString()) && ydDataSource["numberField_lvuk32z0"].ToString() != "0")
+                {
+                    var detailItem = new FK_CLBX_SyncServiceModel.DataModel.Item();
+                    detailItem.收支项目 = "1";
+                    detailItem.价税合计 = ydDataSource["numberField_lvuk32z0"].ToString();
+                    detailItem.无税金额 = ydDataSource["numberField_lvuk32z0"].ToString();
+                    detailItem.税额 = "0";
+                    detailList.Add(detailItem);
+                }
+
+                // 餐费
+                if (ydDataSource.FirstOrDefault(f => f.Key == "numberField_lujixr39").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["numberField_lujixr39"].ToString()) && ydDataSource["numberField_lujixr39"].ToString() != "0")
+                {
+                    var detailItem = new FK_CLBX_SyncServiceModel.DataModel.Item();
+                    detailItem.收支项目 = "3";
+                    detailItem.价税合计 = ydDataSource["numberField_lujixr39"].ToString();
+                    detailItem.无税金额 = ydDataSource["numberField_lujixr39"].ToString();
+                    detailItem.税额 = "0";
+                    detailList.Add(detailItem);
+                }
+
+                // 交通费
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_lujixr3b").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_lujixr3b"].ToString()) && ydDataSource["textField_lujixr3b"].ToString() != "0")
+                {
+                    var detailItem = new FK_CLBX_SyncServiceModel.DataModel.Item();
+                    detailItem.收支项目 = "2";
+                    detailItem.价税合计 = ydDataSource["textField_lujixr3b"].ToString();
+                    detailItem.无税金额 = ydDataSource["textField_lujixr3b"].ToString();
+                    detailItem.税额 = "0";
+                    detailList.Add(detailItem);
+                }
+
+                dataSource.明细 = detailList;
+                dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
+
+                var results = NCImportFunc.NCImport(FK_CLBX_SyncServiceModel.ImportXml.TemplateHeade(), FK_CLBX_SyncServiceModel.ImportXml.Header(dataSource, item + "_clbx"), _NCApiUrl + "?account=LY01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
+
+                XElement xE = XElement.Parse(results);
+                string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+                string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+
+                    var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
+
+                    foreach (var recitem in recitemData)
+                    {
+                        var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
+
+                        recitem.scomment = a.摘要;
+
+                        _db_nc.Updateable(recitem).ExecuteCommand();
+                    }
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription + "】!"
+                    });
+                }
+
+                var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
+
+                if (results_付款单审核.state == 0)
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = "",
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
+                    });
+                }
+
+                var finalResData = new YiDaResDto();
+
+                if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
+                {
+                    finalResData.bSuccess = false;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+                else
+                {
+                    finalResData.bSuccess = true;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+
+                var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
+            }
+            #endregion
+        }
+    }
+}

+ 323 - 0
HH.YiDaSyncNC/DataSync/FK_FYBX_SyncService.cs

@@ -0,0 +1,323 @@
+using HH.YiDaSyncNC.Dtos;
+using HH.YiDaSyncNC.Dtos.NC;
+using HH.YiDaSyncNC.Helper;
+using HH.YiDaSyncNC.Models;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.DataSync
+{
+    class FK_FYBX_SyncService
+    {
+        public string _AppType;
+        public string _SystemToken;
+        public string _UserId;
+        public string _FormId;
+        public SqlSugarClient _db;
+        public SqlSugarClient _db_nc;
+        public string _NCApiUrl;
+
+        public static string _Static_PK_bd_project = ConfigurationManager.AppSettings["bd_project"];
+        public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
+
+        public FK_FYBX_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
+        {
+            _AppType = AppType;
+            _SystemToken = SystemToken;
+            _UserId = UserId;
+            _FormId = FormId;
+            _db = db;
+            _db_nc = db_nc;
+            _NCApiUrl = NCApiUrl;
+        }
+
+        public class IdCodeModel
+        {
+            public int sourceId { get; set; }
+            public string Id { get; set; }
+        }
+
+        public class FormItem
+        {
+            public string title { get; set; }
+        }
+
+        public void DataSync()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            // 宜搭全量数据Id
+            var idList = _dingTalkService.GetFormCodeList("");
+
+            // var idList = _dingTalkService.GetFormIdList("{\"serialNumberField_lsx02quw\":\"FYBX202407170105\"}");
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            #region 获取NC中选项数据的Id
+            var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
+            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            #endregion
+
+            #region 插入数据
+            // 向NC插入数据
+            foreach (var item in idList)
+            {
+
+                string createTime = "";
+                string modifyTime = "";
+
+                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+                // 如果NC单据号为空,说明没有传入过NC,此时需要走此逻辑去传输
+                if (ydDataSource.FirstOrDefault(f => f.Key == "textField_ltxyt75m").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["textField_ltxyt75m"].ToString()))
+                {
+                    continue;
+                }
+
+                var ncResData = new List<YiDaResDto>();
+
+                #region 表头
+
+                // 表头
+                var dataSource = new FK_FYBX_SyncServiceModel.DataModel();
+
+                if (!string.IsNullOrWhiteSpace(ydDataSource["associationFormField_lvyplgvg_id"].ToString()))
+                {
+                    var sourceStr = ydDataSource["associationFormField_lvyplgvg_id"].ToString().Replace("\\", "");
+                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+
+                    var tempData = org_orgsDic.FirstOrDefault(f => f.name == b[0].title);
+                    if (tempData != null)
+                    {
+                        dataSource.组织 = tempData.code; // 组织
+                    }
+                }
+
+                dataSource.支付人 = "OA-NC";
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "dateField_lsx0pirp").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["dateField_lsx0pirp"].ToString()))
+                {
+                    dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lsx0pirp"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+                else
+                {
+                    var resData = new YiDaResDto();
+                    resData.bSuccess = false;
+                    resData.syncTime = DateTime.Now;
+                    resData.ncNo = "";
+                    resData.log = "付款银行账户为空,NC无法执行审批操作";
+
+                    _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+                    continue;
+                }
+
+                dataSource.创建人 = "OA-NC";
+                dataSource.制单人 = "OA-NC";
+                dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.生效人 = "OA-NC";
+                dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
+                dataSource.付款银行账户 = ydDataSource["textField_lsx02qvj"].ToString().Trim().Replace(" ", "");
+
+                dataSource.年份 = DateTime.Now.ToString("yyyy");
+                dataSource.月份 = DateTime.Now.ToString("MM");
+
+                dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // 价税合计
+
+                #endregion
+
+                var detailList = new List<FK_FYBX_SyncServiceModel.DataModel.Item>();
+
+                #region 明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrngrtgu").Value != null)
+                {
+                    var detailObjList1 = (List<object>)ydDataSource["tableField_lrngrtgu"]; // 付款明细
+
+                    if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["numberField_lrnh633o"].ToString()))
+                    {
+                        foreach (var objItem in detailObjList1)
+                        {
+                            var detailItem = new FK_FYBX_SyncServiceModel.DataModel.Item();
+
+                            var hsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lrnh633o"].ToString());
+
+                            decimal se = 0;
+
+                            if (((Dictionary<string, object>)objItem).FirstOrDefault(f => f.Key == "dateField_lsx0pirp").Value != null)
+                            {
+                                se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lrnh633p"].ToString());
+                            }
+
+                            decimal wsje = 0;
+
+                            if (((Dictionary<string, object>)objItem).FirstOrDefault(f => f.Key == "numberField_lrnh633q").Value != null)
+                            {
+                                wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lrnh633q"].ToString());
+                            }
+
+                            // 含税金额
+                            detailItem.价税合计 = hsje.ToString();
+
+                            // 无税金额
+                            detailItem.无税金额 = wsje.ToString();
+
+                            // 税额
+                            detailItem.税额 = se.ToString();
+
+                            detailItem.摘要 = ((Dictionary<string, object>)objItem)["textField_lrngrtgy"].ToString();
+
+                            detailItem.科目 = ((Dictionary<string, object>)objItem)["textField_lrnh633r"].ToString();
+
+                            if (((Dictionary<string, object>)objItem).FirstOrDefault(f => f.Key == "textField_ly7257rx").Value != null)
+                            {
+                                var a = ((Dictionary<string, object>)objItem)["textField_ly7257rx"].ToString();
+                                if (a.Contains("PM"))
+                                    detailItem.项目 = a;
+                                else
+                                    detailItem.部门 = a;
+                            }
+
+                            detailList.Add(detailItem);
+                        }
+                    }
+                }
+                #endregion
+
+                if (detailList.FirstOrDefault(f => !string.IsNullOrWhiteSpace(f.项目)) == null && detailList.FirstOrDefault(f => !string.IsNullOrWhiteSpace(f.部门)) == null)
+                {
+                    var resData = new YiDaResDto();
+                    resData.bSuccess = false;
+                    resData.syncTime = DateTime.Now;
+                    resData.ncNo = "";
+                    resData.log = "明细行中项目或部门ID为空";
+
+                    _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+                    continue;
+                }
+
+                dataSource.明细 = detailList;
+                dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
+
+                var invNumList = new List<string>();
+
+                #region 发票明细(用于拼接发票号)
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvuaqzva").Value != null)
+                {
+                    var detailObjList1 = (List<object>)ydDataSource["tableField_lvuaqzva"];
+
+                    if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["textField_lvuaqzvb"].ToString()))
+                    {
+                        foreach (var objItem in detailObjList1)
+                        {
+                            invNumList.Add(((Dictionary<string, object>)objItem)["textField_lvuaqzvb"].ToString());
+                        }
+                    }
+                }
+                #endregion
+
+                if (invNumList.Count > 0)
+                {
+                    dataSource.发票号 = string.Join(",", invNumList);
+
+                    if (dataSource.发票号.Length >= 101)
+                        dataSource.发票号 = dataSource.发票号.Substring(1, 100);
+                }
+
+                var results = NCImportFunc.NCImport(FK_FYBX_SyncServiceModel.ImportXml.TemplateHeade(), FK_FYBX_SyncServiceModel.ImportXml.Header(dataSource, item + "fybx"), _NCApiUrl + "?account=LY01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
+
+                XElement xE = XElement.Parse(results);
+                string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+                string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+
+                    var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
+
+                    foreach (var recitem in recitemData)
+                    {
+                        var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
+
+                        recitem.scomment = a.摘要;
+
+                        _db_nc.Updateable(recitem).ExecuteCommand();
+                    }
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription + "】!"
+                    });
+                }
+
+                var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
+
+                if (results_付款单审核.state == 0)
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = "",
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
+                    });
+                }
+
+                var finalResData = new YiDaResDto();
+
+                if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
+                {
+                    finalResData.bSuccess = false;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+                else
+                {
+                    finalResData.bSuccess = true;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+
+                var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
+            }
+            #endregion
+        }
+    }
+}

+ 489 - 0
HH.YiDaSyncNC/DataSync/FK_XZ_SyncService.cs

@@ -0,0 +1,489 @@
+using HH.YiDaSyncNC.Dtos;
+using HH.YiDaSyncNC.Dtos.NC;
+using HH.YiDaSyncNC.Helper;
+using HH.YiDaSyncNC.Models;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.DataSync
+{
+    class FK_XZ_SyncService
+    {
+        public string _AppType;
+        public string _SystemToken;
+        public string _UserId;
+        public string _FormId;
+        public SqlSugarClient _db;
+        public SqlSugarClient _db_nc;
+        public string _NCApiUrl;
+
+        public static string _Static_PK_bd_project = ConfigurationManager.AppSettings["bd_project"];
+        public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
+
+        public FK_XZ_SyncService(string AppType, string SystemToken, string UserId, string FormId, SqlSugarClient db, SqlSugarClient db_nc, string NCApiUrl)
+        {
+            _AppType = AppType;
+            _SystemToken = SystemToken;
+            _UserId = UserId;
+            _FormId = FormId;
+            _db = db;
+            _db_nc = db_nc;
+            _NCApiUrl = NCApiUrl;
+        }
+
+        public class IdCodeModel
+        {
+            public int sourceId { get; set; }
+            public string Id { get; set; }
+        }
+
+        public void DataSync_公积金()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            // 宜搭全量数据Id
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"应付\",\"selectField_lwiuvaws\":\"发放公积金\"}");
+
+            //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
+
+            //var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024070500023\"}");
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            #region 获取NC中选项数据的Id
+            var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
+            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            #endregion
+
+            #region 插入数据
+            // 向NC插入数据
+            foreach (var item in idList)
+            {
+
+                string createTime = "";
+                string modifyTime = "";
+
+                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+                var ncResData = new List<YiDaResDto>();
+
+                #region 表头
+                // 表头
+                var dataSource = new FK_XZ_SyncServiceModel.DataModel();
+
+                dataSource.付款类型 = "F3-Cxx-008";
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvywoqmb").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvywoqmb"].ToString()))
+                    {
+                        var tempData = org_orgsDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvywoqmb"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.组织 = tempData.code; // 组织
+                        }
+                    }
+                }
+
+                dataSource.支付人 = "OA-NC";
+
+                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
+                {
+                    dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+
+                dataSource.创建人 = "OA-NC";
+                dataSource.制单人 = "OA-NC";
+                dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.生效人 = "OA-NC";
+                dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
+                dataSource.供应商 = ydDataSource["textField_lwitiobt"].ToString();
+                dataSource.付款银行账户 = ydDataSource["textField_lrngrtgj"].ToString().Trim().Replace(" ", "");
+
+                dataSource.年份 = DateTime.Now.ToString("yyyy");
+                dataSource.月份 = DateTime.Now.ToString("MM");
+
+                dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // 价税合计
+
+                #endregion
+
+                var detailList = new List<FK_XZ_SyncServiceModel.DataModel.Item>();
+
+                #region 明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrngrtgu").Value != null)
+                {
+                    var detailObjList1 = (List<object>)ydDataSource["tableField_lrngrtgu"]; // 付款明细
+
+                    if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["numberField_lvua3j17"].ToString()))
+                    {
+                        foreach (var objItem in detailObjList1)
+                        {
+                            var detailItem = new FK_XZ_SyncServiceModel.DataModel.Item();
+
+                            var hsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvua3j17"].ToString());
+                            //var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v08"].ToString());
+                            //var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v09"].ToString());
+
+                            // 含税金额
+                            detailItem.价税合计 = hsje.ToString();
+
+                            // 无税金额
+                            detailItem.无税金额 = hsje.ToString();
+
+                            // 税额
+                            detailItem.税额 = "0";
+
+                            detailItem.摘要 = ((Dictionary<string, object>)objItem)["textField_lvxa4v05"].ToString();
+
+                            detailItem.科目 = ((Dictionary<string, object>)objItem)["textField_lwitioce"].ToString();
+
+                            var a = ((Dictionary<string, object>)objItem)["textField_lypfw8rw"].ToString();
+                            if (a.Contains("PM"))
+                                detailItem.项目 = a;
+                            else
+                                detailItem.部门 = a;
+
+                            var cdzt = ((Dictionary<string, object>)objItem)["selectField_lwiufn1k"].ToString();
+
+                            detailItem.承担主体 = cdzt == "公司" ? "1001G1100000000B83QS" : cdzt == "个人" ? "1001G1100000000B83QT" : "";
+
+                            detailList.Add(detailItem);
+                        }
+                    }
+                }
+                #endregion
+
+                dataSource.明细 = detailList;
+                dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
+
+                if (string.IsNullOrWhiteSpace(dataSource.付款银行账户))
+                {
+                    var resData = new YiDaResDto();
+                    resData.bSuccess = false;
+                    resData.syncTime = DateTime.Now;
+                    resData.ncNo = "";
+                    resData.log = "付款银行账户为空,NC无法执行审批操作";
+
+                    _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+                    continue;
+                }
+
+                var results = NCImportFunc.NCImport(FK_XZ_SyncServiceModel.ImportXml.TemplateHeade(), FK_XZ_SyncServiceModel.ImportXml.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
+
+                XElement xE = XElement.Parse(results);
+                string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+                string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+
+                    var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
+
+                    foreach (var recitem in recitemData)
+                    {
+                        var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
+
+                        recitem.scomment = a.摘要;
+
+                        _db_nc.Updateable(recitem).ExecuteCommand();
+                    }
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription + "】!"
+                    });
+                }
+
+                var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
+
+                if (results_付款单审核.state == 0)
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = "",
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
+                    });
+                }
+
+                var finalResData = new YiDaResDto();
+
+                if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
+                {
+                    finalResData.bSuccess = false;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+                else
+                {
+                    finalResData.bSuccess = true;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+
+                var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
+            }
+            #endregion
+        }
+
+        public void DataSync_社保()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            // 宜搭全量数据Id
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lrnh633d\":\"应付\",\"selectField_lwiuvaws\":\"发放社保\"}");
+
+            //var idList = _dingTalkService.GetFormIdList("{\"selectField_lwiuvaws\":\"日常费用付款\",\"selectField_lrnh633d\":\"结付\"}");
+
+            //var idList = _dingTalkService.GetFormIdList("{\"textField_lvj2jklf\":\"FK2024070500023\"}");
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            #region 获取NC中选项数据的Id
+            var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
+            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            #endregion
+
+            #region 插入数据
+            // 向NC插入数据
+            foreach (var item in idList)
+            {
+
+                string createTime = "";
+                string modifyTime = "";
+
+                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+                var ncResData = new List<YiDaResDto>();
+
+                #region 表头
+                // 表头
+                var dataSource = new FK_XZ_SyncServiceModel.DataModel();
+
+                dataSource.付款类型 = "F3-Cxx-009";
+
+                if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lvywoqmb").Value != null)
+                {
+                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvywoqmb"].ToString()))
+                    {
+                        var tempData = org_orgsDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lvywoqmb"].ToString());
+                        if (tempData != null)
+                        {
+                            dataSource.组织 = tempData.code; // 组织
+                        }
+                    }
+                }
+
+                dataSource.支付人 = "OA-NC";
+
+                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lwitiobz"].ToString()))
+                {
+                    dataSource.支付日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lwitiobz"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+
+                dataSource.创建人 = "OA-NC";
+                dataSource.制单人 = "OA-NC";
+                dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.生效人 = "OA-NC";
+                dataSource.生效日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                dataSource.发票号 = ydDataSource["textField_lw7erc7d"].ToString();
+                dataSource.供应商 = ydDataSource["textField_lwitiobt"].ToString();
+                dataSource.付款银行账户 = ydDataSource["textField_lrngrtgj"].ToString().Trim().Replace(" ", "");
+
+                dataSource.年份 = DateTime.Now.ToString("yyyy");
+                dataSource.月份 = DateTime.Now.ToString("MM");
+
+                dataSource.起算日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                // 价税合计
+
+                #endregion
+
+                var detailList = new List<FK_XZ_SyncServiceModel.DataModel.Item>();
+
+                #region 明细
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrngrtgu").Value != null)
+                {
+                    var detailObjList1 = (List<object>)ydDataSource["tableField_lrngrtgu"]; // 付款明细
+
+                    if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["numberField_lvua3j17"].ToString()))
+                    {
+                        foreach (var objItem in detailObjList1)
+                        {
+                            var detailItem = new FK_XZ_SyncServiceModel.DataModel.Item();
+
+                            var hsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvua3j17"].ToString());
+                            //var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v08"].ToString());
+                            //var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvxa4v09"].ToString());
+
+                            // 含税金额
+                            detailItem.价税合计 = hsje.ToString();
+
+                            // 无税金额
+                            detailItem.无税金额 = hsje.ToString();
+
+
+
+                            // 税额
+                            detailItem.税额 = "0";
+
+                            detailItem.摘要 = ((Dictionary<string, object>)objItem)["textField_lvxa4v05"].ToString();
+
+                            detailItem.科目 = ((Dictionary<string, object>)objItem)["textField_lwitioce"].ToString();
+
+                            var a = ((Dictionary<string, object>)objItem)["textField_lypfw8rw"].ToString();
+                            if (a.Contains("PM"))
+                                detailItem.项目 = a;
+                            else
+                                detailItem.部门 = a;
+
+                            var cdzt = ((Dictionary<string, object>)objItem)["selectField_lwiufn1k"].ToString();
+
+                            detailItem.承担主体 = cdzt == "公司" ? "1001G1100000000B83QS" : cdzt == "个人" ? "1001G1100000000B83QT" : "";
+
+                            detailList.Add(detailItem);
+                        }
+                    }
+                }
+                #endregion
+
+                dataSource.明细 = detailList;
+                dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
+
+                if (string.IsNullOrWhiteSpace(dataSource.付款银行账户))
+                {
+                    var resData = new YiDaResDto();
+                    resData.bSuccess = false;
+                    resData.syncTime = DateTime.Now;
+                    resData.ncNo = "";
+                    resData.log = "付款银行账户为空,NC无法执行审批操作";
+
+                    _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+                    continue;
+                }
+
+                var results = NCImportFunc.NCImport(FK_XZ_SyncServiceModel.ImportXml.TemplateHeade(), FK_XZ_SyncServiceModel.ImportXml.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results), "results");
+
+                XElement xE = XElement.Parse(results);
+                string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+                string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+
+                if (resultcode == "1")
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = xE.Element("sendresult").Element("content").Value,
+                        log = "同步成功!"
+                    });
+
+                    var recitemData = _db_nc.Queryable<ap_payitem>().Where(w => w.pk_paybill == xE.Element("sendresult").Element("content").Value).ToList();
+
+                    foreach (var recitem in recitemData)
+                    {
+                        var a = dataSource.明细.FirstOrDefault(f => f.无税金额 == recitem.def11);
+
+                        recitem.scomment = a.摘要;
+
+                        _db_nc.Updateable(recitem).ExecuteCommand();
+                    }
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + resultdescription + "】!"
+                    });
+                }
+
+                var results_付款单审核 = HttpRequestHelper.ApproveNCFKBill(xE.Element("sendresult").Element("content").Value);
+
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_付款单审核), "results_付款单审核");
+
+                if (results_付款单审核.state == 0)
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = true,
+                        ncNo = "",
+                        log = "同步成功!"
+                    });
+                }
+                else
+                {
+                    ncResData.Add(new YiDaResDto()
+                    {
+                        bSuccess = false,
+                        ncNo = "",
+                        log = "同步失败!原因为【" + results_付款单审核.msg + "】!"
+                    });
+                }
+
+                var finalResData = new YiDaResDto();
+
+                if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)
+                {
+                    finalResData.bSuccess = false;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+                else
+                {
+                    finalResData.bSuccess = true;
+                    finalResData.syncTime = DateTime.Now;
+                    finalResData.ncNo = xE.Element("sendresult").Element("content").Value;
+                    finalResData.log = string.Join(" || ", ncResData.Select(s => s.log));
+                }
+
+                var ydRes = _dingTalkService.UpdateFormDataSyncDataById(finalResData, item);
+            }
+            #endregion
+        }
+    }
+}

+ 2 - 2
HH.YiDaSyncNC/DataSync/KP_SyncService.cs

@@ -459,7 +459,7 @@ namespace HH.YiDaSyncNC.DataSync
                 dataSource.价税合计 = dataSource.明细.Sum(s => Convert.ToDecimal(s.价税合计)).ToString();
 
 
-                var results_销售订单 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售订单.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售订单.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
+                var results_销售订单 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售订单.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售订单.Header(dataSource, item + DateTime.Now.ToString("MMddHHmmss")), _NCApiUrl + "?account=LY01&groupcode=0");
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售订单), "results_销售订单");
 
@@ -501,7 +501,7 @@ namespace HH.YiDaSyncNC.DataSync
                     detailItem.销售订单子表id = saleorderbData.FirstOrDefault(f => f.vbdef10 == detailItem.行id).csaleorderbid;
                 }
 
-                var results_销售发票 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售发票.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售发票.Header(dataSource, item), _NCApiUrl + "?account=LY01&groupcode=0");
+                var results_销售发票 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_销售发票.TemplateHeade(), KP_SyncServiceModel.ImportXml_销售发票.Header(dataSource, item + DateTime.Now.ToString("MMddHHmmss")), _NCApiUrl + "?account=LY01&groupcode=0");
 
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售发票), "results_销售发票");

+ 27 - 0
HH.YiDaSyncNC/Dtos/NC/ap_paybill.cs

@@ -0,0 +1,27 @@
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace HH.YiDaSyncNC.Dtos.NC
+{
+    [SugarTable("ap_paybill")]
+    public class ap_paybill
+    {
+        public ap_paybill()
+        {
+
+        }
+        /// <summary>
+        /// Desc:
+        /// Default:
+        /// Nullable:False
+        /// </summary>           
+        [SugarColumn(IsPrimaryKey = true)]
+        public string pk_paybill { get; set; }
+
+        public string invoiceno { get; set; }
+    }
+}

+ 7 - 0
HH.YiDaSyncNC/HH.YiDaSyncNC.csproj

@@ -128,7 +128,10 @@
     <Compile Include="DataSync\BX_SyncService.cs" />
     <Compile Include="DataSync\FKGL_SyncService.cs" />
     <Compile Include="DataSync\FKYF_SyncService.cs" />
+    <Compile Include="DataSync\FK_CLBX_SyncService.cs" />
+    <Compile Include="DataSync\FK_FYBX_SyncService.cs" />
     <Compile Include="DataSync\FK_FKD_SyncService.cs" />
+    <Compile Include="DataSync\FK_XZ_SyncService.cs" />
     <Compile Include="DataSync\FK_SyncService.cs" />
     <Compile Include="DataSync\HKD_GL_SyncService.cs" />
     <Compile Include="DataSync\KH_SyncService.cs" />
@@ -138,6 +141,7 @@
     <Compile Include="DataSync\ZC_SyncService.cs" />
     <Compile Include="DataSync\XMD_SyncService.cs" />
     <Compile Include="DataSync\WL_SyncService.cs" />
+    <Compile Include="Dtos\NC\ap_paybill.cs" />
     <Compile Include="Dtos\NC\ap_payitem.cs" />
     <Compile Include="DataSync\ZZD_GL_SyncService.cs" />
     <Compile Include="Dtos\NC\bd_defdoc.cs" />
@@ -193,7 +197,10 @@
     <Compile Include="Helper\UnixTimeHelper.cs" />
     <Compile Include="Models\FKGL_SyncServiceModel.cs" />
     <Compile Include="Models\FKYF_SyncServiceModel.cs" />
+    <Compile Include="Models\FK_CLBX_SyncServiceModel.cs" />
+    <Compile Include="Models\FK_FYBX_SyncServiceModel.cs" />
     <Compile Include="Models\FK_FKD_SyncServiceModel.cs" />
+    <Compile Include="Models\FK_XZ_SyncServiceModel.cs" />
     <Compile Include="Models\FK_SyncServiceModel.cs" />
     <Compile Include="Models\HKD_GL_SyncServiceModel.cs" />
     <Compile Include="Models\XSFP_SyncServiceModel.cs" />

+ 1 - 0
HH.YiDaSyncNC/Helper/DingTalkService.cs

@@ -240,6 +240,7 @@ namespace HH.YiDaSyncNC.Helper
             }
         }
         #endregion
+
         #endregion
 
         #region 宜搭接原始口

+ 237 - 0
HH.YiDaSyncNC/Models/FK_CLBX_SyncServiceModel.cs

@@ -0,0 +1,237 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.Models
+{
+    class FK_CLBX_SyncServiceModel
+    {
+        public class DataModel
+        {
+            public string 集团 { get; set; } = "0";
+            public string 组织 { get; set; }
+
+            public string 支付人 { get; set; }
+            public string 支付日期 { get; set; }
+
+            public string 创建人 { get; set; }
+            public string 创建时间 { get; set; }
+            public string 制单人 { get; set; }
+
+            public string 单据类型 { get; set; } = "F3";
+            public string 付款类型 { get; set; } = "F3-Cxx-011";
+            public string 单据大类 { get; set; } = "fk";
+            public string 业务流程 { get; set; } = "AP02";
+
+            public string 单据号 { get; set; }
+            public string 单据日期 { get; set; }
+
+            public string 单据所属系统 { get; set; } = "1";
+            public string 单据来源系统 { get; set; } = "1";
+            public string 单据状态 { get; set; } = "-1";
+            public string 结算状态 { get; set; } = "1";
+            public string 生效状态 { get; set; } = "10";
+
+            public string 生效人 { get; set; } 
+            public string 生效日期 { get; set; }
+
+            public string 发票号 { get; set; }
+
+            public string 供应商 { get; set; } = "999"; // 虚拟供应商999
+            public string 币种 { get; set; } = "CNY";
+
+            public string 往来对象 { get; set; } = "1";
+            public string 付款银行账户 { get; set; }
+
+            public string 价税合计 { get; set; }
+
+            public string 年份 { get; set; }
+            public string 月份 { get; set; }
+            
+            public string 起算日期 { get; set; }
+
+            public string 汇率 { get; set; } = "1";
+            public string 折扣 { get; set; } = "100";
+
+            public string 部门 { get; set; }
+            public string 项目 { get; set; }
+
+            public List<Item> 明细 { get; set; }
+
+            public class Item
+            {
+                public string 摘要 { get; set; }
+                public string 科目 { get; set; }
+                public string 收支项目 { get; set; }
+
+                public string 价税合计 { get; set; }
+                public string 无税金额 { get; set; }
+                public string 税额 { get; set; }
+            }
+        }
+
+        public class ImportXml
+        {
+            /// <summary>
+            /// 模板头部份
+            /// </summary>
+            /// <returns></returns>
+            public static XElement TemplateHeade()
+            {
+
+                return new XElement(new XElement("ufinterface", new object[]
+                {
+                new XAttribute("sender","dingding"),
+                new XAttribute("roottag",""),
+                new XAttribute("replace","Y"),
+                new XAttribute("isexchange","Y"),
+                new XAttribute("groupcode","0"),
+                new XAttribute("filename",""),
+                new XAttribute("billtype","F3"),
+                new XAttribute("proc","add"),
+                new XAttribute("account","develop")
+                }));
+            }
+
+            /// <summary>
+            /// 组建表头xml
+            /// </summary>
+            /// <param name="item">表头参数</param>
+            /// <returns></returns>
+            public static XElement Header(DataModel item, string id)
+            {
+                var bodys = new List<XElement>();
+
+                if (item.明细 != null && item.明细.Count > 0)
+                {
+                    var crowno = 10; // 行号
+
+                    foreach (var itemData in item.明细)
+                    {
+                        bodys.Add(new XElement("item", new object[] {
+                            new XElement("pk_group",item.集团),
+                            new XElement("sett_org",item.组织),
+                            new XElement("pk_org",item.组织),
+                            new XElement("pk_fiorg",item.组织),
+                            new XElement("prepay","0"),
+                            new XElement("supplier",item.供应商),
+                            new XElement("checkdirection","ap"),
+                            new XElement("billdate",item.单据日期),
+
+                            new XElement("pk_billtype",item.单据类型),
+                            new XElement("billclass",item.单据大类),
+                            new XElement("pk_tradetype",item.付款类型),
+                            new XElement("busidate",item.起算日期),
+
+                            new XElement("billno",item.单据号),
+                            new XElement("objtype",item.往来对象),
+                            new XElement("rowno",crowno.ToString()),
+                            new XElement("direction","1"),
+
+                            new XElement("pk_recpaytype","001"),
+
+                            new XElement("pk_subjcode",itemData.收支项目),
+                            new XElement("subjcode",itemData.科目),
+                            new XElement("pk_currtype",item.币种),
+                            new XElement("rate",item.汇率),
+                            new XElement("pk_deptid",item.部门),
+                            new XElement("project",item.项目),
+
+                            new XElement("money_de",itemData.价税合计),
+                            new XElement("local_money_de",itemData.价税合计),
+                            new XElement("local_money_bal",itemData.价税合计),
+                            new XElement("notax_de",itemData.无税金额),
+                            new XElement("local_notax_de",itemData.价税合计),
+
+                            new XElement("payaccount",item.付款银行账户),
+                            // new XElement("invoiceno",item.发票号),
+
+                            new XElement("def12",itemData.税额),
+                            new XElement("def11",itemData.无税金额),
+                            new XElement("occupationmny",itemData.价税合计),
+
+                            new XElement("grouprate","0"),
+                            new XElement("globalrate","0"),
+                            new XElement("groupdebit","0"),
+                            new XElement("globaldebit","0"),
+                            new XElement("groupbalance","0"),
+                            new XElement("globalbalance","0"),
+                            new XElement("groupnotax_de","0"),
+                            new XElement("globalnotax_de","0"),
+
+                        }));
+
+                        crowno = crowno + 10;
+                    }
+                }
+
+                return new XElement("bill", new object[]
+                {
+                "",
+                new XAttribute("id",id),
+                new XElement("billhead", new object[]
+                {
+                    new XElement("pk_group",item.集团),
+                    new XElement("pk_fiorg",item.组织),
+                    new XElement("pk_org",item.组织),
+                    new XElement("sett_org",item.组织),
+                    new XElement("pk_corp",item.组织),
+
+                    new XElement("isreded","N"),
+
+                    new XElement("payman",item.支付人),
+                    new XElement("paydate",item.支付日期),
+                    new XElement("isonlinepay","N"),
+
+                    new XElement("creationtime",item.创建时间),
+                    new XElement("creator",item.创建人),
+
+                    new XElement("pk_billtype",item.单据类型),
+                    new XElement("pk_tradetype",item.付款类型),
+                    new XElement("billclass",item.单据大类),
+                    new XElement("pk_busitype",item.业务流程),
+                    new XElement("ismandatepay","N"),
+                    new XElement("accessorynum","0"),
+                    new XElement("isflowbill","N"),
+                    new XElement("isinit","N"),
+
+                    new XElement("billno",item.单据号),
+                    new XElement("billdate",item.单据日期),
+
+                    new XElement("syscode",item.单据所属系统),
+                    new XElement("src_syscode",item.单据来源系统),
+                    new XElement("billstatus",item.单据状态),
+
+                    new XElement("billmaker",item.制单人),
+                    new XElement("isnetpayready","N"),
+
+                    new XElement("money",item.价税合计),
+                    new XElement("local_money",item.价税合计),
+                    new XElement("billyear",item.年份),
+                    new XElement("billperiod",item.月份),
+
+                    new XElement("settleflag",item.结算状态),
+                    new XElement("effectstatus",item.生效状态),
+                    new XElement("effectuser",item.生效人),
+                    new XElement("effectdate",item.生效日期),
+
+                    new XElement("def2",item.发票号),
+                    //  new XElement("pk_deptid",item.发票号),
+
+                    new XElement("supplier",item.供应商),
+                    new XElement("pk_currtype",item.币种),
+                    new XElement("objtype",item.往来对象),
+                    new XElement("payaccount",item.付款银行账户),
+
+                    new XElement("busidate",item.起算日期),
+
+                    new XElement("bodys",bodys),
+                }),
+                });
+            }
+        }
+    }
+}

+ 233 - 0
HH.YiDaSyncNC/Models/FK_FYBX_SyncServiceModel.cs

@@ -0,0 +1,233 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.Models
+{
+    class FK_FYBX_SyncServiceModel
+    {
+        public class DataModel
+        {
+            public string 集团 { get; set; } = "0";
+            public string 组织 { get; set; }
+
+            public string 支付人 { get; set; }
+            public string 支付日期 { get; set; }
+
+            public string 创建人 { get; set; }
+            public string 创建时间 { get; set; }
+            public string 制单人 { get; set; }
+
+            public string 单据类型 { get; set; } = "F3";
+            public string 付款类型 { get; set; } = "F3-Cxx-006";
+            public string 单据大类 { get; set; } = "fk";
+            public string 业务流程 { get; set; } = "AP02";
+
+            public string 单据号 { get; set; }
+            public string 单据日期 { get; set; }
+
+            public string 单据所属系统 { get; set; } = "1";
+            public string 单据来源系统 { get; set; } = "1";
+            public string 单据状态 { get; set; } = "-1";
+            public string 结算状态 { get; set; } = "1";
+            public string 生效状态 { get; set; } = "10";
+
+            public string 生效人 { get; set; } 
+            public string 生效日期 { get; set; }
+
+            public string 发票号 { get; set; }
+
+            public string 供应商 { get; set; } = "999"; // 虚拟供应商999
+            public string 币种 { get; set; } = "CNY";
+
+            public string 往来对象 { get; set; } = "1";
+            public string 付款银行账户 { get; set; }
+
+            public string 价税合计 { get; set; }
+
+            public string 年份 { get; set; }
+            public string 月份 { get; set; }
+            
+            public string 起算日期 { get; set; }
+
+            public string 汇率 { get; set; } = "1";
+            public string 折扣 { get; set; } = "100";
+
+            public List<Item> 明细 { get; set; }
+
+            public class Item
+            {
+                public string 摘要 { get; set; }
+                public string 科目 { get; set; }
+                public string 部门 { get; set; }
+                public string 项目 { get; set; }
+
+                public string 价税合计 { get; set; }
+                public string 无税金额 { get; set; }
+                public string 税额 { get; set; }
+            }
+        }
+
+        public class ImportXml
+        {
+            /// <summary>
+            /// 模板头部份
+            /// </summary>
+            /// <returns></returns>
+            public static XElement TemplateHeade()
+            {
+
+                return new XElement(new XElement("ufinterface", new object[]
+                {
+                new XAttribute("sender","dingding"),
+                new XAttribute("roottag",""),
+                new XAttribute("replace","Y"),
+                new XAttribute("isexchange","Y"),
+                new XAttribute("groupcode","0"),
+                new XAttribute("filename",""),
+                new XAttribute("billtype","F3"),
+                new XAttribute("proc","add"),
+                new XAttribute("account","develop")
+                }));
+            }
+
+            /// <summary>
+            /// 组建表头xml
+            /// </summary>
+            /// <param name="item">表头参数</param>
+            /// <returns></returns>
+            public static XElement Header(DataModel item, string id)
+            {
+                var bodys = new List<XElement>();
+
+                if (item.明细 != null && item.明细.Count > 0)
+                {
+                    var crowno = 10; // 行号
+
+                    foreach (var itemData in item.明细)
+                    {
+                        bodys.Add(new XElement("item", new object[] {
+                            new XElement("pk_group",item.集团),
+                            new XElement("sett_org",item.组织),
+                            new XElement("pk_org",item.组织),
+                            new XElement("pk_fiorg",item.组织),
+                            new XElement("prepay","0"),
+                            new XElement("supplier",item.供应商),
+                            new XElement("checkdirection","ap"),
+                            new XElement("billdate",item.单据日期),
+
+                            new XElement("pk_billtype",item.单据类型),
+                            new XElement("billclass",item.单据大类),
+                            new XElement("pk_tradetype",item.付款类型),
+                            new XElement("busidate",item.起算日期),
+
+                            new XElement("billno",item.单据号),
+                            new XElement("objtype",item.往来对象),
+                            new XElement("rowno",crowno.ToString()),
+                            new XElement("direction","1"),
+
+                            // new XElement("scomment",itemData.摘要),
+                            new XElement("subjcode",itemData.科目),
+                            new XElement("pk_currtype",item.币种),
+                            new XElement("rate",item.汇率),
+                            new XElement("pk_deptid",itemData.部门),
+                            new XElement("project",itemData.项目),
+
+                            new XElement("money_de",itemData.价税合计),
+                            new XElement("local_money_de",itemData.价税合计),
+                            new XElement("local_money_bal",itemData.价税合计),
+                            new XElement("notax_de",itemData.无税金额),
+                            new XElement("local_notax_de",itemData.价税合计),
+
+                            new XElement("payaccount",item.付款银行账户),
+                            // new XElement("invoiceno",item.发票号),
+
+                            new XElement("def12",itemData.税额),
+                            new XElement("def11",itemData.无税金额),
+                            new XElement("occupationmny",itemData.价税合计),
+
+                            new XElement("grouprate","0"),
+                            new XElement("globalrate","0"),
+                            new XElement("groupdebit","0"),
+                            new XElement("globaldebit","0"),
+                            new XElement("groupbalance","0"),
+                            new XElement("globalbalance","0"),
+                            new XElement("groupnotax_de","0"),
+                            new XElement("globalnotax_de","0"),
+
+                        }));
+
+                        crowno = crowno + 10;
+                    }
+                }
+
+                return new XElement("bill", new object[]
+                {
+                "",
+                new XAttribute("id",id),
+                new XElement("billhead", new object[]
+                {
+                    new XElement("pk_group",item.集团),
+                    new XElement("pk_fiorg",item.组织),
+                    new XElement("pk_org",item.组织),
+                    new XElement("sett_org",item.组织),
+                    new XElement("pk_corp",item.组织),
+
+                    new XElement("isreded","N"),
+
+                    new XElement("payman",item.支付人),
+                    new XElement("paydate",item.支付日期),
+                    new XElement("isonlinepay","N"),
+
+                    new XElement("creationtime",item.创建时间),
+                    new XElement("creator",item.创建人),
+
+                    new XElement("pk_billtype",item.单据类型),
+                    new XElement("pk_tradetype",item.付款类型),
+                    new XElement("billclass",item.单据大类),
+                    new XElement("pk_busitype",item.业务流程),
+                    new XElement("ismandatepay","N"),
+                    new XElement("accessorynum","0"),
+                    new XElement("isflowbill","N"),
+                    new XElement("isinit","N"),
+
+                    new XElement("billno",item.单据号),
+                    new XElement("billdate",item.单据日期),
+
+                    new XElement("syscode",item.单据所属系统),
+                    new XElement("src_syscode",item.单据来源系统),
+                    new XElement("billstatus",item.单据状态),
+
+                    new XElement("billmaker",item.制单人),
+                    new XElement("isnetpayready","N"),
+
+                    new XElement("money",item.价税合计),
+                    new XElement("local_money",item.价税合计),
+                    new XElement("billyear",item.年份),
+                    new XElement("billperiod",item.月份),
+
+                    new XElement("settleflag",item.结算状态),
+                    new XElement("effectstatus",item.生效状态),
+                    new XElement("effectuser",item.生效人),
+                    new XElement("effectdate",item.生效日期),
+
+                    new XElement("def2",item.发票号),
+                    //  new XElement("pk_deptid",item.发票号),
+
+                    new XElement("supplier",item.供应商),
+                    new XElement("pk_currtype",item.币种),
+                    new XElement("objtype",item.往来对象),
+                    new XElement("payaccount",item.付款银行账户),
+
+                    new XElement("busidate",item.起算日期),
+
+                    new XElement("bodys",bodys),
+                }),
+                });
+            }
+        }
+    }
+}

+ 238 - 0
HH.YiDaSyncNC/Models/FK_XZ_SyncServiceModel.cs

@@ -0,0 +1,238 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+
+namespace HH.YiDaSyncNC.Models
+{
+    class FK_XZ_SyncServiceModel
+    {
+        public class DataModel
+        {
+            public string 集团 { get; set; } = "0";
+            public string 组织 { get; set; }
+
+            public string 支付人 { get; set; }
+            public string 支付日期 { get; set; }
+
+            public string 创建人 { get; set; }
+            public string 创建时间 { get; set; }
+            public string 制单人 { get; set; }
+
+            public string 单据类型 { get; set; } = "F3";
+            public string 付款类型 { get; set; }
+            public string 单据大类 { get; set; } = "fk";
+            public string 业务流程 { get; set; } = "AP02";
+
+            public string 单据号 { get; set; }
+            public string 单据日期 { get; set; }
+
+            public string 单据所属系统 { get; set; } = "1";
+            public string 单据来源系统 { get; set; } = "1";
+            public string 单据状态 { get; set; } = "-1";
+            public string 结算状态 { get; set; } = "1";
+            public string 生效状态 { get; set; } = "10";
+
+            public string 生效人 { get; set; } 
+            public string 生效日期 { get; set; }
+
+            public string 发票号 { get; set; }
+
+            public string 供应商 { get; set; }
+            public string 币种 { get; set; } = "CNY";
+
+            public string 往来对象 { get; set; } = "1";
+            public string 付款银行账户 { get; set; }
+
+            public string 价税合计 { get; set; }
+
+            public string 年份 { get; set; }
+            public string 月份 { get; set; }
+            
+            public string 起算日期 { get; set; }
+
+            public string 汇率 { get; set; } = "1";
+            public string 折扣 { get; set; } = "100";
+
+            public List<Item> 明细 { get; set; }
+
+            public class Item
+            {
+                public string 摘要 { get; set; }
+                public string 科目 { get; set; }
+                public string 部门 { get; set; }
+                public string 项目 { get; set; }
+
+                public string 价税合计 { get; set; }
+                public string 无税金额 { get; set; }
+                public string 税额 { get; set; }
+
+                public string 承担主体 { get; set; }
+            }
+        }
+
+        public class ImportXml
+        {
+            /// <summary>
+            /// 模板头部份
+            /// </summary>
+            /// <returns></returns>
+            public static XElement TemplateHeade()
+            {
+
+                return new XElement(new XElement("ufinterface", new object[]
+                {
+                new XAttribute("sender","dingding"),
+                new XAttribute("roottag",""),
+                new XAttribute("replace","Y"),
+                new XAttribute("isexchange","Y"),
+                new XAttribute("groupcode","0"),
+                new XAttribute("filename",""),
+                new XAttribute("billtype","F3"),
+                new XAttribute("proc","add"),
+                new XAttribute("account","develop")
+                }));
+            }
+
+            /// <summary>
+            /// 组建表头xml
+            /// </summary>
+            /// <param name="item">表头参数</param>
+            /// <returns></returns>
+            public static XElement Header(DataModel item, string id)
+            {
+                var bodys = new List<XElement>();
+
+                if (item.明细 != null && item.明细.Count > 0)
+                {
+                    var crowno = 10; // 行号
+
+                    foreach (var itemData in item.明细)
+                    {
+                        bodys.Add(new XElement("item", new object[] {
+                            new XElement("pk_group",item.集团),
+                            new XElement("sett_org",item.组织),
+                            new XElement("pk_org",item.组织),
+                            new XElement("pk_fiorg",item.组织),
+                            new XElement("prepay","0"),
+                            new XElement("supplier",item.供应商),
+                            new XElement("checkdirection","ap"),
+                            new XElement("billdate",item.单据日期),
+
+                            new XElement("pk_billtype",item.单据类型),
+                            new XElement("billclass",item.单据大类),
+                            new XElement("pk_tradetype",item.付款类型),
+                            new XElement("busidate",item.起算日期),
+
+                            new XElement("billno",item.单据号),
+                            new XElement("objtype",item.往来对象),
+                            new XElement("rowno",crowno.ToString()),
+                            new XElement("direction","1"),
+
+                            // new XElement("scomment",itemData.摘要),
+                            new XElement("subjcode",itemData.科目),
+                            new XElement("pk_currtype",item.币种),
+                            new XElement("rate",item.汇率),
+                            new XElement("pk_deptid",itemData.部门),
+                            new XElement("project",itemData.项目),
+
+                            new XElement("money_de",itemData.价税合计),
+                            new XElement("local_money_de",itemData.价税合计),
+                            new XElement("local_money_bal",itemData.价税合计),
+                            new XElement("notax_de",itemData.无税金额),
+                            new XElement("local_notax_de",itemData.价税合计),
+
+                            new XElement("payaccount",item.付款银行账户),
+                            new XElement("invoiceno",item.发票号),
+
+                            new XElement("def12",itemData.税额),
+                            new XElement("def11",itemData.无税金额),
+
+                            new XElement("def9",itemData.承担主体),
+
+                            new XElement("occupationmny",itemData.价税合计),
+
+                            new XElement("grouprate","0"),
+                            new XElement("globalrate","0"),
+                            new XElement("groupdebit","0"),
+                            new XElement("globaldebit","0"),
+                            new XElement("groupbalance","0"),
+                            new XElement("globalbalance","0"),
+                            new XElement("groupnotax_de","0"),
+                            new XElement("globalnotax_de","0"),
+
+                        }));
+
+                        crowno = crowno + 10;
+                    }
+                }
+
+                return new XElement("bill", new object[]
+                {
+                "",
+                new XAttribute("id",id),
+                new XElement("billhead", new object[]
+                {
+                    new XElement("pk_group",item.集团),
+                    new XElement("pk_fiorg",item.组织),
+                    new XElement("pk_org",item.组织),
+                    new XElement("sett_org",item.组织),
+                    new XElement("pk_corp",item.组织),
+
+                    new XElement("isreded","N"),
+
+                    new XElement("payman",item.支付人),
+                    new XElement("paydate",item.支付日期),
+                    new XElement("isonlinepay","N"),
+
+                    new XElement("creationtime",item.创建时间),
+                    new XElement("creator",item.创建人),
+
+                    new XElement("pk_billtype",item.单据类型),
+                    new XElement("pk_tradetype",item.付款类型),
+                    new XElement("billclass",item.单据大类),
+                    new XElement("pk_busitype",item.业务流程),
+                    new XElement("ismandatepay","N"),
+                    new XElement("accessorynum","0"),
+                    new XElement("isflowbill","N"),
+                    new XElement("isinit","N"),
+
+                    new XElement("billno",item.单据号),
+                    new XElement("billdate",item.单据日期),
+
+                    new XElement("syscode",item.单据所属系统),
+                    new XElement("src_syscode",item.单据来源系统),
+                    new XElement("billstatus",item.单据状态),
+
+                    new XElement("billmaker",item.制单人),
+                    new XElement("isnetpayready","N"),
+
+                    new XElement("money",item.价税合计),
+                    new XElement("local_money",item.价税合计),
+                    new XElement("billyear",item.年份),
+                    new XElement("billperiod",item.月份),
+
+                    new XElement("settleflag",item.结算状态),
+                    new XElement("effectstatus",item.生效状态),
+                    new XElement("effectuser",item.生效人),
+                    new XElement("effectdate",item.生效日期),
+
+                    new XElement("def2",item.发票号),
+                   //  new XElement("pk_deptid",item.发票号),
+
+                    new XElement("supplier",item.供应商),
+                    new XElement("pk_currtype",item.币种),
+                    new XElement("objtype",item.往来对象),
+                    new XElement("payaccount",item.付款银行账户),
+
+                    new XElement("busidate",item.起算日期),
+
+                    new XElement("bodys",bodys),
+                }),
+                });
+            }
+        }
+    }
+}

+ 42 - 8
HH.YiDaSyncNC/Program.cs

@@ -56,37 +56,71 @@ namespace HH.YiDaSyncNC
         {
             try
             {
-
+                #region 基础档案
+                // 物料
                 //WL_SyncService wL_SyncService = new WL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_WL, db, db_nc, _Static_NCApiUrl);
                 //wL_SyncService.DataSync();
 
+                // 项目点
                 //XMD_SyncService xMD_SyncService = new XMD_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_XMD, db, db_nc, _Static_NCApiUrl);
                 //xMD_SyncService.DataSync();
 
+                // 资产
                 //ZC_SyncService zc_SyncService = new ZC_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZC, db, db_nc, _Static_NCApiUrl);
                 //zc_SyncService.DataSync();
 
+                // 供应商
                 //GYS_SyncService gYS_SyncService = new GYS_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_GYS, db, db_nc, _Static_NCApiUrl);
                 //gYS_SyncService.DataSync();
 
+                // 客户
                 //KH_SyncService kh_SyncService = new KH_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KH, db, db_nc, _Static_NCApiUrl);
                 //kh_SyncService.DataSync();
+                #endregion
 
+                #region 开票
+                // 开票
                 //KP_SyncService kp_SyncService = new KP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
                 //kp_SyncService.DataSync();
 
+                // 退票
                 //KP_TP_SyncService kp_tp_SyncService = new KP_TP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
                 //kp_tp_SyncService.DataSync();
+                #endregion
 
+                #region 采购订单
+                // 采购订单
                 //CGDD_SyncService cgdd_SyncService = new CGDD_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_CGDD, db, db_nc, _Static_NCApiUrl);
                 //cgdd_SyncService.DataSync();
+                #endregion
+
+                #region 付款单
 
+                // 付款单
                 //FK_FKD_SyncService fk_fkd_SyncService = new FK_FKD_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
                 //fk_fkd_SyncService.DataSync();
 
-                // 付款单
-                FK_SyncService fk_SyncService = new FK_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
-                fk_SyncService.DataSync();
+                // 日常费用付款
+                //FK_SyncService fk_SyncService = new FK_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
+                //fk_SyncService.DataSync();
+
+                // 费用报销付款
+                FK_FYBX_SyncService fk_fybx_SyncService = new FK_FYBX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FYBX, db, db_nc, _Static_NCApiUrl);
+                fk_fybx_SyncService.DataSync();
+
+                // 差旅报销付款
+                //FK_CLBX_SyncService fk_clbx_SyncService = new FK_CLBX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_clBX, db, db_nc, _Static_NCApiUrl);
+                //fk_clbx_SyncService.DataSync();
+
+                // 薪资付款相关
+                //FK_XZ_SyncService fk_xz_SyncService = new FK_XZ_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
+                //fk_xz_SyncService.DataSync_公积金();
+                //fk_xz_SyncService.DataSync_社保();
+                #endregion
+
+
+
+
 
                 // 付款单 预付类型 生成凭证 zxh
                 //FKGL_SyncService fkgl_SyncService = new FKGL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
@@ -95,11 +129,11 @@ namespace HH.YiDaSyncNC
                 //FKYF_SyncService fkyf_SyncService = new FKYF_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FK, db, db_nc, _Static_NCApiUrl);
                 //fkyf_SyncService.DataSync();
                 // 暂支申请  生成凭证 zxh
-                ZZD_GL_SyncService zzsq_SyncService = new ZZD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZDA, db, db_nc, _Static_NCApiUrl);
-                zzsq_SyncService.DataSync();
+                //ZZD_GL_SyncService zzsq_SyncService = new ZZD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZDA, db, db_nc, _Static_NCApiUrl);
+                //zzsq_SyncService.DataSync();
                 // 还款单  生成凭证 zxh
-                HKD_GL_SyncService hkd_SyncService = new HKD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZHX, db, db_nc, _Static_NCApiUrl);
-                hkd_SyncService.DataSync();
+                //HKD_GL_SyncService hkd_SyncService = new HKD_GL_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZZHX, db, db_nc, _Static_NCApiUrl);
+                //hkd_SyncService.DataSync();
 
                 // 费用报销单 zxh 用不到
                 //BX_SyncService bx_SyncService = new BX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_FYBX, db, db_nc, _Static_NCApiUrl);