From 07a9b9127da141cbc8afcb2932ed31208cf31af1 Mon Sep 17 00:00:00 2001
From: 南骏 池 <chiffly@163.com>
Date: 星期一, 19 五月 2025 14:01:29 +0800
Subject: [PATCH] 1.携客云送货单异常处理优化
---
entity/TblBarcodeInformation.cs | 15 +-
Controllers/Warehouse/MesXkyController.cs | 23 +++
entity/DeliveryNoticeDetail.cs | 14 +
service/Warehouse/MesXkyService.cs | 339 ++++++++++++++++++++++++++++++++----------------
4 files changed, 269 insertions(+), 122 deletions(-)
diff --git a/Controllers/Warehouse/MesXkyController.cs b/Controllers/Warehouse/MesXkyController.cs
index 7273453..8d5ef13 100644
--- a/Controllers/Warehouse/MesXkyController.cs
+++ b/Controllers/Warehouse/MesXkyController.cs
@@ -20,7 +20,7 @@
public string? erpCode { get; set; }
}
- //鍒拌揣鍗曟槑缁唈son
+ //鍒拌揣鍗曟槑缁唈son 鍜� 鍒拌揣鍗曟潯鐮�
public class XKYGetDhdDeatilRequest
{
public string? deliveryNo { get; set; }
@@ -71,4 +71,25 @@
}
}
+ [HttpPost("GetXkyDhdBar")]
+ public ResponseResult GetXkyDhdBar(XKYGetDhdDeatilRequest request)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ resultInfos = m.GetXkyDhdBar(request);
+ var tbBillList = resultInfos;
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = tbBillList
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
+
}
\ No newline at end of file
diff --git a/entity/DeliveryNoticeDetail.cs b/entity/DeliveryNoticeDetail.cs
index 5997af0..28cadfe 100644
--- a/entity/DeliveryNoticeDetail.cs
+++ b/entity/DeliveryNoticeDetail.cs
@@ -12,7 +12,7 @@
/// 涓婚敭Guid锛圫EQ_XKY锛�
/// </summary>
[SugarColumn(ColumnName = "id")]
- public string Id { get; set; }
+ public Guid Id { get; set; }
/// <summary>
/// 椤规鍙�
@@ -433,4 +433,16 @@
/// </summary>
[SugarColumn(ColumnName = "plan_line_no")]
public string PlanLineNo { get; set; }
+
+ /// <summary>
+ /// 閫佽揣鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "delivery_no")]
+ public string DeliveryNo { get; set; }
+
+ /// <summary>
+ /// 鍚屾鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "SYNCHRONOUS_DATE")]
+ public DateTime? SynchronousDate { get; set; }
}
\ No newline at end of file
diff --git a/entity/TblBarcodeInformation.cs b/entity/TblBarcodeInformation.cs
index a9c8b72..a84b347 100644
--- a/entity/TblBarcodeInformation.cs
+++ b/entity/TblBarcodeInformation.cs
@@ -13,7 +13,7 @@
/// 涓婚敭Guid锛圫EQ_XKY锛�
/// </summary>
[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
- public string Id { get; set; }
+ public Guid Id { get; set; }
/// <summary>
/// 浜у搧缂栫爜
@@ -118,12 +118,6 @@
public string OutPackageSn { get; set; }
/// <summary>
- /// 鏉$爜瑙勫垯涓搴旂殑鍔ㄦ�佸瓧娈电殑鍊�
- /// </summary>
- [SugarColumn(ColumnName = "dynamic_data")]
- public string DynamicData { get; set; }
-
- /// <summary>
/// 鍖呰灞傜骇
/// </summary>
[SugarColumn(ColumnName = "pack_level")]
@@ -176,4 +170,11 @@
/// </summary>
[SugarColumn(ColumnName = "customize1")]
public string Customize1 { get; set; }
+
+
+ /// <summary>
+ /// 鍚屾鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "SYNCHRONOUS_DATE")]
+ public DateTime? SynchronousDate { get; set; }
}
\ No newline at end of file
diff --git a/service/Warehouse/MesXkyService.cs b/service/Warehouse/MesXkyService.cs
index 9f4ab07..e2822f3 100644
--- a/service/Warehouse/MesXkyService.cs
+++ b/service/Warehouse/MesXkyService.cs
@@ -29,8 +29,9 @@
/// <summary>
/// 绯荤粺鑷姩鏃ュ織妯℃澘锛堢敤浜庢惡瀹簯鎺ュ彛璋冪敤璁板綍锛�
/// </summary>
- private string _logMessageDhdBar = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曟潯鐮併��";
+ private string _logMessageDhdBar = "";
+ //鑾峰彇鎼哄浜戝埌璐у崟
public dynamic GetXkyDhd(XKYGetDhdRequest entity)
{
_logMessageDHD = "銆怱ysAuto銆戣幏鍙栨惡瀹簯閫佽揣鍗曘��";
@@ -93,53 +94,11 @@
_responseData = JsonConvert.DeserializeObject(result2);
}
-
- //// 鏂板鏃ュ織璁板綍锛堝湪杩斿洖鍝嶅簲鍓嶏級
- //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},
- // };
-
- // 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 (SaveDeliveryNotice(_responseData) > 0)
sendStatus = 1;
else
@@ -171,7 +130,7 @@
edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
abtGuid: null,
abtTable: "DELIVERY_NOTICE",
- detail: _logMessageDHD,
+ detail: _logMessageDHD+ $"绯荤粺寮傚父閿欒锛歿e.Message}\n璺熻釜锛歿e.StackTrace}",
orderNo: "",
sendJson: _requestJson,
rtnJson: JsonConvert.SerializeObject(_responseData),
@@ -185,34 +144,36 @@
}
-
- //public dynamic GetXkyDHD(XKYGetDhdRequest entity)
- //{
-
- // return XKY_GET_DHD(entity);
-
- //}
-
//瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曞仛澶勭悊
private int SaveDeliveryNotice(dynamic responseJson)
{
+ var result = 1;
List<DeliveryNotice> noticeList = JsonConvert.DeserializeObject<List<DeliveryNotice>>(responseJson.dataList.ToString());
+
+ // 鏂板鍒楄〃绌哄�兼鏌�
+ if (noticeList == null || !noticeList.Any() || noticeList.Count < 1)
+ {
+ _logMessageDhdBar += $"鏈鑾峰彇鏀惰揣鍗曟暟鎹负绌�";
+ 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绫诲瀷
+ //var noticeIds = noticeList.Select(n => n.Id).ToList(); // 淇濇寔GUID绫诲瀷
- var result = 0;
Db.Ado.UseTran(() =>
{
- // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
- Db.Deleteable<DeliveryNoticeDetail>()
- .Where(d => noticeIds.Contains(Guid.Parse(d.Pid)))
- .ExecuteCommand();
-
// 娣诲姞绌哄�兼鏌�
if (deliveryNos.Any())
{
+ // 鍒犻櫎鍏宠仈閫佽揣鏄庣粏鏁版嵁
+ Db.Deleteable<DeliveryNoticeDetail>()
+ .Where(d => deliveryNos.Contains(d.DeliveryNo))
+ .ExecuteCommand();
+
+
//鍒犻櫎鍏宠仈閫佽揣鏉$爜鏄庣粏
Db.Deleteable<TblBarcodeInformation>()
.Where(b => deliveryNos.Contains(b.DeliveryNo))
@@ -229,8 +190,8 @@
},
ex => {
// 澧炲己寮傚父淇℃伅
- _logMessageDHD = _logMessageDHD + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
- //throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+ //_logMessageDHD = _logMessageDHD + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+ throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
});
return result;
@@ -297,65 +258,23 @@
_responseData = JsonConvert.DeserializeObject(result2);
}
-
- //// 鏂板鏃ュ織璁板綍锛堝湪杩斿洖鍝嶅簲鍓嶏級
- //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},
- // };
-
- // 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 (SaveDeliveryNotice(_responseData) > 0)
- // sendStatus = 1;
- //else
- // sendStatus = 0;
+ // 瀵规暟鎹仛澶勭悊瀛樺叆mes
+ if (SaveDeliveryNoticeDetail(_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,
+ abtTable: "DELIVERY_NOTICE_DETAIL",
+ detail: _logMessageDhdDetail,
orderNo: "",
sendJson: _requestJson,
rtnJson: JsonConvert.SerializeObject(_responseData),
@@ -374,8 +293,8 @@
db: Db,
edtUserGuid: Guid.Parse("11111111-1111-1111-1111-111111111111"),
abtGuid: null,
- abtTable: "DELIVERY_NOTICE",
- detail: _logMessageDHD,
+ abtTable: "DELIVERY_NOTICE_DETAIL",
+ detail: _logMessageDhdDetail,
orderNo: "",
sendJson: _requestJson,
rtnJson: JsonConvert.SerializeObject(_responseData),
@@ -389,4 +308,198 @@
}
+ //瀵硅幏鍙栧埌鐨勬惡瀹簯閫佽揣鍗曞仛澶勭悊
+ private int SaveDeliveryNoticeDetail(dynamic responseJson)
+ {
+ var result = 0;
+ List<DeliveryNoticeDetail> noticeList = JsonConvert.DeserializeObject<List<DeliveryNoticeDetail>>(responseJson.data.lineList.ToString());
+ // 鑾峰彇閫佽揣鍗曞彿骞舵牎楠�
+ var deliveryNoObj = responseJson.data.deliveryNo;
+ if (deliveryNoObj == null || string.IsNullOrEmpty(deliveryNoObj.ToString()))
+ {
+ _logMessageDhdDetail += $"銆愬紓甯搞�戣幏鍙栭�佽揣鍗曞け璐ワ細{responseJson}";
+ return result;
+ }
+ string deliveryNo = deliveryNoObj.ToString();
+
+ // 鏂板鍒楄〃绌哄�兼鏌�
+ if (noticeList == null || !noticeList.Any())
+ {
+ _logMessageDhdBar += $"銆愬紓甯搞�戦�佽揣鏄庣粏鏁版嵁涓虹┖锛岄�佽揣鍗曞彿锛歿deliveryNo}";
+ return result;
+ }
+
+ //璧嬪�糶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,
+ 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 = 0;
+ List<TblBarcodeInformation> noticeList = JsonConvert.DeserializeObject<List<TblBarcodeInformation>>(responseJson.dataList.ToString());
+
+ // 鏂板鍒楄〃绌哄�兼鏌�
+ if (noticeList == null || !noticeList.Any())
+ {
+ _logMessageDhdBar += $"銆愬紓甯搞�戞潯鐮佹暟鎹负绌猴紝閫佽揣鍗曞彿锛歿deliveryNo}";
+ return result;
+ }
+
+ // 璧嬪�糶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<TblBarcodeInformation>()
+ .Where(d => d.DeliveryNo == deliveryNo)
+ .ExecuteCommand();
+
+ // 鎵归噺鎻掑叆浼樺寲
+ result = Db.Fastest<TblBarcodeInformation>().BulkCopy(noticeList);
+ },
+ ex => {
+ // 澧炲己寮傚父淇℃伅
+ _logMessageDhdBar = _logMessageDhdBar + $"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}";
+ //throw new Exception($"鏁版嵁搴撴搷浣滃け璐ワ細{ex.Message}\n璺熻釜锛歿ex.StackTrace}");
+ });
+
+ return result;
+ }
}
--
Gitblit v1.9.3