From 567fb8c8c0851f1ae24176d7414299a28696a276 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 16 五月 2025 17:34:24 +0800
Subject: [PATCH] 1.公共日志方法 2.携客云获取到货单

---
 service/Warehouse/MesXkyService.cs |  194 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 162 insertions(+), 32 deletions(-)

diff --git a/service/Warehouse/MesXkyService.cs b/service/Warehouse/MesXkyService.cs
index e14486b..a1b0d95 100644
--- a/service/Warehouse/MesXkyService.cs
+++ b/service/Warehouse/MesXkyService.cs
@@ -1,28 +1,46 @@
 锘縰sing MES.Service.Models;
-using Microsoft.IdentityModel.Tokens;
-using MySqlConnector;
-using NewPdaSqlServer.Controllers;
 using NewPdaSqlServer.DB;
-using NewPdaSqlServer.Dto.service;
-using NewPdaSqlServer.entity;
-using NewPdaSqlServer.service.@base;
 using NewPdaSqlServer.util;
 using Newtonsoft.Json;
-using SqlSugar;
+using Newtonsoft.Json.Linq;
 using System.Collections;
 using System.Data;
 using System.Net;
 using System.Net.Http.Headers;
-using System.Security.Cryptography;
 using System.Text;
-using static Azure.Core.HttpHeader;
-using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
+using System.Data.SqlClient;
+using System.Data;
 using static NewPdaSqlServer.Controllers.Warehouse.MesXkyController;
 
 namespace NewPdaSqlServer.service.QC;
 
 public class MesXkyService : RepositoryNoEntity
 {
+    /// <summary>
+    /// 绯荤粺鑷姩鏃ュ織妯℃澘锛堢敤浜庢惡瀹簯鎺ュ彛璋冪敤璁板綍锛�
+    /// </summary>
+    private  string _logMessage = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曘��";
+    
+    /// <summary>
+    /// 璇锋眰鎶ユ枃缂撳瓨锛堝瓨鍌ㄥ簭鍒楀寲鍚庣殑JSON璇锋眰鍐呭锛�
+    /// </summary>
+    private string _requestJson = string.Empty;
+    
+    /// <summary>
+    /// 鍔ㄦ�佸搷搴斿璞★紙瀛樺偍鍙嶅簭鍒楀寲鐨勬惡瀹簯鎺ュ彛鍝嶅簲锛�
+    /// </summary>
+    private dynamic _responseData = new System.Dynamic.ExpandoObject();
+    
+    /// <summary>
+    /// 鎺ュ彛鎵ц鏃堕棿鎴筹紙鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛�
+    /// </summary>
+    private string _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+    
+    /// <summary>
+    /// 鎺ュ彛璋冪敤鐘舵�侊紙0-澶辫触 1-鎴愬姛锛�
+    /// </summary>
+    private int sendStatus = 0;
+
     public dynamic XKY_GET_DHD(XKYGetDhdRequest entity)
     {
         try
@@ -30,6 +48,7 @@
             string ErrorMsg = "";
             ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon();
 
+            _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
             //string data_inserted = "{\r\n  \"startDate\": 1746759300000,\r\n  \"endDate\": 1746762300000,\r\n  \"erpCode\": \"GXF001\"\r\n}";
             string sendJson = JsonConvert.SerializeObject(entity);
             ArrayList SQLStringList = new ArrayList();
@@ -38,8 +57,8 @@
             HttpClient httpClient = new HttpClient();
             httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 
-            string json = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + sendJson + "}";
-            byte[] postData = Encoding.UTF8.GetBytes(json);
+            _requestJson = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + sendJson + "}";
+            byte[] postData = Encoding.UTF8.GetBytes(_requestJson);
 
             // 鍒涘缓璇锋眰瀵硅薄
             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://openapi.xiekeyun.com/delivery/getNoList.json");
@@ -52,7 +71,7 @@
             {
                 stream.Write(postData, 0, postData.Length);
             }
-            dynamic responseJson;
+
             // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
             using (Stream stream = response.GetResponseStream())
@@ -60,39 +79,150 @@
             {
                 string result2 = reader.ReadToEnd();
 
-                responseJson = JsonConvert.DeserializeObject(result2);
+                _responseData = JsonConvert.DeserializeObject(result2);
             }
 
-            if (responseJson.result != 1)
-                throw new ApplicationException(responseJson.errorMsg);
 
-            // 鏂板鏁版嵁瀛樺偍閫昏緫锛屽偍瀛樹富琛ㄩ�昏緫
-            var result = 0;
-           List<DeliveryNotice> noticeList = JsonConvert.DeserializeObject<List<DeliveryNotice>>(responseJson.dataList.ToString());
-            noticeList.ForEach(n => n.Id = Guid.NewGuid());  // 鏂板GUID璧嬪��
-            Db.Ado.UseTran(() =>
-            {
-                result = Db.Insertable(noticeList).ExecuteCommand();
-            }, ex =>
-            {
-                throw new Exception($"鏁版嵁搴撴彃鍏ュけ璐ワ細{ex.Message}\n{ex.InnerException?.Message}");
-            });
+            //// 鏂板鏃ュ織璁板綍锛堝湪杩斿洖鍝嶅簲鍓嶏級
+            //using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            //{
+            //    using (var cmd = new SqlCommand("prc_log_create", conn))
+            //    {
+            //        try
+            //        {
+            //            conn.Open();
+            //            cmd.CommandType = CommandType.StoredProcedure;
+            //            SqlParameter[] logParams =
+            //            {
+            //                new("@edtUserGuid", SqlDbType.UniqueIdentifier) { Value = Guid.Parse("11111111-1111-1111-1111-111111111111") },
+            //                new("@abtGuid", SqlDbType.UniqueIdentifier) { Value = DBNull.Value },
+            //                new("@abtTable", SqlDbType.NVarChar, 40) { Value = "DELIVERY_NOTICE" },
+            //                new("@detail", SqlDbType.NVarChar, 2500) { Value = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曘��" },
+            //                new("@hNo", SqlDbType.NVarChar, 100) { Value = "" },
+            //                new("@SendJson", SqlDbType.NVarChar) { Value = json },
+            //                new("@RtnJson", SqlDbType.NVarChar) { Value = JsonConvert.SerializeObject(responseJson) },
+            //                new("@xkyBeginTime", SqlDbType.NVarChar) { Value = (entity.startDate/1000).ToString() },
+            //                new("@xkyEndTime", SqlDbType.NVarChar) { Value = (entity.endDate/1000).ToString()},
+            //                new("@sendStatus", SqlDbType.NVarChar) { Value = responseJson.result.ToString()},
+            //                new("@executeTime", SqlDbType.NVarChar) { Value =  executeTime},
+            //            };
 
-            return responseJson;
+            //            foreach (var param in logParams)
+            //                cmd.Parameters.Add(param);
+
+            //            cmd.ExecuteNonQuery();
+            //        }
+            //        catch (Exception logEx)
+            //        {
+            //            // 鏃ュ織璁板綍澶辫触涓嶄腑鏂富娴佺▼
+            //            Console.WriteLine($"鏃ュ織璁板綍澶辫触: {logEx.Message}");
+            //        }
+            //        finally
+            //        {
+            //            conn.Close();
+            //        }
+            //    }
+            //}
+
+            if (_responseData.result != 1)
+                throw new ApplicationException(_responseData.errorMsg);
+
+            sendStatus = _responseData.result;
+            // 鍘�120-131琛屾浛鎹负锛�
+            if (ProcessDeliveryNotice(_responseData) > 0)
+                sendStatus = 1;
+            else
+                sendStatus = 0;
+
+            var logService = new LogService();
+            logService.CreateLogI(
+                db: Db,
+                edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
+                abtGuid: null,
+                abtTable: "DELIVERY_NOTICE",
+                detail: _logMessage,
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: (entity.startDate / 1000).ToString(),
+                xkyEndTime: (entity.endDate / 1000).ToString(),
+                sendStatus: sendStatus,
+                executeTime: _executeTimestamp
+            );
+
+            return _responseData;
         }
         catch (Exception e)
         {
+            var logService = new LogService();
+            logService.CreateLogI(
+                db: Db,
+                edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
+                abtGuid: null,
+                abtTable: "DELIVERY_NOTICE",
+                detail: _logMessage,
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: (entity.startDate / 1000).ToString(),
+                xkyEndTime: (entity.endDate / 1000).ToString(),
+                sendStatus: 0,
+                executeTime: _executeTimestamp
+            );
             throw new Exception(e.Message);
         }
 
     }
 
 
-    public dynamic GetXkyDHD(XKYGetDhdRequest entity)
+    //public dynamic GetXkyDHD(XKYGetDhdRequest entity)
+    //{
+
+    //   return XKY_GET_DHD(entity);
+
+    //}
+
+    //瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曞仛澶勭悊
+    private int ProcessDeliveryNotice(dynamic responseJson)
     {
+        List<DeliveryNotice> noticeList = JsonConvert.DeserializeObject<List<DeliveryNotice>>(responseJson.dataList.ToString());
+        noticeList.ForEach(n => n.Id = Guid.NewGuid());
+    
+        var deliveryNos = noticeList.Select(n => n.DeliveryNo).Distinct().ToList();
+        var noticeIds = noticeList.Select(n => n.Id).ToList(); // 淇濇寔GUID绫诲瀷
 
-       return XKY_GET_DHD(entity);
+        var result = 0;
+        Db.Ado.UseTran(() =>
+        {
+            // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
+            Db.Deleteable<DeliveryNoticeDetail>()
+            .Where(d => noticeIds.Contains(Guid.Parse(d.Pid)))
+              .ExecuteCommand();
 
+            // 娣诲姞绌哄�兼鏌�
+            if (deliveryNos.Any())
+            {
+                //鍒犻櫎鍏宠仈閫佽揣鏉$爜鏄庣粏
+                Db.Deleteable<TblBarcodeInformation>()
+                  .Where(b => deliveryNos.Contains(b.DeliveryNo))
+                  .ExecuteCommand();
+
+                //鍒犻櫎閫佽揣鍗�
+                Db.Deleteable<DeliveryNotice>()
+                  .Where(n => deliveryNos.Contains(n.DeliveryNo))
+                  .ExecuteCommand();
+            }
+
+            // 鎵归噺鎻掑叆浼樺寲
+            result = Db.Fastest<DeliveryNotice>().BulkCopy(noticeList); 
+        }, 
+        ex => {
+            // 澧炲己寮傚父淇℃伅
+            _logMessage = _logMessage + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+            //throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+        });
+
+        return result;
     }
-
-}
\ No newline at end of file
+    
+}

--
Gitblit v1.9.3