guoshuang 2 anni fa
parent
commit
4d3bedadf8

+ 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" />

File diff suppressed because it is too large
+ 109 - 103
HH.YiDaSyncNC/DataSync/CGDD_SyncService.cs


+ 16 - 42
HH.YiDaSyncNC/DataSync/KP_SyncService.cs

@@ -55,8 +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("{\"textField_lvdosccc\":\"KP_2024071800267\"}");
+            //var idList = _dingTalkService.GetFormIdList("{\"radioField_lycrvvtk\":\"Y\",\"selectField_lvituew9\":\"正常\"}");
+            var idList = _dingTalkService.GetFormIdList("{\"textField_lvdosccc\":\"KP_2024071700252\"}");
 
             LogHelper.WriteLog(JsonConvert.SerializeObject(idList.Count), "idList");
 
@@ -83,10 +83,10 @@ namespace HH.YiDaSyncNC.DataSync
 
                 var ydDataSource = _dingTalkService.GetFormDataById(item, out createTime, out modifyTime);
 
-                if (ydDataSource["textField_ltxyt75i"].ToString() != "")
-                {
-                    continue;
-                }
+                //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>();
 
@@ -304,13 +304,12 @@ namespace HH.YiDaSyncNC.DataSync
                 #region 工程订单开票明细
                 if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
                 {
-                    dataSource.项目 = "PM99001";
-
                     var detailObjList2 = (List<object>)ydDataSource["tableField_lvd8pp44"]; // 工程订单开票明细
                     if (ydDataSource.FirstOrDefault(f => f.Key == "tableField_lvd8pp44").Value != null)
                     {
                         if (detailObjList2.Count() > 0 && !string.IsNullOrWhiteSpace(((Dictionary<string, object>)detailObjList2.FirstOrDefault())["textField_lvdojfur"].ToString()))
                         {
+                            dataSource.项目 = "PM99001";
 
                             foreach (var objItem in detailObjList2)
                             {
@@ -457,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 + "02"), _NCApiUrl + "?account=01&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_销售订单");
 
@@ -499,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 + "02"), _NCApiUrl + "?account=01&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_销售发票");
@@ -527,44 +526,18 @@ namespace HH.YiDaSyncNC.DataSync
                     });
                 }
 
-                // -------------------------------销售发票同步完,开始同步应收
-
-                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();
-
-                dataSource.销售发票主表id = xE_销售发票.Element("sendresult").Element("content").Value;
-
-                //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 + "02"), _NCApiUrl + "?account=01&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;
-
-                var recitemData = _db_nc.Queryable<ar_recitem>().Where(w => w.pk_recbill == xE_应收单.Element("sendresult").Element("content").Value).ToList();
+                // -------------------------------销售发票同步完,开始同步应收  (新版)应收不同步,改为调用审核接口,让NC自动取生成应收单
 
-                foreach (var recitem in recitemData)
-                {
-                    recitem.scomment = recitem.def1;
-
-                    _db_nc.Updateable(recitem).ExecuteCommand();
-                }
+                var results_销售发票审核 = HttpRequestHelper.ApporeNCCSOBill(xE_销售发票.Element("sendresult").Element("content").Value);
 
+                LogHelper.WriteLog(JsonConvert.SerializeObject(results_销售发票审核), "results_销售发票审核");
 
-                if (resultcode_应收单 == "1")
+                if (results_销售发票审核.state == 0)
                 {
                     ncResData.Add(new YiDaResDto()
                     {
                         bSuccess = true,
-                        ncNo = xE_应收单.Element("sendresult").Element("content").Value,
+                        ncNo = "",
                         log = "同步成功!"
                     });
                 }
@@ -574,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)

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

@@ -181,6 +181,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" />

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

@@ -163,12 +163,18 @@ namespace HH.YiDaSyncNC.Helper
             data.Add("dateField_ltxyt75l", UnixTimeHelper.ConvertToMilliseconds(resData.syncTime).ToString());
             data.Add("textField_ltxyt75m", resData.ncNo);
             data.Add("textField_ltxyt75n", resData.log);
-            // data.Add("radioField_lycrvvtk", "N");
+            data.Add("radioField_lycrvvtk", "N");
 
             return UpdateFormDataByIdFunc(JsonConvert.SerializeObject(data), FormInstanceId);
         }
         #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
+    }
+}

+ 2 - 2
HH.YiDaSyncNC/Program.cs

@@ -70,8 +70,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();