From 7b84eb64d11b12b6fb41ae7f7085452512ad5d3f Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 20 六月 2025 08:18:08 +0800
Subject: [PATCH] 1.采购入库优化

---
 service/Warehouse/MesXkyService.cs |  621 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 596 insertions(+), 25 deletions(-)

diff --git a/service/Warehouse/MesXkyService.cs b/service/Warehouse/MesXkyService.cs
index ae09d2c..45ad039 100644
--- a/service/Warehouse/MesXkyService.cs
+++ b/service/Warehouse/MesXkyService.cs
@@ -1,40 +1,80 @@
 锘縰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.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 NewPdaSqlServer.Dto.Xky;
+using static NewPdaSqlServer.Controllers.Warehouse.MesXkyController;
 
 namespace NewPdaSqlServer.service.QC;
 
 public class MesXkyService : RepositoryNoEntity
 {
-    public bool XKY_GET_DHD(dynamic entity)
+    /// <summary>
+    /// 閫佽揣鍗曟棩蹇楁ā鏉匡紙鐢ㄤ簬鎼哄浜戞帴鍙h皟鐢ㄨ褰曪級
+    /// </summary>
+    private string _logMessageDHD = "";
+
+    /// <summary>
+    /// 閫佽揣鍗曟槑缁嗘棩蹇楁ā鏉匡紙鐢ㄤ簬鎼哄浜戞帴鍙h皟鐢ㄨ褰曪級
+    /// </summary>
+    private string _logMessageDhdDetail = "";
+
+    /// <summary>
+    /// 閫佽揣鍗曟潯鐮佹棩蹇楁ā鏉匡紙鐢ㄤ簬鎼哄浜戞帴鍙h皟鐢ㄨ褰曪級
+    /// </summary>
+    private string _logMessageDhdBar = "";
+
+    /// <summary>
+    /// 閫佽揣鍗曡揣鐗╅�佽揪鏃ュ織妯℃澘锛堢敤浜庢惡瀹簯鎺ュ彛璋冪敤璁板綍锛�
+    /// </summary>
+    private string _logMessageDhdHwsd = "";
+
+    //鑾峰彇鎼哄浜戝埌璐у崟
+    public dynamic GetXkyDhd(XKYGetDhdRequest entity)
     {
-        string ErrorMsg = "";
-        ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon();
+        _logMessageDHD = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曘��";
+        /// <summary>
+        /// 璇锋眰鎶ユ枃缂撳瓨锛堝瓨鍌ㄥ簭鍒楀寲鍚庣殑JSON璇锋眰鍐呭锛�
+        /// </summary>
+        string _requestJson = string.Empty;
+
+        /// <summary>
+        /// 鍔ㄦ�佸搷搴斿璞★紙瀛樺偍鍙嶅簭鍒楀寲鐨勬惡瀹簯鎺ュ彛鍝嶅簲锛�
+        /// </summary>
+         dynamic _responseData = new System.Dynamic.ExpandoObject();
+
+        /// <summary>
+        /// 鎺ュ彛鎵ц鏃堕棿鎴筹紙鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛�
+        /// </summary>
+         string _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+        /// <summary>
+        /// 鎺ュ彛璋冪敤鐘舵�侊紙0-澶辫触 1-鎴愬姛锛�
+        /// </summary>
+         int sendStatus = 0;
+
         try
         {
-            string data_inserted = "{\r\n  \"startDate\": 1746759300000,\r\n  \"endDate\": 1746762300000,\r\n  \"erpCode\": \"GXF001\"\r\n}";
+            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();
             // var client = new HttpClient();
             var url = "https://openapi.xiekeyun.com/delivery/getNoList.json";
             HttpClient httpClient = new HttpClient();
             httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
 
-            string json = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + data_inserted + "}";
-            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");
@@ -47,7 +87,7 @@
             {
                 stream.Write(postData, 0, postData.Length);
             }
-            dynamic responseJson;
+
             // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
             using (Stream stream = response.GetResponseStream())
@@ -55,25 +95,556 @@
             {
                 string result2 = reader.ReadToEnd();
 
-                responseJson = JsonConvert.DeserializeObject(result2);
-
+                _responseData = JsonConvert.DeserializeObject(result2);
             }
+
+            if (_responseData.result != 1)
+                throw new ApplicationException(_responseData.errorMsg);
+
+            sendStatus = _responseData.result;
+            //鍌ㄥ瓨閫佽揣鍗曞彿璇︾粏
+            if (SaveDeliveryNotice(_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: _logMessageDHD,
+                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 ex)
+        catch (Exception e)
         {
-            ErrorMsg = ex.Message;
-            return false;
+            var logService = new LogService();
+            logService.CreateLogI(
+                db: Db,
+                edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
+                abtGuid: null,
+                abtTable: "DELIVERY_NOTICE",
+                detail: _logMessageDHD+ $"绯荤粺寮傚父閿欒锛歿e.Message}\n璺熻釜锛歿e.StackTrace}",
+                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);
         }
 
-        return true;
     }
 
-
-    public dynamic GetXkyDHD(dynamic entity)
+    //瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曞仛澶勭悊
+    private int SaveDeliveryNotice(dynamic responseJson)
     {
+        var result = 1;
+        List<DeliveryNotice> noticeList = JsonConvert.DeserializeObject<List<DeliveryNotice>>(responseJson.dataList.ToString());
 
-       return XKY_GET_DHD(entity);
+        // 鏂板鍒楄〃绌哄�兼鏌�
+        if (noticeList == null || !noticeList.Any() || noticeList.Count < 1)
+        {
+            _logMessageDHD += $"鏈鑾峰彇鏀惰揣鍗曟暟鎹负绌�";
+            return result;
+        }
+
+
+        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绫诲瀷
+
+        Db.Ado.UseTran(() =>
+        {
+            // 娣诲姞绌哄�兼鏌�
+            if (deliveryNos.Any())
+            {
+                // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
+                Db.Deleteable<DeliveryNoticeDetail>()
+                .Where(d => deliveryNos.Contains(d.DeliveryNo))
+                  .ExecuteCommand();
+
+
+                //鍒犻櫎鍏宠仈閫佽揣鏉$爜鏄庣粏
+                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 => {
+            // 澧炲己寮傚父淇℃伅
+            //_logMessageDHD = _logMessageDHD + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+            throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+        });
+
+        return result;
+    }
+
+    //鑾峰彇鎼哄浜戝埌璐у崟鏄庣粏
+    public dynamic GetXkyDhdDetail(XKYGetDhdDeatilRequest entity)
+    {
+        _logMessageDhdDetail = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曟槑缁嗐��";
+        /// <summary>
+        /// 璇锋眰鎶ユ枃缂撳瓨锛堝瓨鍌ㄥ簭鍒楀寲鍚庣殑JSON璇锋眰鍐呭锛�
+        /// </summary>
+        string _requestJson = string.Empty;
+
+        /// <summary>
+        /// 鍔ㄦ�佸搷搴斿璞★紙瀛樺偍鍙嶅簭鍒楀寲鐨勬惡瀹簯鎺ュ彛鍝嶅簲锛�
+        /// </summary>
+        dynamic _responseData = new System.Dynamic.ExpandoObject();
+
+        /// <summary>
+        /// 鎺ュ彛鎵ц鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛�
+        /// </summary>
+        string _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+        /// <summary>
+        /// 鎺ュ彛璋冪敤鐘舵�侊紙0-澶辫触 1-鎴愬姛锛�
+        /// </summary>
+        int sendStatus = 0;
+
+        try
+        {
+            string ErrorMsg = "";
+            ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon();
+
+            _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            string sendJson = JsonConvert.SerializeObject(entity);
+            ArrayList SQLStringList = new ArrayList();
+            var url = "https://openapi.xiekeyun.com/delivery/getDetail.json";
+            HttpClient httpClient = new HttpClient();
+            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+            _requestJson = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + sendJson + "}";
+            byte[] postData = Encoding.UTF8.GetBytes(_requestJson);
+
+            // 鍒涘缓璇锋眰瀵硅薄
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
+            request.Method = "POST";
+            request.ContentType = "application/json";
+            request.ContentLength = postData.Length;
+
+            // 鍙戦�佽姹傛暟鎹�
+            using (Stream stream = request.GetRequestStream())
+            {
+                stream.Write(postData, 0, postData.Length);
+            }
+
+            // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+            using (Stream stream = response.GetResponseStream())
+            using (StreamReader reader = new StreamReader(stream))
+            {
+                string result2 = reader.ReadToEnd();
+
+                _responseData = JsonConvert.DeserializeObject(result2);
+            }
+
+            if (_responseData.result != 1)
+                throw new ApplicationException(_responseData.errorMsg);
+
+            sendStatus = _responseData.result;
+            // 瀵规暟鎹仛澶勭悊瀛樺叆mes
+            if (SaveDeliveryNoticeDetail(_responseData, entity.deliveryNo) > 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",
+                detail: _logMessageDhdDetail,
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                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",
+                detail: _logMessageDhdDetail + $"绯荤粺寮傚父閿欒锛歿e.Message}\n璺熻釜锛歿e.StackTrace}",
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                sendStatus: 0,
+                executeTime: _executeTimestamp
+            );
+            throw new Exception(e.Message);
+        }
 
     }
 
-}
\ No newline at end of file
+    //瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曞仛澶勭悊
+    private int SaveDeliveryNoticeDetail(dynamic responseJson,string deliveryNo)
+    {
+        var result = 1;
+        List<DeliveryNoticeDetail> noticeList = JsonConvert.DeserializeObject<List<DeliveryNoticeDetail>>(responseJson.data.lineList.ToString());
+
+        // 鏂板鍒楄〃绌哄�兼鏌�
+        if (noticeList == null || !noticeList.Any() || noticeList.Count < 1)
+        {
+            _logMessageDhdBar += $"閫佽揣鏄庣粏鏁版嵁涓虹┖锛岄�佽揣鍗曞彿锛歿deliveryNo}";
+            return result;
+        }
+
+
+        // 鑾峰彇閫佽揣鍗曞彿骞舵牎楠�
+        var deliveryNoObj = responseJson.data.deliveryNo;
+        if (deliveryNoObj == null || string.IsNullOrEmpty(deliveryNoObj.ToString()))
+        {
+            throw new Exception($"銆愬紓甯搞�戣幏鍙栭�佽揣鍗曞け璐ワ細{responseJson}");
+        }
+        deliveryNo = deliveryNoObj.ToString();
+
+        //璧嬪�糶uid鍜屽埌璐у崟鍙�
+        noticeList.ForEach(n => n.Id = Guid.NewGuid());
+        noticeList.ForEach(n => n.DeliveryNo = deliveryNo);
+        noticeList.ForEach(n => n.SynchronousDate = DateTime.Now);
+
+
+        Db.Ado.UseTran(() =>
+        {
+            // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
+            Db.Deleteable<DeliveryNoticeDetail>()
+            .Where(d => d.DeliveryNo == deliveryNo)
+              .ExecuteCommand();
+
+            // 鎵归噺鎻掑叆浼樺寲
+            result = Db.Fastest<DeliveryNoticeDetail>().BulkCopy(noticeList);
+        },
+        ex => {
+            // 澧炲己寮傚父淇℃伅
+            //_logMessageDhdDetail = _logMessageDhdDetail + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+            throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+        });
+
+        return result;
+    }
+
+    //鑾峰彇鎼哄浜戝埌璐у崟鏉$爜
+    public dynamic GetXkyDhdBar(XKYGetDhdDeatilRequest entity)
+    {
+        _logMessageDhdBar = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曟潯鐮併��";
+        /// <summary>
+        /// 璇锋眰鎶ユ枃缂撳瓨锛堝瓨鍌ㄥ簭鍒楀寲鍚庣殑JSON璇锋眰鍐呭锛�
+        /// </summary>
+        string _requestJson = string.Empty;
+
+        /// <summary>
+        /// 鍔ㄦ�佸搷搴斿璞★紙瀛樺偍鍙嶅簭鍒楀寲鐨勬惡瀹簯鎺ュ彛鍝嶅簲锛�
+        /// </summary>
+        dynamic _responseData = new System.Dynamic.ExpandoObject();
+
+        /// <summary>
+        /// 鎺ュ彛鎵ц鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛�
+        /// </summary>
+        string _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+        /// <summary>
+        /// 鎺ュ彛璋冪敤鐘舵�侊紙0-澶辫触 1-鎴愬姛锛�
+        /// </summary>
+        int sendStatus = 0;
+
+        try
+        {
+            string ErrorMsg = "";
+            ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon();
+
+            _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            string sendJson = JsonConvert.SerializeObject(entity);
+            ArrayList SQLStringList = new ArrayList();
+            var url = "https://openapi.xiekeyun.com/barcode/byDeliveryNo.json";
+            HttpClient httpClient = new HttpClient();
+            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+            _requestJson = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + sendJson + "}";
+            byte[] postData = Encoding.UTF8.GetBytes(_requestJson);
+
+            // 鍒涘缓璇锋眰瀵硅薄
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
+            request.Method = "POST";
+            request.ContentType = "application/json";
+            request.ContentLength = postData.Length;
+
+            // 鍙戦�佽姹傛暟鎹�
+            using (Stream stream = request.GetRequestStream())
+            {
+                stream.Write(postData, 0, postData.Length);
+            }
+
+            // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+            using (Stream stream = response.GetResponseStream())
+            using (StreamReader reader = new StreamReader(stream))
+            {
+                string result2 = reader.ReadToEnd();
+
+                _responseData = JsonConvert.DeserializeObject(result2);
+            }
+
+            if (_responseData.result != 1)
+                throw new ApplicationException(_responseData.errorMsg);
+
+            sendStatus = _responseData.result;
+            // 瀵规暟鎹仛澶勭悊瀛樺叆mes
+            if (SaveDeliveryNoticeBar(_responseData, entity.deliveryNo) > 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: "TBL_BARCODE_INFORMATION",
+                detail: _logMessageDhdBar,
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                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: "TBL_BARCODE_INFORMATION",
+                detail: _logMessageDhdBar + $"绯荤粺寮傚父閿欒锛歿e.Message}\n璺熻釜锛歿e.StackTrace}",
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                sendStatus: 0,
+                executeTime: _executeTimestamp
+            );
+            throw new Exception(e.Message);
+        }
+
+    }
+
+    //瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曟潯鐮佸仛澶勭悊
+    private int SaveDeliveryNoticeBar(dynamic responseJson,string deliveryNo)
+    {
+        var result = 1;
+        List<XkyBarcodeDataDto> noticeList = JsonConvert.DeserializeObject<List<XkyBarcodeDataDto>>(responseJson.dataList.ToString());
+
+        if (noticeList == null || !noticeList.Any())
+        {
+            _logMessageDhdBar += $"鏉$爜鏁版嵁涓虹┖锛岄�佽揣鍗曞彿锛歿deliveryNo}";
+            return result;
+        }
+
+        var barcodeList = noticeList.Select(n => new TblBarcodeInformation
+        {
+            Id = Guid.NewGuid(),
+            DeliveryNo = deliveryNo,
+            SynchronousDate = DateTime.Now,
+
+            // 鐩存帴鏄犲皠瀛楁
+            ProductCode = n.ProductCode,
+            SmallBarcode = n.SmallBarcode,
+            BigBarcode = n.BigBarcode,
+            OuterBarcode = n.OuterBarcode,
+            IncludeQty = n.IncludeQty.ToString(),
+            SmallPackageSn = n.SmallPackageSn,
+            BigPackageSn = n.BigPackageSn,
+            OutPackageSn = n.OuterPackageSn,
+            PackLevel = n.PackLevel.ToString(),
+
+            // 灏哄瀛楁鏄犲皠
+            SmallPackageLength = n.SmallPackageLength?.ToString(),
+            SmallPackageWidth = n.SmallPackageWidth?.ToString(),
+            SmallPackageHeight = n.SmallPackageHeight?.ToString(),
+            BigPackageLength = n.BigPackageLength?.ToString(),
+            BigPackageWidth = n.BigPackageWidth?.ToString(),
+            BigPackageHeight = n.BigPackageHeight?.ToString(),
+            OuterPackageLength = n.OuterPackageLength?.ToString(),
+            OuterPackageWidth = n.OuterPackageWidth?.ToString(),
+            OuterPackageHeight = n.OuterPackageHeight?.ToString(),
+
+            // 鍔ㄦ�佸瓧娈垫槧灏�
+            PoErpNo = n.DynamicData?.PoErpNo ?? n.PoErpNo,
+            PoLineNo = n.DynamicData?.PoLineNo ?? n.PoLineNo,
+            InnerVendorCode = n.DynamicData?.InnerVendorCode,
+            Customize1 = n.DynamicData?.Customize1,
+            Customize2 = n.DynamicData?.Customize2,
+            Customize3 = n.DynamicData?.Customize3,
+
+            // 鍏朵粬瀛楁
+            DnLines = n.DnLines // 鏍规嵁鏁版嵁搴撴敞閲婏紝ExtendN01瀵瑰簲椤圭洰(鍗曡韩extendN01)锛岃繖閲屾槧灏刣nLines
+        }).ToList();
+
+        Db.Ado.UseTran(() => 
+        {
+            // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
+            Db.Deleteable<TblBarcodeInformation>()
+            .Where(d => d.DeliveryNo == deliveryNo)
+            .ExecuteCommand();
+
+            // 鎵归噺鎻掑叆浼樺寲锛堜娇鐢ㄦ纭殑barcodeList锛�
+            result = Db.Fastest<TblBarcodeInformation>().BulkCopy(barcodeList);
+        },
+        ex => {
+            // 澧炲己寮傚父淇℃伅
+            //_logMessageDhdBar = _logMessageDhdBar + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+            throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+        });
+
+        return result;
+    }
+
+
+
+    public dynamic GetXkyHwsd(XKYGetDhdHwsdRequest entity)
+    {
+        _logMessageDhdHwsd = "銆怱ysAuto銆戞惡瀹簯閫佽揣鍗曡揣鐗╅�佽揪銆�";
+        /// <summary>
+        /// 璇锋眰鎶ユ枃缂撳瓨锛堝瓨鍌ㄥ簭鍒楀寲鍚庣殑JSON璇锋眰鍐呭锛�
+        /// </summary>
+        string _requestJson = string.Empty;
+
+        /// <summary>
+        /// 鍔ㄦ�佸搷搴斿璞★紙瀛樺偍鍙嶅簭鍒楀寲鐨勬惡瀹簯鎺ュ彛鍝嶅簲锛�
+        /// </summary>
+        dynamic _responseData = new System.Dynamic.ExpandoObject();
+
+        /// <summary>
+        /// 鎺ュ彛鎵ц鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛�
+        /// </summary>
+        string _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+        /// <summary>
+        /// 鎺ュ彛璋冪敤鐘舵�侊紙0-澶辫触 1-鎴愬姛锛�
+        /// </summary>
+        int sendStatus = 0;
+
+        try
+        {
+            string ErrorMsg = "";
+            ApiCommonParam Apiparam = ApiCommonParam.NewApiCommon();
+
+            _executeTimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+            string sendJson = JsonConvert.SerializeObject(entity);
+            ArrayList SQLStringList = new ArrayList();
+            var url = "https://openapi.xiekeyun.com/delivery/updateDeliveryStatus.json";
+            HttpClient httpClient = new HttpClient();
+            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
+
+            _requestJson = "{\"commonParam\":" + JsonConvert.SerializeObject(Apiparam) + ",\"body\":" + sendJson + "}";
+            byte[] postData = Encoding.UTF8.GetBytes(_requestJson);
+
+            // 鍒涘缓璇锋眰瀵硅薄
+            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
+            request.Method = "POST";
+            request.ContentType = "application/json";
+            request.ContentLength = postData.Length;
+
+            // 鍙戦�佽姹傛暟鎹�
+            using (Stream stream = request.GetRequestStream())
+            {
+                stream.Write(postData, 0, postData.Length);
+            }
+
+            // 鍙戦�佽姹傚苟鑾峰彇鍝嶅簲
+            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+            using (Stream stream = response.GetResponseStream())
+            using (StreamReader reader = new StreamReader(stream))
+            {
+                string result2 = reader.ReadToEnd();
+
+                _responseData = JsonConvert.DeserializeObject(result2);
+            }
+
+            if (_responseData.result != 1)
+                throw new ApplicationException(_responseData.errorMsg);
+
+            sendStatus = _responseData.result;
+
+            var logService = new LogService();
+            logService.CreateLogI(
+                db: Db,
+                edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
+                abtGuid: null,
+                abtTable: "MES_INV_ITEM_ARN",
+                detail: _logMessageDhdBar,
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                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: "MES_INV_ITEM_ARN",
+                detail: _logMessageDhdBar + $"绯荤粺寮傚父閿欒锛歿e.Message}\n璺熻釜锛歿e.StackTrace}",
+                orderNo: "",
+                sendJson: _requestJson,
+                rtnJson: JsonConvert.SerializeObject(_responseData),
+                xkyBeginTime: "",
+                xkyEndTime: "",
+                sendStatus: 0,
+                executeTime: _executeTimestamp
+            );
+            throw new Exception(e.Message);
+        }
+
+    }
+}

--
Gitblit v1.9.3