guoshuang před 1 rokem
rodič
revize
9d0da60be1

+ 1 - 1
HH.YiDaSyncNC/App.config

@@ -21,7 +21,7 @@
     <add key="AppType" value="APP_ERBDTFS82HOVBPL3NFH0" />
     <add key="SystemToken" value="RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP" />
     <!--<add key="UserId" value="153218553429137210" />-->
-    <add key="UserId" value="023515341200-1817752732" />
+    <add key="UserId" value="026150181237-1254068060" />
 
   <!--物料档案-->
     <add key="FormId_WL" value="FORM-C106F33B9A73410FBE750E8FFB72C2775YCF" />

+ 43 - 24
HH.YiDaSyncNC/DataSync/BZJ_SyncService.cs

@@ -54,37 +54,56 @@ namespace HH.YiDaSyncNC.DataSync
         {
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
+            var codeList = new string[] { "TB_202503050022", "02130200", "04010192", "04010193" };
+            var ncNo = new string[] { "QKD2025030701", "1001G1100000000EMRSK", "1001G1100000000EMRSR", "1001G1100000000EMRST" };
+
+            for (int i = 0; i < codeList.Count(); i++)
+            {
+                var idList1 = _dingTalkService.GetFormIdList("{\"textField_lr3axfje\":\"" + codeList[i] + "\"}");
+
+                var ncResData1 = new YiDaResDto()
+                {
+                    syncTime = DateTime.Now,
+                };
+
+                ncResData1.bSuccess = true;
+                ncResData1.ncNo = ncNo[i];
+                ncResData1.log = "同步成功!";
+
+                var ydRes1 = _dingTalkService.UpdateFormDataSyncDataById(ncResData1, idList1.FirstOrDefault());
+            }
+
             // 宜搭全量数据Id
             //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lvituew9\":\"正常\"}");
             //var idList = _dingTalkService.GetFormIdList("{\"textField_lvdosccc\":\"KP_2024071700252\"}");
 
-            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
 
-            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+            //LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+
+            //// 获取当前最大Id
+            //var newId = 100000001;
+            //var maxData = _db_nc.Queryable<bd_project>().OrderByDescending(obd => obd.pk_project).First();
+            //if (maxData != null && maxData.pk_project.Contains(_Static_PK_ct_bondapply))
+            //{
+            //    newId = Convert.ToInt32(maxData.pk_project.Replace(_Static_PK_ct_bondapply, "")) + 1;
+            //}
+
+            //#region 获取NC中选项数据的Id
+            //var bd_customerDic = _db_nc.Queryable<bd_customer>().ToList();
+            //var bd_incomeDic = _db_nc.Queryable<bd_income>().ToList();
+            //var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
+            //var bd_projectDic = _db_nc.Queryable<bd_project>().ToList();
+            //var bd_materialDic = _db_nc.Queryable<bd_material>().ToList();
+            //var bd_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
+            //var org_deptDic = _db_nc.Queryable<org_dept>().ToList();
+            //var bd_psndocDic = _db_nc.Queryable<bd_psndoc>().ToList();
+            //var sm_userDic = _db_nc.Queryable<sm_user>().ToList();
+            //var bd_defdoc_kplx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000016FV").ToList(); // 开票类型
+            //var bd_defdoc_htywlx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000010PV").ToList(); // 合同业务类型
+            //#endregion
 
-            // 获取当前最大Id
-            var newId = 100000001;
-            var maxData = _db_nc.Queryable<bd_project>().OrderByDescending(obd => obd.pk_project).First();
-            if (maxData != null && maxData.pk_project.Contains(_Static_PK_ct_bondapply))
-            {
-                newId = Convert.ToInt32(maxData.pk_project.Replace(_Static_PK_ct_bondapply, "")) + 1;
-            }
 
-            #region 获取NC中选项数据的Id
-            var bd_customerDic = _db_nc.Queryable<bd_customer>().ToList();
-            var bd_incomeDic = _db_nc.Queryable<bd_income>().ToList();
-            var org_orgsDic = _db_nc.Queryable<org_orgs>().ToList();
-            var bd_projectDic = _db_nc.Queryable<bd_project>().ToList();
-            var bd_materialDic = _db_nc.Queryable<bd_material>().ToList();
-            var bd_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
-            var org_deptDic = _db_nc.Queryable<org_dept>().ToList();
-            var bd_psndocDic = _db_nc.Queryable<bd_psndoc>().ToList();
-            var sm_userDic = _db_nc.Queryable<sm_user>().ToList();
-            var bd_defdoc_kplx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000016FV").ToList(); // 开票类型
-            var bd_defdoc_htywlx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000010PV").ToList(); // 合同业务类型
-            #endregion
-
-            
 
             //#region 接口方式
             //// 向NC插入数据

+ 121 - 100
HH.YiDaSyncNC/DataSync/KH_SyncService.cs

@@ -48,138 +48,159 @@ namespace HH.YiDaSyncNC.DataSync
         {
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
-            // 宜搭全量数据Id
-            var idList = _dingTalkService.GetFormIdList("{\"serialNumberField_ls14do3x\":\"KH01523\"}");
+            var codeList = new string[] { "KH01636" };
+            var ncNo = new string[] { "1001G1100000000ENCM9" };
 
-            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+            for (int i = 0; i < codeList.Count(); i++)
+            {
+                var idList1 = _dingTalkService.GetFormIdList("{\"serialNumberField_ls14do3x\":\"" + codeList[i] + "\"}");
 
-            //// 获取当前最大Id
-            //var newId = 100000001;
-            //var maxData = _db_nc.Queryable<bd_project>().OrderByDescending(obd => Convert.ToDateTime(obd.creationtime)).First();
-            //if (maxData != null && maxData.pk_project.Contains(_Static_PK_bd_project))
-            //{
-            //    newId = Convert.ToInt32(maxData.pk_project.Replace(_Static_PK_bd_project, "")) + 1;
-            //}
+                var ncResData1 = new YiDaResDto()
+                {
+                    syncTime = DateTime.Now,
+                };
 
-            #region 获取NC中选项数据的Id
-            var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
-            #endregion
+                ncResData1.bSuccess = true;
+                ncResData1.ncNo = ncNo[i];//1001G1100000000DVG2J    1001G1100000000DVG3B
+                ncResData1.log = "同步成功!";
 
-            #region 插入数据
-            //// 向NC插入数据
-            //foreach (var item in idList)
-            //{
+                var ydRes1 = _dingTalkService.UpdateFormDataSyncDataById(ncResData1, idList1.FirstOrDefault());
+            }
 
-            //    string createTime = "";
-            //    string modifyTime = "";
 
-            //    var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
-            //    var suplinkmanDataList = new List<KH_SyncServiceModel.DataModel.SuplinkmanItem>();
+            //// 宜搭全量数据Id
+            //var idList = _dingTalkService.GetFormIdList("{\"serialNumberField_ls14do3x\":\"KH01523\"}");
 
-            //    var suplinkmanObjList = new List<object>();
+            ////var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
 
-            //    if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrhhdm5m").Value != null)
-            //        suplinkmanObjList = (List<object>)ydDataSource["tableField_lrhhdm5m"];
+            ////// 获取当前最大Id
+            ////var newId = 100000001;
+            ////var maxData = _db_nc.Queryable<bd_project>().OrderByDescending(obd => Convert.ToDateTime(obd.creationtime)).First();
+            ////if (maxData != null && maxData.pk_project.Contains(_Static_PK_bd_project))
+            ////{
+            ////    newId = Convert.ToInt32(maxData.pk_project.Replace(_Static_PK_bd_project, "")) + 1;
+            ////}
 
-            //    foreach (var objItem in suplinkmanObjList)
-            //    {
-            //        suplinkmanDataList.Add(new KH_SyncServiceModel.DataModel.SuplinkmanItem()
-            //        {
-            //            name = ((Dictionary<string, object>)objItem)["textField_lrhhdm5n"].ToString(),
-            //            cell = ((Dictionary<string, object>)objItem)["textField_lrhhdm5o"].ToString(),
-            //            vjob = ((Dictionary<string, object>)objItem)["textField_lrhhdm5p"].ToString()
-            //        });
-            //    }
+            //#region 获取NC中选项数据的Id
+            //var bd_custclassDic = _db_nc.Queryable<bd_custclass>().ToList();
+            //#endregion
 
+            //#region 插入数据
+            ////// 向NC插入数据
+            ////foreach (var item in idList)
+            ////{
 
-            //    var dataSource = new KH_SyncServiceModel.DataModel()
-            //    {
-            //        pk_group = "0",
-            //        pk_org = "0",
-            //        code = ydDataSource["serialNumberField_ls14do3x"].ToString(),
-            //        name = ydDataSource["textField_lr25icbn"].ToString(),
-            //        taxpayerid = ydDataSource["textField_lt425f37"].ToString(),
-            //        custprop = "0",
+            ////    string createTime = "";
+            ////    string modifyTime = "";
 
-            //    };
+            ////    var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
-            //    if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lrrdx03y").Value != null)
-            //    {
-            //        if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lrrdx03y"].ToString()))
-            //        {
-            //            var a = bd_custclassDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lrrdx03y"].ToString());
-            //            if (a != null)
-            //                dataSource.pk_custclass = a.code; // 分类s
-            //        }
-            //    }
+            ////    var suplinkmanDataList = new List<KH_SyncServiceModel.DataModel.SuplinkmanItem>();
 
-            //    dataSource.suplinkman = suplinkmanDataList;
+            ////    var suplinkmanObjList = new List<object>();
 
-            //    var xmlData = KH_SyncServiceModel.ImportXml.Header(dataSource, item);
+            ////    if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lrhhdm5m").Value != null)
+            ////        suplinkmanObjList = (List<object>)ydDataSource["tableField_lrhhdm5m"];
 
-            //    XElement tempData = KH_SyncServiceModel.ImportXml.TemplateHeade();
+            ////    foreach (var objItem in suplinkmanObjList)
+            ////    {
+            ////        suplinkmanDataList.Add(new KH_SyncServiceModel.DataModel.SuplinkmanItem()
+            ////        {
+            ////            name = ((Dictionary<string, object>)objItem)["textField_lrhhdm5n"].ToString(),
+            ////            cell = ((Dictionary<string, object>)objItem)["textField_lrhhdm5o"].ToString(),
+            ////            vjob = ((Dictionary<string, object>)objItem)["textField_lrhhdm5p"].ToString()
+            ////        });
+            ////    }
 
-            //    var results = NCImportFunc.NCImport(tempData, xmlData, _NCApiUrl + "?account=01&groupcode=0");
 
-            //    // DBHelper.WriteLog(results);
-            //    XElement xE = XElement.Parse(results);
+            ////    var dataSource = new KH_SyncServiceModel.DataModel()
+            ////    {
+            ////        pk_group = "0",
+            ////        pk_org = "0",
+            ////        code = ydDataSource["serialNumberField_ls14do3x"].ToString(),
+            ////        name = ydDataSource["textField_lr25icbn"].ToString(),
+            ////        taxpayerid = ydDataSource["textField_lt425f37"].ToString(),
+            ////        custprop = "0",
 
-            //    string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+            ////    };
 
-            //    // DBHelper.WriteLog($"状态码:" + resultcode);
+            ////    if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lrrdx03y").Value != null)
+            ////    {
+            ////        if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lrrdx03y"].ToString()))
+            ////        {
+            ////            var a = bd_custclassDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lrrdx03y"].ToString());
+            ////            if (a != null)
+            ////                dataSource.pk_custclass = a.code; // 分类s
+            ////        }
+            ////    }
 
-            //    string content = xE.Element("sendresult").Element("content")?.Value;
+            ////    dataSource.suplinkman = suplinkmanDataList;
 
-            //    string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+            ////    var xmlData = KH_SyncServiceModel.ImportXml.Header(dataSource, item);
 
-            //    var ncResData = new YiDaResDto()
-            //    {
-            //        syncTime = DateTime.Now,
-            //    };
+            ////    XElement tempData = KH_SyncServiceModel.ImportXml.TemplateHeade();
 
-            //    // NC接口执行完成后的处理
-            //    if (resultcode == "1")
-            //    {
+            ////    var results = NCImportFunc.NCImport(tempData, xmlData, _NCApiUrl + "?account=01&groupcode=0");
 
-            //        DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
+            ////    // DBHelper.WriteLog(results);
+            ////    XElement xE = XElement.Parse(results);
 
-            //        ncResData.bSuccess = true;
-            //        ncResData.ncNo = xE.Element("sendresult").Element("content").Value;
-            //        ncResData.log = "同步成功!";
-            //    }
-            //    else
-            //    {
-            //        DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作失败!" + resultdescription + ";");
+            ////    string resultcode = xE.Element("sendresult").Element("resultcode").Value;
 
-            //        if (resultdescription.Contains("不允许重复"))
-            //        {
-            //            ncResData.bSuccess = true;
-            //            ncResData.ncNo = "";
-            //            ncResData.log = "数据已存在,无需同步!";
-            //        }
-            //        else
-            //        {
-            //            ncResData.bSuccess = false;
-            //            ncResData.ncNo = "";
-            //            ncResData.log = "同步失败!原因为【" + resultdescription + "】";
-            //        }
-            //    }
+            ////    // DBHelper.WriteLog($"状态码:" + resultcode);
 
-            //    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
-            //}
-            #endregion
+            ////    string content = xE.Element("sendresult").Element("content")?.Value;
 
-            var ncResData = new YiDaResDto()
-            {
-                syncTime = DateTime.Now,
-            };
+            ////    string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+
+            ////    var ncResData = new YiDaResDto()
+            ////    {
+            ////        syncTime = DateTime.Now,
+            ////    };
+
+            ////    // NC接口执行完成后的处理
+            ////    if (resultcode == "1")
+            ////    {
+
+            ////        DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
+
+            ////        ncResData.bSuccess = true;
+            ////        ncResData.ncNo = xE.Element("sendresult").Element("content").Value;
+            ////        ncResData.log = "同步成功!";
+            ////    }
+            ////    else
+            ////    {
+            ////        DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作失败!" + resultdescription + ";");
+
+            ////        if (resultdescription.Contains("不允许重复"))
+            ////        {
+            ////            ncResData.bSuccess = true;
+            ////            ncResData.ncNo = "";
+            ////            ncResData.log = "数据已存在,无需同步!";
+            ////        }
+            ////        else
+            ////        {
+            ////            ncResData.bSuccess = false;
+            ////            ncResData.ncNo = "";
+            ////            ncResData.log = "同步失败!原因为【" + resultdescription + "】";
+            ////        }
+            ////    }
+
+            ////    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+            ////}
+            //#endregion
+
+            //var ncResData = new YiDaResDto()
+            //{
+            //    syncTime = DateTime.Now,
+            //};
 
-            ncResData.bSuccess = true;
-            ncResData.ncNo = "1001G1100000000DVKOQ";//1001G1100000000DVG2J    1001G1100000000DVG3B
-            ncResData.log = "同步成功!";
+            //ncResData.bSuccess = true;
+            //ncResData.ncNo = "1001G1100000000DVKOQ";//1001G1100000000DVG2J    1001G1100000000DVG3B
+            //ncResData.log = "同步成功!";
 
-            var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, idList.FirstOrDefault());
+            //var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, idList.FirstOrDefault());
         }
     }
 }

+ 8 - 6
HH.YiDaSyncNC/DataSync/KP_HK_SyncService.cs

@@ -68,6 +68,8 @@ namespace HH.YiDaSyncNC.DataSync
 
             var idList = _dingTalkService.GetFormIdList("{\"radioField_m06hhw2p\":\"未回款\",\"textField_ltxyt75i\":\"同步成功\"}");
             idList.AddRange(_dingTalkService.GetFormIdList("{\"radioField_m06hhw2p\":\"已回款\",\"textField_ltxyt75i\":\"同步成功\"}"));
+            idList.AddRange(_dingTalkService.GetFormIdList("{\"radioField_m06hhw2p\":\"未回款\",\"textField_ltxyt75i\":\"同步失败\"}"));
+            idList.AddRange(_dingTalkService.GetFormIdList("{\"radioField_m06hhw2p\":\"已回款\",\"textField_ltxyt75i\":\"同步失败\"}"));
 
             LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 
@@ -139,10 +141,10 @@ namespace HH.YiDaSyncNC.DataSync
 
                                         detailData.Add(new DetailItem()
                                         {
-                                            ncMoney = ncMoney + ydReMoney,
+                                            ncMoney = (ncMoney + ydReMoney) > ydMoney ? ydMoney : (ncMoney + ydReMoney),
                                             ydMoney = ydMoney,
                                             ncBilldate = ncBilldate,
-                                            bAll = ((ncMoney + ydReMoney) == ydMoney)
+                                            bAll = ((ncMoney + ydReMoney) >= ydMoney)
                                         });
 
                                         ((Dictionary<string, object>)objItem)["numberField_lvg084lb"] = (ncMoney + ydReMoney).ToString("#0.00");
@@ -194,10 +196,10 @@ namespace HH.YiDaSyncNC.DataSync
 
                                         detailData.Add(new DetailItem()
                                         {
-                                            ncMoney = ncMoney + ydReMoney,
+                                            ncMoney = (ncMoney + ydReMoney) > ydMoney ? ydMoney : (ncMoney + ydReMoney),
                                             ydMoney = ydMoney,
                                             ncBilldate = ncBilldate,
-                                            bAll = ((ncMoney + ydReMoney) == ydMoney)
+                                            bAll = ((ncMoney + ydReMoney) >= ydMoney)
                                         });
 
                                         ((Dictionary<string, object>)objItem)["numberField_lvg084l9"] = (ncMoney + ydReMoney).ToString("#0.00");
@@ -249,10 +251,10 @@ namespace HH.YiDaSyncNC.DataSync
 
                                         detailData.Add(new DetailItem()
                                         {
-                                            ncMoney = ncMoney + ydReMoney,
+                                            ncMoney = (ncMoney + ydReMoney) > ydMoney ? ydMoney : (ncMoney + ydReMoney),
                                             ydMoney = ydMoney,
                                             ncBilldate = ncBilldate,
-                                            bAll = ((ncMoney + ydReMoney) == ydMoney)
+                                            bAll = ((ncMoney + ydReMoney) >= ydMoney)
                                         });
 
                                         ((Dictionary<string, object>)objItem)["numberField_lvg084la"] = (ncMoney + ydReMoney).ToString("#0.00");

+ 188 - 164
HH.YiDaSyncNC/DataSync/WL_SyncService.cs

@@ -46,181 +46,205 @@ namespace HH.YiDaSyncNC.DataSync
 
         public void DataSync()
         {
-            DBHelper.WriteLog($"进入程序");
-
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
-            // 宜搭全量数据Id
-            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
-
-            DBHelper.WriteLog(JsonConvert.SerializeObject(idList), "idList");
-
-            // NC ID对照表数据
-            var ncDataIdList = _db_nc.Queryable<xx_idcontrast>().Where(w => w.bill_type == "material").ToList();
+            var codeList = new string[] { "01130209", "02130200", "04010192", "04010193" };
+            var ncNo = new string[] { "1001G1100000000EMRSE", "1001G1100000000EMRSK", "1001G1100000000EMRSR", "1001G1100000000EMRST" };
 
-            // 获取当前最大Id
-            var newId = 100000001;
-            var maxData = ncDataIdList.OrderByDescending(obd => Convert.ToDateTime(obd.ts)).FirstOrDefault();
-            if (maxData != null && maxData.pk_idcontra.Contains(_Static_PK_xx_idcontrast))
+            for (int i = 0; i < codeList.Count(); i++)
             {
-                newId = Convert.ToInt32(maxData.pk_idcontra.Replace(_Static_PK_xx_idcontrast, "")) + 1;
-            }
+                var idList1 = _dingTalkService.GetFormIdList("{\"textField_lr3axfje\":\"" + codeList[i] + "\"}");
 
-            #region 获取NC中选项数据的Id
-            var pk_marbasclassDic = _db_nc.Queryable<bd_marbasclass>().ToList();
-            var pk_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
-            var pk_mattaxesDic = _db_nc.Queryable<bd_mattaxes>().ToList();
-            var pk_brandDic = _db_nc.Queryable<bd_branddoc>().ToList();
-            #endregion
+                var ncResData1 = new YiDaResDto()
+                {
+                    syncTime = DateTime.Now,
+                };
 
-            #region 循环数据处理业务逻辑
-            foreach (var item in idList.Where(w => !ncDataIdList.Select(s => s.file_id).ToList().Contains(w)))
-            {
+                ncResData1.bSuccess = true;
+                ncResData1.ncNo = ncNo[i];
+                ncResData1.log = "同步成功!";
 
-                DBHelper.WriteLog($"进入程序1");
+                var ydRes1 = _dingTalkService.UpdateFormDataSyncDataById(ncResData1, idList1.FirstOrDefault());
+            }
 
-                // 获取此条数据详情
-                string createTime = "";
-                string modifyTime = "";
-                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
 
-                DBHelper.WriteLog(ydDataSource["radioField_lycrvvtk"].ToString(),"222");
 
-                if (ydDataSource["radioField_lycrvvtk"].ToString() == "Y")
-                {
-                    DBHelper.WriteLog($"进入程序2");
-
-                    #region 构建数据体
-                    var dataSource = new WL_SyncServiceModel.DataModel()
-                    {
-                        pk_group = "0",
-                        pk_org = "0",
-                        code = ydDataSource["textField_lr3axfje"].ToString(),
-                        name = ydDataSource["textField_lr383i4h"].ToString(),
-                        ename = ydDataSource["textField_lwitq6vu"].ToString(),
-
-                        materialshortname = ydDataSource["textField_lwitq6vv"].ToString(),
-                        materialspec = ydDataSource["textField_ltxy3kh3"].ToString(),
-                        materialtype = ydDataSource["textField_ltxy3kh4"].ToString(),
-                        ematerialspec = ydDataSource["textField_lwitq6vw"].ToString(),
-                        materialmnecode = ydDataSource["textField_lwitq6vx"].ToString(),
-                    };
-
-                    if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwitq6w4").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w4"].ToString()))
-                    {
-                        var data = pk_marbasclassDic.FirstOrDefault(f => f.name.Trim() == ydDataSource["selectField_lwitq6w4"].ToString());
-                        if (data != null)
-                        {
-                            dataSource.pk_marbasclass = data.code; // 分类
-                        }
-                    }
-                    else
-                    {
-                        var resData = new YiDaResDto();
-                        resData.bSuccess = false;
-                        resData.syncTime = DateTime.Now;
-                        resData.ncNo = "";
-                        resData.log = "物料分类为空,无法传入NC";
-
-                        _dingTalkService.UpdateFormDataSyncDataById(resData, item);
-
-                        continue;
-                    }
-
-                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w5"].ToString()))
-                    {
-                        dataSource.pk_measdoc = pk_measdocDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lwitq6w5"].ToString()).code; // 主计量单位
-                    }
-
-                    if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwitq6w6").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w6"].ToString()))
-                    {
-                        dataSource.pk_mattaxes = pk_mattaxesDic.FirstOrDefault(f => f.mattaxesname == ydDataSource["selectField_lwitq6w6"].ToString()).mattaxescode; // 税类
-                    }
-                    //if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6we"].ToString()))
-                    //{
-                    //    dataSource.pk_brand = pk_brandDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lwitq6we"].ToString()).code; // 品牌
-                    //}
-                    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_ltxy3kh6"].ToString()))
-                    {
-
-                        switch (ydDataSource["selectField_ltxy3kh6"].ToString())
-                        {
-                            case "启用":
-                                dataSource.enablestate = ((int)EnumType.enablestate.已启用).ToString();
-                                break;
-                            case "停用":
-                                dataSource.enablestate = ((int)EnumType.enablestate.已停用).ToString();
-                                break;
-                        }
-                    }
-                    #endregion
-
-                    #region 数据传入NC并获取结果
-                    var xmlData = WL_SyncServiceModel.ImportXml.Header(dataSource, item);
-                    XElement tempData = WL_SyncServiceModel.ImportXml.TemplateHeade();
-
-                    var results = NCImportFunc.NCImport(tempData, xmlData, _NCApiUrl + "?account=LY01&groupcode=0");
-
-                    DBHelper.WriteLog($"进入程序3");
-
-                    XElement xE = XElement.Parse(results);
-                    string resultcode = xE.Element("sendresult").Element("resultcode").Value;
-                    string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
-                    #endregion
-
-                    #region 回写状态
-                    var ncResData = new YiDaResDto()
-                    {
-                        syncTime = DateTime.Now,
-                    };
-
-                    if (resultcode == "1")
-                    {
-                        DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
-
-                        ncResData.bSuccess = true;
-                        ncResData.ncNo = xE.Element("sendresult").Element("content").Value;
-                        ncResData.log = "同步成功!";
-                    }
-                    else
-                    {
-                        if (resultdescription.Contains("不允许重复"))
-                        {
-                            // 已存在数据,绑定Id
-                            var nowData = _db_nc.Queryable<bd_material>().First(f => f.code == dataSource.code && f.pk_org == _Static_pk_org_jt);
-
-                            var idcData = new xx_idcontrast()
-                            {
-                                bill_type = "material",
-                                dr = 0,
-                                file_id = item,
-                                pk_bill = nowData.pk_material,
-                                pk_idcontra = _Static_PK_xx_idcontrast + newId
-                            };
-                            _db_nc.Insertable(idcData).ExecuteCommand();
-
-                            newId++;
-
-                            ncResData.bSuccess = true;
-                            ncResData.ncNo = nowData.pk_material;
-                            ncResData.log = "数据已存在,无需同步,已自动对照!";
-                        }
-                        else
-                        {
-                            DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作失败!" + resultdescription + ";");
-
-                            ncResData.bSuccess = false;
-                            ncResData.ncNo = "";
-                            ncResData.log = "同步失败!原因为【" + resultdescription + "】";
-                        }
-                    }
-
-                    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
-                    #endregion
-                }
-            }
-            #endregion
+            //DBHelper.WriteLog($"进入程序");
+
+            //DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            //// 宜搭全量数据Id
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+
+            //DBHelper.WriteLog(JsonConvert.SerializeObject(idList), "idList");
+
+            //// NC ID对照表数据
+            //var ncDataIdList = _db_nc.Queryable<xx_idcontrast>().Where(w => w.bill_type == "material").ToList();
+
+            //// 获取当前最大Id
+            //var newId = 100000001;
+            //var maxData = ncDataIdList.OrderByDescending(obd => Convert.ToDateTime(obd.ts)).FirstOrDefault();
+            //if (maxData != null && maxData.pk_idcontra.Contains(_Static_PK_xx_idcontrast))
+            //{
+            //    newId = Convert.ToInt32(maxData.pk_idcontra.Replace(_Static_PK_xx_idcontrast, "")) + 1;
+            //}
+
+            //#region 获取NC中选项数据的Id
+            //var pk_marbasclassDic = _db_nc.Queryable<bd_marbasclass>().ToList();
+            //var pk_measdocDic = _db_nc.Queryable<bd_measdoc>().ToList();
+            //var pk_mattaxesDic = _db_nc.Queryable<bd_mattaxes>().ToList();
+            //var pk_brandDic = _db_nc.Queryable<bd_branddoc>().ToList();
+            //#endregion
+
+            //#region 循环数据处理业务逻辑
+            //foreach (var item in idList.Where(w => !ncDataIdList.Select(s => s.file_id).ToList().Contains(w)))
+            //{
+
+            //    DBHelper.WriteLog($"进入程序1");
+
+            //    // 获取此条数据详情
+            //    string createTime = "";
+            //    string modifyTime = "";
+            //    var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+
+            //    DBHelper.WriteLog(ydDataSource["radioField_lycrvvtk"].ToString(),"222");
+
+            //    if (ydDataSource["radioField_lycrvvtk"].ToString() == "Y")
+            //    {
+            //        DBHelper.WriteLog($"进入程序2");
+
+            //        #region 构建数据体
+            //        var dataSource = new WL_SyncServiceModel.DataModel()
+            //        {
+            //            pk_group = "0",
+            //            pk_org = "0",
+            //            code = ydDataSource["textField_lr3axfje"].ToString(),
+            //            name = ydDataSource["textField_lr383i4h"].ToString(),
+            //            ename = ydDataSource["textField_lwitq6vu"].ToString(),
+
+            //            materialshortname = ydDataSource["textField_lwitq6vv"].ToString(),
+            //            materialspec = ydDataSource["textField_ltxy3kh3"].ToString(),
+            //            materialtype = ydDataSource["textField_ltxy3kh4"].ToString(),
+            //            ematerialspec = ydDataSource["textField_lwitq6vw"].ToString(),
+            //            materialmnecode = ydDataSource["textField_lwitq6vx"].ToString(),
+            //        };
+
+            //        if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwitq6w4").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w4"].ToString()))
+            //        {
+            //            var data = pk_marbasclassDic.FirstOrDefault(f => f.name.Trim() == ydDataSource["selectField_lwitq6w4"].ToString());
+            //            if (data != null)
+            //            {
+            //                dataSource.pk_marbasclass = data.code; // 分类
+            //            }
+            //        }
+            //        else
+            //        {
+            //            var resData = new YiDaResDto();
+            //            resData.bSuccess = false;
+            //            resData.syncTime = DateTime.Now;
+            //            resData.ncNo = "";
+            //            resData.log = "物料分类为空,无法传入NC";
+
+            //            _dingTalkService.UpdateFormDataSyncDataById(resData, item);
+
+            //            continue;
+            //        }
+
+            //        if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w5"].ToString()))
+            //        {
+            //            dataSource.pk_measdoc = pk_measdocDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lwitq6w5"].ToString()).code; // 主计量单位
+            //        }
+
+            //        if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwitq6w6").Value != null && !string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6w6"].ToString()))
+            //        {
+            //            dataSource.pk_mattaxes = pk_mattaxesDic.FirstOrDefault(f => f.mattaxesname == ydDataSource["selectField_lwitq6w6"].ToString()).mattaxescode; // 税类
+            //        }
+            //        //if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwitq6we"].ToString()))
+            //        //{
+            //        //    dataSource.pk_brand = pk_brandDic.FirstOrDefault(f => f.name == ydDataSource["selectField_lwitq6we"].ToString()).code; // 品牌
+            //        //}
+            //        if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_ltxy3kh6"].ToString()))
+            //        {
+
+            //            switch (ydDataSource["selectField_ltxy3kh6"].ToString())
+            //            {
+            //                case "启用":
+            //                    dataSource.enablestate = ((int)EnumType.enablestate.已启用).ToString();
+            //                    break;
+            //                case "停用":
+            //                    dataSource.enablestate = ((int)EnumType.enablestate.已停用).ToString();
+            //                    break;
+            //            }
+            //        }
+            //        #endregion
+
+            //        #region 数据传入NC并获取结果
+            //        var xmlData = WL_SyncServiceModel.ImportXml.Header(dataSource, item);
+            //        XElement tempData = WL_SyncServiceModel.ImportXml.TemplateHeade();
+
+            //        var results = NCImportFunc.NCImport(tempData, xmlData, _NCApiUrl + "?account=LY01&groupcode=0");
+
+            //        DBHelper.WriteLog($"进入程序3");
+
+            //        XElement xE = XElement.Parse(results);
+            //        string resultcode = xE.Element("sendresult").Element("resultcode").Value;
+            //        string resultdescription = xE.Element("sendresult").Element("resultdescription")?.Value;
+            //        #endregion
+
+            //        #region 回写状态
+            //        var ncResData = new YiDaResDto()
+            //        {
+            //            syncTime = DateTime.Now,
+            //        };
+
+            //        if (resultcode == "1")
+            //        {
+            //            DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
+
+            //            ncResData.bSuccess = true;
+            //            ncResData.ncNo = xE.Element("sendresult").Element("content").Value;
+            //            ncResData.log = "同步成功!";
+            //        }
+            //        else
+            //        {
+            //            if (resultdescription.Contains("不允许重复"))
+            //            {
+            //                // 已存在数据,绑定Id
+            //                var nowData = _db_nc.Queryable<bd_material>().First(f => f.code == dataSource.code && f.pk_org == _Static_pk_org_jt);
+
+            //                var idcData = new xx_idcontrast()
+            //                {
+            //                    bill_type = "material",
+            //                    dr = 0,
+            //                    file_id = item,
+            //                    pk_bill = nowData.pk_material,
+            //                    pk_idcontra = _Static_PK_xx_idcontrast + newId
+            //                };
+            //                _db_nc.Insertable(idcData).ExecuteCommand();
+
+            //                newId++;
+
+            //                ncResData.bSuccess = true;
+            //                ncResData.ncNo = nowData.pk_material;
+            //                ncResData.log = "数据已存在,无需同步,已自动对照!";
+            //            }
+            //            else
+            //            {
+            //                DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作失败!" + resultdescription + ";");
+
+            //                ncResData.bSuccess = false;
+            //                ncResData.ncNo = "";
+            //                ncResData.log = "同步失败!原因为【" + resultdescription + "】";
+            //            }
+            //        }
+
+            //        var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+            //        #endregion
+            //    }
+            //}
+            //#endregion
         }
     }
 }

+ 196 - 127
HH.YiDaSyncNC/DataSync/ZC_SyncService.cs

@@ -48,155 +48,224 @@ namespace HH.YiDaSyncNC.DataSync
         {
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
-            // 宜搭全量数据Id
-            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+            //var codeList = new string[] { "CG-1-1-2502-053", "CG-1-1-2502-052" };
+            //var ncNo = new string[] { "1001G1100000000EM104", "1001G1100000000EM10I" };
 
-            // 获取当前最大Id
-            //var newId = 100000001;
-            //var maxData = _db_nc.Queryable<fa_card>().OrderByDescending(obd => Convert.ToDateTime(obd.creationtime)).First();
-            //if (maxData != null && maxData.pk_card.Contains(_Static_PK_fa_card))
+            //for (int i = 0; i < codeList.Count(); i++)
             //{
-            //    newId = Convert.ToInt32(maxData.pk_card.Replace(_Static_PK_fa_card, "")) + 1;
-            //}
-
-
-            //string createTime = "";
-            //string modifyTime = "";
+            //    var idList1 = _dingTalkService.GetFormIdList("{\"textField_lty0oyv4\":\"" + codeList[i] + "\"}");
 
-            // var ydDataSource = _dingTalkService.GetFormDataById("FINST-G9766T71XRHMWPDI7JZFU6GVQ1X839MR8B4YLT31", out createTime, out modifyTime);
+            //    var ncResData1 = new YiDaResDto()
+            //    {
+            //        syncTime = DateTime.Now,
+            //    };
 
-            //var data = new Dictionary<string, string>();
-            //data.Add("numberField_lu2ejqd4", "1277603.26");
-            //data.Add("numberField_lzc572v2", "0");
-            //data.Add("numberField_lutjo2dt", "19");
-            //data.Add("dateField_lty0oyva", UnixTimeHelper.ConvertToMilliseconds(Convert.ToDateTime("2044-07-05")).ToString());
-
-            //var ydRes = _dingTalkService.UpdateFormDataById(data, "FINST-G9766T71XRHMWPDI7JZFU6GVQ1X839MR8B4YLT31");
+            //    ncResData1.bSuccess = true;
+            //    ncResData1.ncNo = ncNo[i];
+            //    ncResData1.log = "同步成功!";
 
+            //    var ydRes1 = _dingTalkService.UpdateFormDataSyncDataById(ncResData1, idList1.FirstOrDefault());
+            //}
 
-            #region 获取NC中选项数据的Id
-            // var pam_addreducestyleDic = _db_nc.Queryable<pam_addreducestyle>().ToList();
-            #endregion
 
-            // 资产部门ID textField_lydsc49c
-            // 管理部门ID textField_lydsc49b
+            #region 回写状态
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
 
-            #region 循环数据处理业务逻辑
             foreach (var item in idList)
             {
-                // 获取此条数据详情
-                string createTime = "";
-                string modifyTime = "";
-                var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
-
-                //#region 构建数据体
-                //var data = new fa_card();
-                //data.archarea = 0;
-                //data.asset_code = ydDataSource["textField_lty0oyv4"].ToString();
-                //data.asset_name = ydDataSource["textField_lty0oyuj"].ToString();
-                //data.begin_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //data.bill_source = "handin";
-                //data.bill_type = "H1";
-                //data.billmaker = "1001G110000000000ADH";
-                //data.billmaketime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //data.business_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //data.creationtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-                //data.creator = "1001G110000000000ADH";
-                //data.currmoney = 0;
-                //data.dismant_cost = 0;
-                //data.dy_flag = "N";
-                //data.install_fee = 0;
-                //data.machinepower = 0;
-                //data.machinequan = 0;
-                //data.nettonnage = 0;
-                //data.other_cost = 0;
-                //data.pk_group = _Static_pk_org_jt;
-                //data.pk_org = "0001G110000000001MVP";
-                //data.pk_org_v = "0001G110000000001MVO";
-                //data.card_code = "0000001242";
-                //data.assetsuit_code = "营运部(项目)0354";
-
-                //// 主键
-                //data.pk_currency = "1002Z0100000000001K1";
-                //data.pk_transitype = "0001G110000000001B48";
-                //data.transi_type = "H1-00";
-                //data.ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
-
-                //var a = ydDataSource.FirstOrDefault(f => f.Key == "textField_lydsc49c").Value;
-
-                //if (ydDataSource["textField_lydsc49c"].ToString().Contains("PM"))
-                //{
-                //    var ncResData = new YiDaResDto()
-                //    {
-                //        syncTime = DateTime.Now,
-                //    };
-
-                //    ncResData.bSuccess = false;
-                //    ncResData.ncNo = "";
-                //    ncResData.log = "同步失败【使用部门错误,无法关联有效的部门!】";
-
-                //    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
-                //}
-
                 var ncResData = new YiDaResDto()
                 {
                     syncTime = DateTime.Now,
                 };
 
+                //DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
+
                 ncResData.bSuccess = false;
                 ncResData.ncNo = "";
                 ncResData.log = "同步失败【使用部门为空!】";
 
                 var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
-
-
-                //if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwk48b8s").Value != null)
-                //{
-                //    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwk48b8s"].ToString()))
-                //    {
-                //        var tempData = pam_addreducestyleDic.FirstOrDefault(f => f.style_name == ydDataSource["selectField_lwk48b8s"].ToString());
-                //        if (tempData != null)
-                //        {
-                //            data.pk_addreducestyle = tempData.pk_addreducestyle; // 增加方式
-                //        }
-                //    }
-                //}
-
-                //#endregion
-
-                //#region 数据传入NC并获取结果
-                //var nowData = _db_nc.Queryable<fa_card>().First(f => f.asset_code == data.asset_code);
-                //if (nowData == null)
-                //{
-                //    data.pk_card = "DINGTALKFAC100000006"; //_Static_PK_fa_card + newId;
-                //    _db_nc.Insertable(data).ExecuteCommand();
-
-                //    newId++;
-                //}
-                //else
-                //{
-                //    data.pk_card = nowData.pk_card;
-                //    _db_nc.Updateable(data).ExecuteCommand();
-                //}
-
-                //#endregion
-
-                //#region 回写状态
-                //var ncResData = new YiDaResDto()
-                //{
-                //    syncTime = DateTime.Now,
-                //};
-
-                ////DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
-
-                //ncResData.bSuccess = false;
-                //ncResData.ncNo = "";
-                //ncResData.log = "同步失败:【增加方式为空】";
-
-                //var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
-                //#endregion
             }
             #endregion
+
+
+            //DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            //// 宜搭全量数据Id
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+
+            //// 获取当前最大Id
+            ////var newId = 100000001;
+            ////var maxData = _db_nc.Queryable<fa_card>().OrderByDescending(obd => Convert.ToDateTime(obd.creationtime)).First();
+            ////if (maxData != null && maxData.pk_card.Contains(_Static_PK_fa_card))
+            ////{
+            ////    newId = Convert.ToInt32(maxData.pk_card.Replace(_Static_PK_fa_card, "")) + 1;
+            ////}
+
+
+            ////string createTime = "";
+            ////string modifyTime = "";
+
+            //// var ydDataSource = _dingTalkService.GetFormDataById("FINST-G9766T71XRHMWPDI7JZFU6GVQ1X839MR8B4YLT31", out createTime, out modifyTime);
+
+            ////var data = new Dictionary<string, string>();
+            ////data.Add("numberField_lu2ejqd4", "1277603.26");
+            ////data.Add("numberField_lzc572v2", "0");
+            ////data.Add("numberField_lutjo2dt", "19");
+            ////data.Add("dateField_lty0oyva", UnixTimeHelper.ConvertToMilliseconds(Convert.ToDateTime("2044-07-05")).ToString());
+
+            ////var ydRes = _dingTalkService.UpdateFormDataById(data, "FINST-G9766T71XRHMWPDI7JZFU6GVQ1X839MR8B4YLT31");
+
+
+            //#region 获取NC中选项数据的Id
+            //// var pam_addreducestyleDic = _db_nc.Queryable<pam_addreducestyle>().ToList();
+            //#endregion
+
+            //// 资产部门ID textField_lydsc49c
+            //// 管理部门ID textField_lydsc49b
+
+            //#region 循环数据处理业务逻辑
+            //foreach (var item in idList)
+            //{
+            //    // 获取此条数据详情
+            //    string createTime = "";
+            //    string modifyTime = "";
+            //    var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
+
+            //    //#region 构建数据体
+            //    //var data = new fa_card();
+            //    //data.archarea = 0;
+            //    //data.asset_code = ydDataSource["textField_lty0oyv4"].ToString();
+            //    //data.asset_name = ydDataSource["textField_lty0oyuj"].ToString();
+            //    //data.begin_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            //    //data.bill_source = "handin";
+            //    //data.bill_type = "H1";
+            //    //data.billmaker = "1001G110000000000ADH";
+            //    //data.billmaketime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            //    //data.business_date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            //    //data.creationtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            //    //data.creator = "1001G110000000000ADH";
+            //    //data.currmoney = 0;
+            //    //data.dismant_cost = 0;
+            //    //data.dy_flag = "N";
+            //    //data.install_fee = 0;
+            //    //data.machinepower = 0;
+            //    //data.machinequan = 0;
+            //    //data.nettonnage = 0;
+            //    //data.other_cost = 0;
+            //    //data.pk_group = _Static_pk_org_jt;
+            //    //data.pk_org = "0001G110000000001MVP";
+            //    //data.pk_org_v = "0001G110000000001MVO";
+            //    //data.card_code = "0000001242";
+            //    //data.assetsuit_code = "营运部(项目)0354";
+
+            //    //// 主键
+            //    //data.pk_currency = "1002Z0100000000001K1";
+            //    //data.pk_transitype = "0001G110000000001B48";
+            //    //data.transi_type = "H1-00";
+            //    //data.ts = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+            //    //var a = ydDataSource.FirstOrDefault(f => f.Key == "textField_lydsc49c").Value;
+
+            //    var ncResData = new YiDaResDto()
+            //    {
+            //        syncTime = DateTime.Now,
+            //    };
+
+            //    ncResData.bSuccess = false;
+            //    ncResData.ncNo = "";
+            //    ncResData.log = "同步失败【折旧已经制单!】";
+
+            //    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+
+
+
+            //    //if (ydDataSource["textField_lydsc49c"].ToString() == "")
+            //    //{
+            //    //    var ncResData = new YiDaResDto()
+            //    //    {
+            //    //        syncTime = DateTime.Now,
+            //    //    };
+
+            //    //    ncResData.bSuccess = false;
+            //    //    ncResData.ncNo = "";
+            //    //    ncResData.log = "同步失败【使用部门为空!】";
+
+            //    //    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+            //    //}
+            //    //else if (ydDataSource["textField_lydsc49c"].ToString().Contains("PM"))
+            //    //{
+            //    //    var ncResData = new YiDaResDto()
+            //    //    {
+            //    //        syncTime = DateTime.Now,
+            //    //    };
+
+            //    //    ncResData.bSuccess = false;
+            //    //    ncResData.ncNo = "";
+            //    //    ncResData.log = "同步失败【使用部门错误,无法关联有效的部门!】";
+
+            //    //    var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+            //    //}
+
+            //    //var ncResData = new YiDaResDto()
+            //    //{
+            //    //    syncTime = DateTime.Now,
+            //    //};
+
+            //    //ncResData.bSuccess = false;
+            //    //ncResData.ncNo = "";
+            //    //ncResData.log = "同步失败【使用部门为空!】";
+
+            //    //var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+
+
+            //    //if (ydDataSource.FirstOrDefault(f => f.Key == "selectField_lwk48b8s").Value != null)
+            //    //{
+            //    //    if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lwk48b8s"].ToString()))
+            //    //    {
+            //    //        var tempData = pam_addreducestyleDic.FirstOrDefault(f => f.style_name == ydDataSource["selectField_lwk48b8s"].ToString());
+            //    //        if (tempData != null)
+            //    //        {
+            //    //            data.pk_addreducestyle = tempData.pk_addreducestyle; // 增加方式
+            //    //        }
+            //    //    }
+            //    //}
+
+            //    //#endregion
+
+            //    //#region 数据传入NC并获取结果
+            //    //var nowData = _db_nc.Queryable<fa_card>().First(f => f.asset_code == data.asset_code);
+            //    //if (nowData == null)
+            //    //{
+            //    //    data.pk_card = "DINGTALKFAC100000006"; //_Static_PK_fa_card + newId;
+            //    //    _db_nc.Insertable(data).ExecuteCommand();
+
+            //    //    newId++;
+            //    //}
+            //    //else
+            //    //{
+            //    //    data.pk_card = nowData.pk_card;
+            //    //    _db_nc.Updateable(data).ExecuteCommand();
+            //    //}
+
+            //    //#endregion
+
+            //    //#region 回写状态
+            //    //var ncResData = new YiDaResDto()
+            //    //{
+            //    //    syncTime = DateTime.Now,
+            //    //};
+
+            //    ////DBHelper.WriteLog($"Id为【{JsonConvert.SerializeObject(item)}】的单据操作成功!");
+
+            //    //ncResData.bSuccess = false;
+            //    //ncResData.ncNo = "";
+            //    //ncResData.log = "同步失败:【增加方式为空】";
+
+            //    //var ydRes = _dingTalkService.UpdateFormDataSyncDataById(ncResData, item);
+            //    //#endregion
+            //}
+            //#endregion
         }
     }
 }

+ 104 - 0
HH.YiDaSyncNC/DataSync/ZC_ZJHX_SyncService.cs

@@ -0,0 +1,104 @@
+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 ZC_ZJHX_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_fa_card = ConfigurationManager.AppSettings["fa_card"];
+        public static string _Static_pk_org_jt = ConfigurationManager.AppSettings["pk_org_jt"];
+
+        public ZC_ZJHX_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 void DataSync()
+        {
+            DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
+
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"N\",\"textField_ltxyt75i\":\"同步成功\"}").ToList();
+
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
+            LogHelper.WriteLog(JsonConvert.SerializeObject(idList), "idListValue");
+
+            var fa_cardList = _db_nc.Queryable<fa_card>().ToList();
+            var fa_cardhistoryList = _db_nc.Queryable<fa_cardhistory>().ToList();
+
+            var i = 1;
+
+            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()))
+                {
+
+                }
+                else
+                {
+                    continue;
+                }
+
+                LogHelper.WriteLog("", "【序号 " + i + " / " + idList.Count + "】" + item + " 开始回写");
+                i++;
+
+
+                var fa_card = fa_cardList.FirstOrDefault(f => f.pk_card == ydDataSource["textField_ltxyt75m"].ToString());
+                var fa_cardhistory = fa_cardhistoryList.FirstOrDefault(f => f.pk_card == ydDataSource["textField_ltxyt75m"].ToString() && f.laststate_flag == "Y");
+
+                var fa_cardhistoryHis = fa_cardhistoryList.Where(f => f.pk_card == ydDataSource["textField_ltxyt75m"].ToString() && f.usedmonth != "0").ToList();
+
+                if (fa_card != null && fa_cardhistory != null)
+                {
+
+                    var updateData = new Dictionary<string, string>();
+
+                    // 原值
+                    updateData.Add("numberField_lty0oyv8", fa_card.currmoney == null ? "0" : fa_card.currmoney.Value.ToString("#0.00"));
+
+                    //// 折旧额
+                    //updateData.Add("numberField_lu2eb47d", fa_cardhistory.accudep_cal);
+
+                    // 净值
+                    updateData.Add("numberField_lu2ejqd4", fa_card.currmoney == null ? "0" : (fa_card.currmoney.Value - Convert.ToDecimal(fa_cardhistory.accudep_cal)).ToString("#0.00"));
+
+                    // 计提期数
+                    updateData.Add("numberField_lutjo2dt", fa_cardhistoryHis.OrderByDescending(ob => ob.usedmonth).FirstOrDefault()==null?"0" : fa_cardhistoryHis.OrderByDescending(ob => ob.usedmonth).FirstOrDefault().usedmonth);
+
+                    var ydRes = _dingTalkService.UpdateFormDataById(updateData, item);
+
+                }
+
+            }
+        }
+    }
+}

+ 29 - 0
HH.YiDaSyncNC/Dtos/NC/fa_cardhistory.cs

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

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

@@ -142,6 +142,7 @@
     <Compile Include="DataSync\KP_TP_SyncService.cs" />
     <Compile Include="DataSync\KP_SyncService.cs" />
     <Compile Include="DataSync\YF_FPRZ_SyncService.cs" />
+    <Compile Include="DataSync\ZC_ZJHX_SyncService.cs" />
     <Compile Include="DataSync\ZC_SyncService.cs" />
     <Compile Include="DataSync\XMD_SyncService.cs" />
     <Compile Include="DataSync\WL_SyncService.cs" />
@@ -152,6 +153,7 @@
     <Compile Include="Dtos\NC\bd_defdoc.cs" />
     <Compile Include="Dtos\NC\bd_income.cs" />
     <Compile Include="Dtos\NC\bd_customer.cs" />
+    <Compile Include="Dtos\NC\fa_cardhistory.cs" />
     <Compile Include="Dtos\NC\org_accountingbook.cs" />
     <Compile Include="Dtos\NC\po_order_bb.cs" />
     <Compile Include="Dtos\NC\po_order_b.cs" />

+ 7 - 2
HH.YiDaSyncNC/Program.cs

@@ -83,8 +83,8 @@ namespace HH.YiDaSyncNC
                 #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_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);
@@ -170,6 +170,11 @@ namespace HH.YiDaSyncNC
                 //kp_hk_SyncService.DataSync();
                 #endregion
 
+                #region 资产折旧回写
+                ZC_ZJHX_SyncService zc_zjhx_SyncService = new ZC_ZJHX_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_ZC, db, db_nc, _Static_NCApiUrl);
+                zc_zjhx_SyncService.DataSync();
+                #endregion
+
                 Environment.Exit(0);
             }
             catch (Exception ex)