From 567fb8c8c0851f1ae24176d7414299a28696a276 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期五, 16 五月 2025 17:34:24 +0800
Subject: [PATCH] 1.公共日志方法 2.携客云获取到货单
---
util/LogUtil.cs | 35 ++++++++
Controllers/Warehouse/MesXkyController.cs | 2
service/Warehouse/MesXkyService.cs | 194 ++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 198 insertions(+), 33 deletions(-)
diff --git a/Controllers/Warehouse/MesXkyController.cs b/Controllers/Warehouse/MesXkyController.cs
index e4ae909..0d0343b 100644
--- a/Controllers/Warehouse/MesXkyController.cs
+++ b/Controllers/Warehouse/MesXkyController.cs
@@ -28,7 +28,7 @@
try
{
dynamic resultInfos = new ExpandoObject();
- resultInfos = m.GetXkyDHD(request);
+ resultInfos = m.XKY_GET_DHD(request);
var tbBillList = resultInfos;
return new ResponseResult
{
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
+
+}
diff --git a/util/LogUtil.cs b/util/LogUtil.cs
index e91a9bc..7c96c8c 100644
--- a/util/LogUtil.cs
+++ b/util/LogUtil.cs
@@ -36,5 +36,40 @@
}
);
}
+
+
+ public void CreateLogI(
+ SqlSugarScope db,
+ Guid edtUserGuid,
+ string abtGuid,
+ string abtTable,
+ string detail,
+ string orderNo,
+ string sendJson,
+ string rtnJson,
+ string xkyBeginTime,
+ string xkyEndTime,
+ int sendStatus,
+ string executeTime)
+ {
+ db.Ado.ExecuteCommand(
+ "exec prc_log_create @edtUserGuid, @abtGuid, @abtTable, @detail, @hNo,@RtnLogGuid, @SendJson, @RtnJson, @xkyBeginTime, @xkyEndTime, @sendStatus, @executeTime",
+ new {
+ edtUserGuid,
+ abtGuid = string.IsNullOrEmpty(abtGuid) ? DBNull.Value : (object)abtGuid,
+ abtTable = (object)abtTable ?? DBNull.Value,
+ detail,
+ hNo = orderNo,
+ RtnLogGuid = DBNull.Value,
+ SendJson = sendJson,
+ RtnJson = rtnJson,
+ xkyBeginTime = (object)xkyBeginTime ?? DBNull.Value,
+ xkyEndTime = (object)xkyEndTime ?? DBNull.Value,
+ sendStatus = (object)sendStatus ?? DBNull.Value,
+ executeTime = (object)executeTime ?? DBNull.Value
+ });
}
+ }
+
+
}
\ No newline at end of file
--
Gitblit v1.9.3