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