Forráskód Böngészése

Merge branch 'master' of http://118.31.186.52:8080/tfs/YinPengGroup/%E4%B8%8A%E6%B5%B7%E8%93%9D%E4%BA%91%E5%AE%9E%E4%B8%9A%E8%82%A1%E4%BB%BD%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/_git/%E5%AE%9C%E6%90%AD%E5%AF%B9%E6%8E%A5NC%E5%8D%95%E6%8D%AE%E5%BC%80%E5%8F%91-%E5%90%8E%E7%AB%AF-%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F

晓海 曾 2 éve%!(EXTRA string=óta)
szülő
commit
3f7e57d8a2

+ 6 - 0
HH.YiDaSyncNC/App.config

@@ -11,6 +11,12 @@
     <add key="Conn" value="server=60.204.209.15;uid=test;pwd=aaa111...;database=YiDaSyncNC_Test" />
     <add key="Conn_NC" value="server=58.246.128.122,2433;uid=sa;pwd=!lanyunnc@2023#;database=lanyun" />
     <add key="NCApiUrl" value="http://58.246.128.122:9090/service/XChangeServlet"/>
+    <!--<add key="NCApiUrl" value="http://60.204.136.100:9099/service/XChangeServlet"/>-->
+
+    <!--NC 审核 接口地址-->
+    <add key="NCApporeApiUrl" value="http://60.204.136.100:9099/"/>
+    <!--<add key="NCApporeApiUrl" value="http://58.246.128.122:9090/"/>-->
+
     <!--宜搭配置-->
     <add key="AppType" value="APP_ERBDTFS82HOVBPL3NFH0" />
     <add key="SystemToken" value="RRB66F91T97H1WN89QZYC47PKLZO2ZQOUMOQLP" />

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 25 - 13
HH.YiDaSyncNC/DataSync/CGDD_SyncService.cs


+ 169 - 153
HH.YiDaSyncNC/DataSync/KP_SyncService.cs

@@ -55,7 +55,8 @@ namespace HH.YiDaSyncNC.DataSync
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
             // 宜搭全量数据Id
-            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lvituew9\":\"正常\"}");
+            var idList = _dingTalkService.GetFormIdList("{\"textField_lvdosccc\":\"KP_2024071700252\"}");
 
             LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 
@@ -73,7 +74,6 @@ namespace HH.YiDaSyncNC.DataSync
             var bd_defdoc_htywlx = _db_nc.Queryable<bd_defdoc>().Where(w => w.pk_defdoclist == "1001G1100000000010PV").ToList(); // 合同业务类型
             #endregion
 
-
             #region 接口方式
             // 向NC插入数据
             foreach (var item in idList)
@@ -83,6 +83,11 @@ namespace HH.YiDaSyncNC.DataSync
 
                 var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
+                //if (ydDataSource.FirstOrDefault(f => f.Key == "dateField_ltxyt75l").Value != null && UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_ltxyt75l"].ToString())).ToString("yyyy-MM-dd") != "2024-07-16")
+                //{
+                //    continue;
+                //}
+
                 var ncResData = new List<YiDaResDto>();
 
 
@@ -104,6 +109,12 @@ namespace HH.YiDaSyncNC.DataSync
 
                 dataSource.单据日期 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
 
+                if (!string.IsNullOrWhiteSpace(ydDataSource["dateField_lw5ud9bk"].ToString()))
+                {
+                    dataSource.单据日期 = UnixTimeHelper.ConvertMillisecondsToDateTime(Convert.ToInt64(ydDataSource["dateField_lw5ud9bk"].ToString())).ToString("yyyy-MM-dd HH:mm:ss");
+                }
+
+
                 if (ydDataSource.FirstOrDefault(f => f.Key == "textField_lvdojfuj").Value != null)
                 {
                     if (!string.IsNullOrWhiteSpace(ydDataSource["textField_lvdojfuj"].ToString()))
@@ -193,10 +204,17 @@ namespace HH.YiDaSyncNC.DataSync
                 {
                     if (!string.IsNullOrWhiteSpace(ydDataSource["selectField_lvc9x4vn"].ToString()))
                     {
-                        var tempData = bd_defdoc_htywlx.FirstOrDefault(f => f.name == ydDataSource["selectField_lvc9x4vn"].ToString());
-                        if (tempData != null)
+                        if (ydDataSource["selectField_lvc9x4vn"].ToString().Contains("一次性") || ydDataSource["selectField_lvc9x4vn"].ToString().Contains("工程订单"))
                         {
-                            dataSource.合同业务类型 = tempData.pk_defdoc; // 合同业务类型
+                            dataSource.合同业务类型 = "1001G11000000000113F";
+                        }
+                        else
+                        {
+                            var tempData = bd_defdoc_htywlx.FirstOrDefault(f => f.name == ydDataSource["selectField_lvc9x4vn"].ToString());
+                            if (tempData != null)
+                            {
+                                dataSource.合同业务类型 = tempData.pk_defdoc; // 合同业务类型
+                            }
                         }
                     }
                 }
@@ -209,213 +227,224 @@ namespace HH.YiDaSyncNC.DataSync
                 var detailList = new List<KP_SyncServiceModel.DataModel.OrderB>();
 
                 #region 大业主开票明细
-                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvc9x4vt").Value != null && dataSource.合同业务类型 == "1001G11000000000113D")
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvc9x4vt").Value != null)
                 {
-                    var detailObjList1 = (List<object>)ydDataSource["tableField_lvc9x4vt"]; // 大业主开票明细
                     if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvc9x4vt").Value != null)
                     {
-                        foreach (var objItem in detailObjList1)
+                        var detailObjList1 = (List<object>)ydDataSource["tableField_lvc9x4vt"]; // 大业主开票明细
+
+                        if (detailObjList1.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList1.FirstOrDefault())["textField_lvdojfup"].ToString()))
                         {
-                            var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
 
-                            if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString()))
+                            foreach (var objItem in detailObjList1)
                             {
-                                var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString().Replace("\\", "");
-                                var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
-                                var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
 
-                                var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynhq7p_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
 
-                                detailItem.物料 = materialData.code; // 物料
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
 
-                                var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+                                    detailItem.物料 = materialData.code; // 物料
 
-                                detailItem.计量单位 = unitCode.code; // 计量单位
-                            }
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
 
-                            var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2v"].ToString());
-                            var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2z"].ToString());
-                            var wsdj = hsdj - se;
-                            var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2w"].ToString());
-                            var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp30"].ToString());
-                            var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2y"].ToString());
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
 
-                            // 含税单价
-                            detailItem.含税单价 = hsdj.ToString();
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2v"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2z"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2w"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp30"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2y"].ToString());
 
-                            // 无税单价
-                            detailItem.无税单价 = wsdj.ToString();
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
 
-                            //  含税净价
-                            detailItem.含税净价 = hsdj.ToString();
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
 
-                            // 无税净价
-                            detailItem.无税净价 = wsdj.ToString();
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
 
-                            // 税额
-                            detailItem.税额 = se.ToString();
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
 
-                            // 无税金额
-                            detailItem.无税金额 = wsje.ToString();
+                                // 税额
+                                detailItem.税额 = se.ToString();
 
-                            // 数量
-                            detailItem.数量 = sl.ToString();
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
 
-                            // 价税合计
-                            detailItem.价税合计 = jshj.ToString();
+                                // 数量
+                                detailItem.数量 = sl.ToString();
 
-                            detailItem.换算率 = "1.00/1.00";
-                            detailItem.税码 = "CN04"; // 税率码 
-                            detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2x"].ToString()).ToString(); // 税率
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
 
-                            detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp2t"].ToString();
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp2x"].ToString()).ToString(); // 税率
 
-                            detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfup"].ToString();
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp2t"].ToString();
 
-                            detailList.Add(detailItem);
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfup"].ToString();
+
+                                detailList.Add(detailItem);
+                            }
                         }
                     }
                 }
                 #endregion
 
                 #region 工程订单开票明细
-                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null && dataSource.合同业务类型 == null)
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
                 {
-                    dataSource.项目 = "PM99001";
-                    dataSource.合同业务类型 = "1001G11000000000113F";
-
                     var detailObjList2 = (List<object>)ydDataSource["tableField_lvd8pp44"]; // 工程订单开票明细
                     if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
                     {
-                        foreach (var objItem in detailObjList2)
+                        if (detailObjList2.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList2.FirstOrDefault())["textField_lvdojfur"].ToString()))
                         {
-                            var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
+                            dataSource.项目 = "PM99001";
 
-                            if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString()))
+                            foreach (var objItem in detailObjList2)
                             {
-                                var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString().Replace("\\", "");
-                                var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
-                                var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
 
-                                var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6a_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
 
-                                detailItem.物料 = materialData.code; // 物料
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
 
-                                var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+                                    detailItem.物料 = materialData.code; // 物料
 
-                                detailItem.计量单位 = unitCode.code; // 计量单位
-                            }
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
 
-                            var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3y"].ToString());
-                            var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp42"].ToString());
-                            var wsdj = hsdj - se;
-                            var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3z"].ToString());
-                            var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp43"].ToString());
-                            var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp41"].ToString());
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
 
-                            // 含税单价
-                            detailItem.含税单价 = hsdj.ToString();
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3y"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp42"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp3z"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp43"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp41"].ToString());
 
-                            // 无税单价
-                            detailItem.无税单价 = wsdj.ToString();
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
 
-                            //  含税净价
-                            detailItem.含税净价 = hsdj.ToString();
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
 
-                            // 无税净价
-                            detailItem.无税净价 = wsdj.ToString();
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
 
-                            // 税额
-                            detailItem.税额 = se.ToString();
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
 
-                            // 无税金额
-                            detailItem.无税金额 = wsje.ToString();
+                                // 税额
+                                detailItem.税额 = se.ToString();
 
-                            // 数量
-                            detailItem.数量 = sl.ToString();
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
 
-                            // 价税合计
-                            detailItem.价税合计 = jshj.ToString();
+                                // 数量
+                                detailItem.数量 = sl.ToString();
 
-                            detailItem.换算率 = "1.00/1.00";
-                            detailItem.税码 = "CN04"; // 税率码 
-                            detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp40"].ToString()).ToString(); // 税率
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
 
-                            detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp3w"].ToString();
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvd8pp40"].ToString()).ToString(); // 税率
 
-                            detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfur"].ToString();
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvd8pp3w"].ToString();
 
-                            detailList.Add(detailItem);
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfur"].ToString();
+
+                                detailList.Add(detailItem);
+                            }
                         }
                     }
                 }
                 #endregion
 
                 #region 小业主开票明细
-                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvdnme13").Value != null && dataSource.合同业务类型 == "1001G11000000000113E")
+                if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvdnme13").Value != null)
                 {
                     var detailObjList3 = (List<object>)ydDataSource["tableField_lvdnme13"]; // 小业主
                     if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvdnme13").Value != null)
                     {
-                        foreach (var objItem in detailObjList3)
+                        if (detailObjList3.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList3.FirstOrDefault())["textField_lvdojfus"].ToString()))
                         {
-                            var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
 
-                            if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString()))
+                            foreach (var objItem in detailObjList3)
                             {
-                                var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString().Replace("\\", "");
-                                var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
-                                var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
+                                var detailItem = new KP_SyncServiceModel.DataModel.OrderB();
 
-                                var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
+                                if (!string.IsNullOrWhiteSpace(((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString()))
+                                {
+                                    var sourceStr = ((Dictionary<string, object>)objItem)["associationFormField_lvynrr6c_id"].ToString().Replace("\\", "");
+                                    var a = sourceStr = sourceStr.Substring(1, sourceStr.Length - 2);
+                                    var b = JsonConvert.DeserializeObject<List<FormItem>>(a);
 
-                                detailItem.物料 = materialData.code; // 物料
+                                    var materialData = bd_materialDic.FirstOrDefault(f => f.name == b[0].title);
 
-                                var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+                                    detailItem.物料 = materialData.code; // 物料
 
-                                detailItem.计量单位 = unitCode.code; // 计量单位
-                            }
+                                    var unitCode = bd_measdocDic.FirstOrDefault(f => f.pk_measdoc == materialData.pk_measdoc);
+
+                                    detailItem.计量单位 = unitCode.code; // 计量单位
+                                }
 
-                            var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0w"].ToString());
-                            var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme10"].ToString());
-                            var wsdj = hsdj - se;
-                            var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0x"].ToString());
-                            var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme11"].ToString());
-                            var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0z"].ToString());
+                                var hsdj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0w"].ToString());
+                                var se = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme10"].ToString());
+                                var wsdj = hsdj - se;
+                                var sl = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0x"].ToString());
+                                var wsje = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme11"].ToString());
+                                var jshj = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0z"].ToString());
 
-                            // 含税单价
-                            detailItem.含税单价 = hsdj.ToString();
+                                // 含税单价
+                                detailItem.含税单价 = hsdj.ToString();
 
-                            // 无税单价
-                            detailItem.无税单价 = wsdj.ToString();
+                                // 无税单价
+                                detailItem.无税单价 = wsdj.ToString();
 
-                            //  含税净价
-                            detailItem.含税净价 = hsdj.ToString();
+                                //  含税净价
+                                detailItem.含税净价 = hsdj.ToString();
 
-                            // 无税净价
-                            detailItem.无税净价 = wsdj.ToString();
+                                // 无税净价
+                                detailItem.无税净价 = wsdj.ToString();
 
-                            // 税额
-                            detailItem.税额 = se.ToString();
+                                // 税额
+                                detailItem.税额 = se.ToString();
 
-                            // 无税金额
-                            detailItem.无税金额 = wsje.ToString();
+                                // 无税金额
+                                detailItem.无税金额 = wsje.ToString();
 
-                            // 数量
-                            detailItem.数量 = sl.ToString();
+                                // 数量
+                                detailItem.数量 = sl.ToString();
 
-                            // 价税合计
-                            detailItem.价税合计 = jshj.ToString();
+                                // 价税合计
+                                detailItem.价税合计 = jshj.ToString();
 
-                            detailItem.换算率 = "1.00/1.00";
-                            detailItem.税码 = "CN04"; // 税率码 
-                            detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0y"].ToString()).ToString(); // 税率
+                                detailItem.换算率 = "1.00/1.00";
+                                detailItem.税码 = "CN04"; // 税率码 
+                                detailItem.税率 = Convert.ToDecimal(((Dictionary<string, object>)objItem)["numberField_lvdnme0y"].ToString()).ToString(); // 税率
 
-                            detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvdnme0u"].ToString();
+                                detailItem.开票内容 = ((Dictionary<string, object>)objItem)["textField_lvdnme0u"].ToString();
 
-                            detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfus"].ToString();
+                                detailItem.行id = ((Dictionary<string, object>)objItem)["textField_lvdojfus"].ToString();
 
-                            detailList.Add(detailItem);
+                                detailList.Add(detailItem);
+                            }
                         }
                     }
                 }
@@ -427,7 +456,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 + "05"), _NCApiUrl + "?account=LY01&groupcode=0");
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售订单), "results_销售订单");
 
@@ -452,6 +481,8 @@ namespace HH.YiDaSyncNC.DataSync
                         ncNo = "",
                         log = "同步失败!原因为【" + resultdescription_销售订单 + "】!"
                     });
+
+                    continue;
                 }
 
                 // -------------------------------销售订单同步完,开始同步销售发票
@@ -467,7 +498,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 + "05"), _NCApiUrl + "?account=LY01&groupcode=0");
 
 
                 LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售发票), "results_销售发票");
@@ -495,34 +526,18 @@ namespace HH.YiDaSyncNC.DataSync
                     });
                 }
 
-                // -------------------------------销售订单同步完,开始同步应收
+                // -------------------------------销售发票同步完,开始同步应收  (新版)应收不同步,改为调用审核接口,让NC自动取生成应收单
 
-                var saleinvoicebData = _db_nc.Queryable<so_saleinvoice_b>().Where(f => f.csaleinvoiceid == xE_销售发票.Element("sendresult").Element("content").Value).ToList();
-                var squareinvbData = _db_nc.Queryable<so_squareinv_d>().Where(f => f.csquarebillid == xE_销售发票.Element("sendresult").Element("content").Value).ToList();
+                var results_销售发票审核 = HttpRequestHelper.ApporeNCCSOBill(xE_销售发票.Element("sendresult").Element("content").Value);
 
-                dataSource.销售发票主表id = xE_销售发票.Element("sendresult").Element("content").Value;
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售发票审核), "results_销售发票审核");
 
-                //foreach (var detailItem in dataSource.明细)
-                //{
-                //    var a = saleinvoicebData.FirstOrDefault(f => f.vbdef10 == detailItem.行id).csaleinvoicebid;
-                //    var b = squareinvbData.FirstOrDefault(f => f.csquarebillbid == a);
-                //    detailItem.销售发票子表id = b.csalesquaredid;
-                //}
-
-                var results_应收单 = NCImportFunc.NCImport(KP_SyncServiceModel.ImportXml_应收单.TemplateHeade(), KP_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")
+                if (results_销售发票审核.state == 0)
                 {
                     ncResData.Add(new YiDaResDto()
                     {
                         bSuccess = true,
-                        ncNo = xE_应收单.Element("sendresult").Element("content").Value,
+                        ncNo = "",
                         log = "同步成功!"
                     });
                 }
@@ -532,10 +547,11 @@ namespace HH.YiDaSyncNC.DataSync
                     {
                         bSuccess = false,
                         ncNo = "",
-                        log = "同步失败!原因为【" + resultdescription_应收单 + "】!"
+                        log = "同步失败!原因为【" + results_销售发票审核.msg + "】!"
                     });
                 }
 
+
                 var finalResData = new YiDaResDto();
 
                 if (ncResData.FirstOrDefault(f => !f.bSuccess) != null)

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

@@ -51,7 +51,7 @@ namespace HH.YiDaSyncNC.DataSync
             DingTalkService _dingTalkService = new DingTalkService(_AppType, _SystemToken, _UserId, _FormId);
 
             // 宜搭全量数据Id
-            var idList = _dingTalkService.GetModifyFormIdList();
+            var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\"}");
 
             DBHelper.WriteLog(JsonConvert.SerializeObject(idList), "idList");
 
@@ -147,7 +147,7 @@ namespace HH.YiDaSyncNC.DataSync
                     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");
+                    var results = NCImportFunc.NCImport(tempData, xmlData, _NCApiUrl + "?account=01&groupcode=0");
 
                     DBHelper.WriteLog($"进入程序3");
 

+ 31 - 0
HH.YiDaSyncNC/Dtos/NC/ar_recitem.cs

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

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

@@ -143,6 +143,7 @@
     <Compile Include="Dtos\NC\org_accountingbook.cs" />
     <Compile Include="Dtos\NC\po_order_bb.cs" />
     <Compile Include="Dtos\NC\po_order_b.cs" />
+    <Compile Include="Dtos\NC\ar_recitem.cs" />
     <Compile Include="Dtos\NC\sm_user.cs" />
     <Compile Include="Dtos\NC\bd_psndoc.cs" />
     <Compile Include="Dtos\NC\org_dept.cs" />
@@ -183,6 +184,7 @@
     <Compile Include="Helper\DBHelper.cs" />
     <Compile Include="Helper\DingTalkService.cs" />
     <Compile Include="Helper\DocDicHelper.cs" />
+    <Compile Include="Helper\HttpRequestHelper.cs" />
     <Compile Include="Helper\LogHelper.cs" />
     <Compile Include="Helper\NCImportFunc.cs" />
     <Compile Include="Helper\UnixTimeHelper.cs" />

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

@@ -169,6 +169,12 @@ namespace HH.YiDaSyncNC.Helper
         }
         #endregion
 
+        #region 更新表单数据
+        public UpdateFormDataResponse UpdateFormDataById(Dictionary<string, string> resData, string FormInstanceId)
+        {
+            return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(resData), FormInstanceId);
+        }
+        #endregion
 
 
         #region 获取【流程表单】id集合

+ 102 - 0
HH.YiDaSyncNC/Helper/HttpRequestHelper.cs

@@ -0,0 +1,102 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+
+namespace HH.YiDaSyncNC.Helper
+{
+    public class HttpRequestHelper
+    {
+        public static string _Static_NCApporeApiUrl = ConfigurationManager.AppSettings["NCApporeApiUrl"];
+
+        public class ApporeDataModel
+        {
+            public int state { get; set; }
+            public string msg { get; set; }
+            public string result { get; set; }
+        }
+
+        #region 销售发票审核
+        public class ApporeNCCSOBillParamModel
+        {
+            public string billdate { get; set; }
+            public string csaleinvoiceid { get; set; }
+            public string usercode { get; set; }
+        }
+
+        public static ApporeDataModel ApporeNCCSOBill(string billNo)
+        {
+            var param = new ApporeNCCSOBillParamModel()
+            {
+                billdate = DateTime.Now.ToString("yyyy-MM-dd"),
+                csaleinvoiceid = billNo,
+                usercode = "OA-NC"
+            };
+
+            string apiUrl = string.Format(_Static_NCApporeApiUrl + "service/~lxbxy_ext/nc.api.lxbxy.httpservice.ApporeNCCSOBill");
+            string result = HttpPost(apiUrl, JsonConvert.SerializeObject(param));
+
+            return JsonConvert.DeserializeObject<ApporeDataModel>(result);
+        }
+        #endregion
+
+        #region 付款单审核
+        public class ApproveNCFKBillParamModel
+        {
+            public string billdate { get; set; }
+            public string paybill { get; set; }
+            public string usercode { get; set; }
+        }
+
+        public static ApporeDataModel ApproveNCFKBill(string billNo)
+        {
+            var param = new ApproveNCFKBillParamModel()
+            {
+                billdate = DateTime.Now.ToString("yyyy-MM-dd"),
+                paybill = billNo,
+                usercode = "OA-NC"
+            };
+
+            string apiUrl = string.Format(_Static_NCApporeApiUrl + "service/~lxbxy_ext/nc.api.lxbxy.httpservice.ApproveNCFKBill");
+            string result = HttpPost(apiUrl, JsonConvert.SerializeObject(param));
+            return JsonConvert.DeserializeObject<ApporeDataModel>(result);
+        }
+        #endregion
+
+
+        #region POST请求(原始方法)
+        public static string HttpPost(string url, string postDataStr)
+        {
+            try
+            {
+                byte[] bytes = Encoding.UTF8.GetBytes(postDataStr);
+                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
+                var host = request.RequestUri.Scheme + "://" + request.RequestUri.Host + request.RequestUri.AbsolutePath;
+
+                request.Method = "POST";
+                request.ContentType = "application/json";
+                request.ContentLength = bytes.Length;
+                Stream writer = request.GetRequestStream();
+                writer.Write(bytes, 0, bytes.Length);
+                writer.Flush();
+                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
+                string retString = reader.ReadToEnd();
+                response.Close();
+
+                return retString;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+        #endregion
+    }
+}

+ 14 - 6
HH.YiDaSyncNC/Models/KP_SyncServiceModel.cs

@@ -239,7 +239,7 @@ namespace HH.YiDaSyncNC.Models
                         new XElement("cemployeeid",""),
                         new XElement("corigcurrencyid",item.币种),
                         new XElement("cinvoicecustid",item.客户),
-                        new XElement("cpaytermid","01"),
+                        new XElement("cpaytermid",item.收款协议),
 
                         new XElement("ntotalnum",item.数量),
                         new XElement("ntotalinvoicenum","1"),
@@ -495,10 +495,14 @@ namespace HH.YiDaSyncNC.Models
                         new XElement("copposesrcid",""),
                         new XElement("vnote",""),
 
-                        new XElement("fstatusflag","2"),
+                        //new XElement("fstatusflag","2"),
+                        //new XElement("approver",item.审批人),
+                        //new XElement("taudittime",item.审批时间),
+
+                        new XElement("fstatusflag","1"),
+                        new XElement("approver",""),
+                        new XElement("taudittime",""),
 
-                        new XElement("approver",item.审批人),
-                        new XElement("taudittime",item.审批时间),
                         new XElement("billmaker",item.制单人),
                         new XElement("dmakedate",item.制单时间),
                         new XElement("creator",item.创建人),
@@ -620,8 +624,8 @@ namespace HH.YiDaSyncNC.Models
                             new XElement("purchaseorder",item.销售订单单据号),
                             new XElement("invoiceno",item.发票号),
 
-                            new XElement("vbdef1",itemData.开票内容),
-                            new XElement("vbdef10",itemData.行id),
+                            new XElement("def1",itemData.开票内容),
+                            new XElement("def10",itemData.行id),
 
                             new XElement("grouprate","0"),
                             new XElement("globalrate","0"),
@@ -719,6 +723,10 @@ namespace HH.YiDaSyncNC.Models
                         new XElement("inner_effect_date",""),
                         new XElement("busidate",""),
 
+                        new XElement("def2",item.发票号),
+                        new XElement("def4",item.开票类型),
+                        new XElement("def5",item.合同业务类型),
+
                         new XElement("bodys",bodys),
                     }),
                 });

+ 2 - 2
HH.YiDaSyncNC/Program.cs

@@ -72,8 +72,8 @@ namespace HH.YiDaSyncNC
                 //KH_SyncService kh_SyncService = new KH_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KH, db, db_nc, _Static_NCApiUrl);
                 //kh_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_SyncService kp_SyncService = new KP_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_KP, db, db_nc, _Static_NCApiUrl);
+                kp_SyncService.DataSync();
 
                 //CGDD_SyncService cgdd_SyncService = new CGDD_SyncService(_Static_AppType, _Static_SystemToken, _Static_UserId, _Static_FormId_CGDD, db, db_nc, _Static_NCApiUrl);
                 //cgdd_SyncService.DataSync();