From c5f01e9a882b16f534166d033312c5c8ba8d94dd Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期六, 24 一月 2026 14:35:21 +0800
Subject: [PATCH] 离开北京前最后的版本,包含打印机程序
---
项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs | 328 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 236 insertions(+), 92 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
index a34e190..97d65eb 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/OutboundAreaDispathAction.cs"
@@ -50,6 +50,52 @@
["70104"] = "80104",
["70106"] = "80106"
};
+ // 鍑哄簱鍖哄煙鏍″噯缂撳瓨鏋舵牎鍑�
+ public static void OutboundAreaJZ(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
+ {
+ // 鍑哄簱鍖虹殑鍑哄簱浠诲姟 鍒扮紦瀛樻灦瀛愪簡 灏辫鎶婁换鍔″彿鍜屾墭鐩樺彿鍐欏叆鍒板搴斿眰鐨勭紦瀛樻灦
+ List<Dt_TaskWCSinfo> executingTasks = taskWCSinfoRepository.Find(r => (
+ r.wcstask_state == TaskState.TaskState_Box_Out_RGV_Finished.ToString() ||
+ r.wcstask_state == TaskState.TaskState_Empty_Out_RGV_Finished.ToString())
+ && endStationNo.Contains(r.wcstask_endPoint)).ToList();
+ foreach (var item in executingTasks)
+ {
+ bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), item.wcstask_startPoint.ToString()).ToString());
+ int ReadNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), item.wcstask_startPoint.ToString()).ToString());
+ int ReadBarcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), item.wcstask_startPoint.ToString()).ToString());
+ if (LoadSleep && (ReadNumber == 0 || ReadBarcode == 0))
+ {
+ //鍐欏叆鎵樼洏鏉$爜
+ bool writeTaskNumber = client.WriteValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), item.wcstask_startPoint, item.wcstask_taskNumber);
+ bool writeBarcode = client.WriteValue(CLineInfoDBName.W_Line_Barcode.ToString(), item.wcstask_startPoint, item.wcstask_barcode);
+ }
+ }
+
+ foreach (var item in OutboundStationLayerNo)
+ {
+ bool LoadSleep = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), item.ToString()).ToString());
+ int ReadNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), item.ToString()).ToString());
+ int ReadBarcode = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), item.ToString()).ToString());
+
+ Dt_TaskWCSinfo dt_TaskWCSinfo = taskWCSinfoRepository.Find(r =>
+ r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()
+ && r.wcstask_state == TaskState.TaskState_Assigned.ToString()
+ && r.wcstask_startPoint == 90101.ToString()
+ && r.wcstask_endPoint == item
+ && r.wcstask_barcode == ReadBarcode.ToString()
+ && r.wcstask_taskNumber == ReadNumber
+ ).FirstOrDefault();
+
+ if (LoadSleep && dt_TaskWCSinfo != null)
+ {
+ // 璇佹槑璐х墿宸茬粡鍒颁簡缂撳瓨鏋� 浣嗕换鍔$姸鎬佹病鏈夋敼鍙� 杩樻槸鏂板缓鐘舵�� 灏辫鏀逛负 TaskState.TaskState_Empty_In_PLC_Finished.ToString()
+ dt_TaskWCSinfo.wcstask_state = TaskState.TaskState_Empty_In_PLC_Finished.ToString();
+ taskWCSinfoRepository.Update(dt_TaskWCSinfo, true);
+ string str = $"鍑哄簱鍖哄煙 绌烘墭鐩樺洖搴� 鎵樼洏閮藉埌缂撳瓨鏋跺瓙 浣嗕换鍔$姸鎬佹病鍙� {DateTime.Now}銆恵dt_TaskWCSinfo.wcstask_state}銆戯紝鎵樼洏鍙�:{dt_TaskWCSinfo.wcstask_barcode},浠诲姟鍙凤細{dt_TaskWCSinfo.wcstask_taskNumber}";
+ LogRecord.WriteLog(LogEnum.Errer, str.ToString());
+ }
+ }
+ }
public static void OutboundAreaDispathAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
{
try
@@ -78,7 +124,6 @@
|| outboundTask.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString()))
rgvTaskType = RGVTaskType.RgvTaskType_Outbound.ToString();
-
rgvInfo = GetRGVTask(taskRGVinfoRepository, outboundTask, rgvTaskType);
taskRGVinfoRepository.Add(rgvInfo, true);
@@ -90,7 +135,7 @@
//缂撳瓨鍙�(缂撳瓨鏋�)鑷宠緭閫佺嚎
OutboundCZ_PLC(taskWCSinfoRepository, taskRGVinfoRepository, client);
-
+
//绌烘墭鍏ュ簱鐢宠(鐢熸垚浜嗙┖鎵樺叆搴撲换鍔�)
InboundRequestAction(taskWCSinfoRepository, taskRGVinfoRepository, client);
@@ -104,7 +149,7 @@
}
catch (Exception ex)
{
- WriteLog.Info("OutboundArea").Write($"{ DateTime.Now }鍑哄簱鍖哄煙璋冨害澶辫触:{ex.Message}", "OutboundArea");
+ WriteLog.Info("OutboundArea").Write($"{DateTime.Now}鍑哄簱鍖哄煙璋冨害澶辫触:{ex.Message}", "OutboundArea");
}
}
public static bool WriteRGVState(PLCClient client, bool value)
@@ -140,7 +185,7 @@
List<Dt_TaskWCSinfo> listTask = taskWCSinfoRepository.Find(r => r.wcstask_state == TaskState.TaskState_Assigned.ToString() &&
(r.wcstask_type == TaskType.TaskType_Box_Pallet_Outbound.ToString() || r.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString())
- && OutboundStationLayerNo.Contains(r.wcstask_startPoint)).OrderBy(r => r.wcstask_createTime).ToList();//
+ && endStationNo.Contains(r.wcstask_endPoint)).OrderBy(r => r.wcstask_createTime).ToList();//
foreach (var item in listTask.GroupBy(r => r.wcstask_endPoint))
{
@@ -154,13 +199,14 @@
continue;
//鍒ゆ柇缂撳瓨鏋舵槸鍚︽湁璐�
- bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(),wcsTask.wcstask_startPoint).ToString());
+ bool flag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString());
bool noflag = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_NoLoadSleep.ToString(), wcsTask.wcstask_startPoint).ToString());
if (flag || !noflag)
continue;
//鍚屼竴灞傛湁鎵ц涓殑浠诲姟涓嶆坊鍔�
- Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r => (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint)
+ Dt_TaskWCSinfo executingTask = taskWCSinfoRepository.FindFirst(r =>
+ (r.wcstask_startPoint == wcsTask.wcstask_startPoint || r.wcstask_endPoint == wcsTask.wcstask_endPoint)
&& (r.wcstask_state == TaskState.TaskState_RGV_Received.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString()));
if (null != executingTask)
continue;
@@ -168,37 +214,37 @@
List<Dt_TaskWCSinfo> listTarget = taskWCSinfoRepository.Find(r => r.wcstask_endPoint == wcsTask.wcstask_endPoint &&
r.wcstask_state != TaskState.TaskState_Assigned.ToString());
- if(listTarget != null && listTarget.Count >= 2)
- {
- continue;
- }
- else
- {
- wcsInfo = wcsTask;
- }
-
- string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
-
- //if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode))
+ //if (listTarget != null && listTarget.Count > 1)
//{
- // if (null != listTarget && listTarget.Count > 2)
- // continue;
- // else
- // {
- // wcsInfo = wcsTask;
- // break;
- // }
+ // continue;
//}
//else
//{
- // if (null != listTarget && listTarget.Count > 1)
- // continue;
- // else
- // {
- // wcsInfo = wcsTask;
- // break;
- // }
+ // wcsInfo = wcsTask;
//}
+
+ string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), wcsTask.wcstask_endPoint).ToString();
+
+ if (string.IsNullOrEmpty(barcode) || "0".Equals(barcode))
+ {
+ if (null != listTarget && listTarget.Count > 1)
+ continue;
+ else
+ {
+ wcsInfo = wcsTask;
+ break;
+ }
+ }
+ else
+ {
+ if (null != listTarget && listTarget.Count > 0)
+ continue;
+ else
+ {
+ wcsInfo = wcsTask;
+ break;
+ }
+ }
}
}
return wcsInfo;
@@ -222,102 +268,200 @@
return rgvInfo;
}
+ // 鍙敤涓�涓瓧鍏革細Key=鎵樼洏鍙凤紝Value=Tuple<閿佸璞�, 鏈�鍚庝娇鐢ㄦ椂闂�>
+ // Tuple<object, DateTime>锛欼tem1=閿佸璞★紝Item2=鏈�鍚庝娇鐢ㄦ椂闂�
+ private static readonly Dictionary<string, Tuple<object, DateTime>> BarcodeLockDict = new Dictionary<string, Tuple<object, DateTime>>();
+ private static readonly object GlobalLock = new object(); // 淇濇姢瀛楀吀鐨勫叏灞�閿�
+ private const int ExpireMinutes = 1; // 杩囨湡鏃堕棿锛�1鍒嗛挓
+
+ /// <summary>
+ /// 鑾峰彇鎵樼洏鍙蜂笓灞為攣锛堝崟瀛楀吀+1鍒嗛挓杩囨湡+鎳掓竻鐞嗭級
+ /// </summary>
+ private static object GetBarcodeLock(string barcode)
+ {
+
+ lock (GlobalLock) // 鍏ㄥ眬閿佷繚鎶ゅ瓧鍏告搷浣�
+ {
+ // ========== 绗竴姝ワ細鎳掓竻鐞嗭紙姣忔鑾峰彇閿佹椂锛屾竻鐞嗚秴杩�1鍒嗛挓鐨勯棽缃墭鐩樺彿锛� ==========
+ var expiredBarcodes = BarcodeLockDict
+ .Where(kv => (DateTime.Now - kv.Value.Item2).TotalMinutes > ExpireMinutes)
+ .Select(kv => kv.Key)
+ .ToList();
+
+ foreach (var expiredBarcode in expiredBarcodes)
+ {
+ BarcodeLockDict.Remove(expiredBarcode);
+ }
+
+ // ========== 绗簩姝ワ細澶勭悊褰撳墠鎵樼洏鍙风殑閿佸拰鏃堕棿 ==========
+ if (!BarcodeLockDict.ContainsKey(barcode))
+ {
+ // 鏃犺鎵樼洏鍙凤細鏂板閿佸璞�+褰撳墠鏃堕棿
+ BarcodeLockDict[barcode] = Tuple.Create(new object(), DateTime.Now);
+ }
+ // 杩斿洖褰撳墠鎵樼洏鍙风殑閿佸璞�
+ return BarcodeLockDict[barcode].Item1;
+ }
+ }
+
public static void InboundRequestAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
{
try
{
- //string barcode = "901010";
int R_Line_PLCDispatch = int.Parse(client.ReadValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo).ToString());
bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), ReInboundRequestStationNo).ToString());
- if (R_Line_PLCDispatch == 1 && load)
+ if (R_Line_PLCDispatch == 1 && load)
{
string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
+
// 杩欓噷瑕佸姞涓�涓垽鏂紝濡傛灉鎷垮洖鏉ョ殑绌烘墭鐩樻槸800001锛屼絾鏄垜鏈変竴鏉¤繖涓墭鐩樼殑浠诲姟鏄�800001杩樻病鏈夊埌鎸囧畾鐨勫帇瑁呭彴锛屾墍浠ユ垜瑕佸畬鎴愯繖涓换鍔�
- Dt_TaskWCSinfo IsTask = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == barcode && x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
- if (IsTask != null)
- {
- //鍦ㄦ瀹屾垚璇ョ┖鎵樺嚭搴撲换鍔�
- WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
- {
- //涓婃姤WMS浠诲姟瀹屾垚
- content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
- if (content.Status)
- {
- //绉诲姩浠诲姟鍒板巻鍙茶〃
- Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext);
- IsTask.wcstask_state = TaskState.TaskState_Finished.ToString();
- CommonFunction.AddWcsTaskToHistory(IsTask, taskWCSinfoRepository, taskWCSinfo_HtyRepository);
- }
- else
- throw new Exception($"{DateTime.Now}涓婃姤WMS浠诲姟瀹屾垚鍑洪敊锛屽師鍥狅細銆恵content.Message}銆�");
- return content;
- });
- string str = string.Empty;
- if (content.Status)
- str = $" {DateTime.Now}涓婃姤WMS鍑哄簱瀹屾垚鎴愬姛,銆愭墜鍔ㄥ共鎵板嚭搴撴病鏈夊埌杈炬寚瀹氬帇瑁呭彴鐐逛綅锛屾墜鍔ㄦ嬁鍥�90101銆戙�怲askState_ConveyorLineExecuting銆戯紝鎵樼洏鍙�:{IsTask.wcstask_barcode},浠诲姟鍙凤細{IsTask.wcstask_taskNumber}";
- else
- str = $" {DateTime.Now}涓婃姤WMS鍑哄簱瀹屾垚澶辫触銆愭墜鍔ㄥ共鎵板嚭搴撴病鏈夊埌杈炬寚瀹氬帇瑁呭彴鐐逛綅锛屾墜鍔ㄦ嬁鍥�90101銆戙�怲askState_ConveyorLineExecuting銆戯紝鎵樼洏鍙�:{IsTask.wcstask_barcode},浠诲姟鍙凤細{IsTask.wcstask_taskNumber}";
-
- WriteLog.Info(IsTask.wcstask_endPoint).Write(str, IsTask.wcstask_endPoint);
- }
if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode))
{
- Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString());
- if (null == wcsInfo)
+ if (int.Parse(barcode) < 800000 || int.Parse(barcode) > 890000)
{
- //鑾峰彇杞﹁酱鍑哄簱
- List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) ||
- r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint));
+ return;
+ }
+ object barcodeLock = GetBarcodeLock(barcode);
+ lock (barcodeLock)
+ {
+ Dt_TaskWCSinfo IsTask = taskWCSinfoRepository.FindFirst(x => x.wcstask_barcode == barcode
+ && (x.wcstask_type == TaskType.TaskType_Empty_Pallet_Outbound.ToString() || x.wcstask_type == TaskType.TaskType_Box_Pallet_Outbound.ToString())
+ && (x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString())
+ && (endStationNo.Contains(x.wcstask_endPoint)));
+ if (IsTask != null)
+ {
+ //鍦ㄦ瀹屾垚璇ョ┖鎵樺嚭搴撲换鍔�
+ WebResponseContent content = taskWCSinfoRepository.DbContextBeginTransaction(() =>
+ {
+ //涓婃姤WMS浠诲姟瀹屾垚
+ content = WMSApi.TellWmsTaskFinished(IsTask.wcstask_barcode);
+ if (content.Status)
+ {
+ //绉诲姩浠诲姟鍒板巻鍙茶〃
+ Dt_TaskWCSinfo_HtyRepository taskWCSinfo_HtyRepository = new Dt_TaskWCSinfo_HtyRepository(taskWCSinfoRepository.DbContext);
+ IsTask.wcstask_state = TaskState.TaskState_Finished.ToString();
+ CommonFunction.AddWcsTaskToHistory(IsTask, taskWCSinfoRepository, taskWCSinfo_HtyRepository);
+ }
+ else
+ throw new Exception($"{DateTime.Now}涓婃姤WMS浠诲姟瀹屾垚鍑洪敊锛屽師鍥狅細銆恵content.Message}銆�");
- //鑾峰彇鏈夊灏戞潯鍑哄簱鐨勪换鍔�
- int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString() || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
- if (LineExecucount >= 8)
- {
- //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
- //鐢宠鍏ュ簱浠诲姟
- WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
+ return content;
+ });
+ string str = string.Empty;
if (content.Status)
- {
- WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
- wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
- taskWCSinfoRepository.Add(wcsInfo, true);
- //client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
- }
+ str = $" {DateTime.Now}涓婃姤WMS鍑哄簱瀹屾垚鎴愬姛,銆愭墜鍔ㄥ共鎵板嚭搴撴病鏈夊埌杈炬寚瀹氬帇瑁呭彴鐐逛綅锛屾墜鍔ㄦ嬁鍥�90101銆戙�怲askState_ConveyorLineExecuting銆戯紝鎵樼洏鍙�:{IsTask.wcstask_barcode},浠诲姟鍙凤細{IsTask.wcstask_taskNumber}";
else
- {
- throw new Exception("鍏ュ簱鐢宠澶辫触:" + content.Message);
- }
+ str = $" {DateTime.Now}涓婃姤WMS鍑哄簱瀹屾垚澶辫触銆愭墜鍔ㄥ共鎵板嚭搴撴病鏈夊埌杈炬寚瀹氬帇瑁呭彴鐐逛綅锛屾墜鍔ㄦ嬁鍥�90101銆戙�怲askState_ConveyorLineExecuting銆戯紝鎵樼洏鍙�:{IsTask.wcstask_barcode},浠诲姟鍙凤細{IsTask.wcstask_taskNumber}";
+
+ WriteLog.Info(IsTask.wcstask_endPoint).Write(str, IsTask.wcstask_endPoint);
+ LogRecord.WriteLog(LogEnum.Errer, str.ToString());
}
- else
+
+ Dt_TaskWCSinfo wcsInfo = taskWCSinfoRepository.FindFirst(r => r.wcstask_barcode == barcode);
+ if (null == wcsInfo)
{
- //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
- int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
- && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()
- && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
- if (RGV_Finishedcount == 0)
+ //鑾峰彇杞﹁酱鍑哄簱
+ List<Dt_TaskWCSinfo> executingTask = taskWCSinfoRepository.Find(r => (r.wcstask_type.Equals(TaskType.TaskType_Box_Pallet_Outbound.ToString()) ||
+ r.wcstask_type.Equals(TaskType.TaskType_Empty_Pallet_Outbound.ToString())) && endStationNo.Contains(r.wcstask_endPoint));
+
+ //鑾峰彇鏈夊灏戞潯鍑哄簱鐨勪换鍔�
+ int LineExecucount = executingTask.Count(x => x.wcstask_state == TaskState.TaskState_Box_Out_Line_Executing.ToString()
+ || x.wcstask_state == TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+ if (LineExecucount >= 8)
{
+ //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
//鐢宠鍏ュ簱浠诲姟
WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
if (content.Status)
{
- WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
- wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
- taskWCSinfoRepository.Add(wcsInfo, true);
+ //WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
+ //wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
+ //taskWCSinfoRepository.Add(wcsInfo, true);
//client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
+ try
+ {
+ WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
+ wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
+ taskWCSinfoRepository.Add(wcsInfo, true);
+ }
+ catch (Exception)
+ {
+ string str = $"杩欓噷鍙兘鏄嚭鐜颁簡骞跺彂鐨勬儏鍐垫墭鐩樼爜 鍦ㄦ坊鍔犵殑鏃跺�欐嫤鎴殑銆恵wcsInfo.wcstask_barcode}銆�" +
+ $"浠诲姟鍙枫�恵wcsInfo.wcstask_taskNumber}銆�,浠诲姟鐘舵�侊細銆恵wcsInfo.wcstask_state}銆�";
+ LogRecord.WriteLog(LogEnum.Errer, str.ToString());
+ //throw;
+ }
}
else
{
+ if (content.Message.Contains("褰撳墠鎵樼洏鍙峰凡瀛樺湪搴撻噷"))
+ {
+ client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 4);
+ }
throw new Exception("鍏ュ簱鐢宠澶辫触:" + content.Message);
}
}
+ else
+ {
+ //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
+ int RGV_Finishedcount = executingTask.Count(x =>
+ x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+ && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()
+ && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
+
+ if (RGV_Finishedcount == 0)
+ {
+ // 鏍稿績锛氳幏鍙栧綋鍓嶆墭鐩樺彿鐨勪笓灞為攣锛屽悓涓�鎵樼洏鍙蜂覆琛屽鐞�
+ //鐢宠鍏ュ簱浠诲姟
+ WebResponseContent content = WMSApi.PostInboundRequstToWMS(barcode);
+ if (content.Status)
+ {
+ try
+ {
+ WmsTaskInfo wmsTask = JsonConvert.DeserializeObject<WmsTaskInfo>(content.Data.ToString());
+ wcsInfo = CommonFunction.AddWCSEmptyInboundTask(wmsTask, taskWCSinfoRepository);
+ taskWCSinfoRepository.Add(wcsInfo, true);
+ }
+ catch (Exception)
+ {
+ string str = $"杩欓噷鍙兘鏄嚭鐜颁簡骞跺彂鐨勬儏鍐垫墭鐩樼爜锛屽湪娣诲姞鐨勬椂鍊欐嫤鎴殑銆恵wcsInfo.wcstask_barcode}銆�" +
+ $"浠诲姟鍙枫�恵wcsInfo.wcstask_taskNumber}銆�,浠诲姟鐘舵�侊細銆恵wcsInfo.wcstask_state}銆�";
+ LogRecord.WriteLog(LogEnum.Errer, str.ToString());
+ //throw;
+ }
+ }
+ else
+ {
+ if (content.Message.Contains("褰撳墠鎵樼洏鍙峰凡瀛樺湪搴撻噷"))
+ {
+ client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 4);
+ }
+ else if (content.Message.Contains("鏆傛棤璐т綅鍙垎閰�"))
+ {
+
+ }
+ else
+ {
+ throw new Exception("鍏ュ簱鐢宠澶辫触:" + content.Message);
+ }
+
+ }
+ }
+ }
+ }
+ else
+ {
+ string str = $"杩欓噷鍙兘鏄嚭鐜颁簡骞跺彂鐨勬儏鍐垫墭鐩樼爜 鍦ㄦ煡璇㈢殑鏃跺�欐嫤鎴殑銆恵wcsInfo.wcstask_barcode}銆�" +
+ $"浠诲姟鍙枫�恵wcsInfo.wcstask_taskNumber}銆�,浠诲姟鐘舵�侊細銆恵wcsInfo.wcstask_state}銆�";
+ LogRecord.WriteLog(LogEnum.Errer, str.ToString());
}
}
}
else
{
- throw new Exception("鍏ュ簱鐢宠澶辫触:璇诲彇鍒扮殑绌烘墭鐩樻潯鐮佷负绌猴紝璇诲彇鍐呭锛�"+ barcode);
+ throw new Exception("鍏ュ簱鐢宠澶辫触:璇诲彇鍒扮殑绌烘墭鐩樻潯鐮佷负绌猴紝璇诲彇鍐呭锛�" + barcode);
}
}
}
--
Gitblit v1.9.3