From b174ea476eb1afd872985b2c261241a814e0185d Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期四, 12 三月 2026 09:55:27 +0800
Subject: [PATCH] 一次大的提交,涉及,wms,wcs,pda
---
项目代码/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs | 179 ++++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 132 insertions(+), 47 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
index f9f2740..89daf98 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEA_WCSServer/WIDESEA_WCS/Jobs/ConveyorLine/OutboundArea/ReInboundRequestAction.cs"
@@ -1,5 +1,6 @@
锘縰sing HslCommunication;
using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
using System;
using System.Collections.Generic;
@@ -17,6 +18,7 @@
using WIDESEA_Services.Repositories;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
+using static System.Collections.Specialized.BitVector32;
namespace WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea
{
@@ -93,23 +95,32 @@
//鑾峰彇浠诲姟锛岀敓鎴愬叆搴撲换鍔�
public static void RGV_InboundKTP(IDt_TaskWCSinfoRepository taskWCSinfoRepository, IDt_TaskRGVinfoRepository taskRGVinfoRepository, PLCClient client)
{
- Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type ==
- TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString());
- if(inboundTask == null)
+ Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.Find(r =>
+ OutboundStationLayerNo.Contains(r.wcstask_endPoint)
+ && r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()
+ && r.wcstask_state == TaskState.TaskState_Empty_In_PLC_Finished.ToString()).OrderBy(x => x.wcstask_dispatcherTime).FirstOrDefault();
+
+ if (inboundTask != null)
{
- //鏌ユ壘鏄惁鏈夎鎵樼洏鏉$爜浠诲姟锛屽鏋滄病鏈夊垯杩涜娣诲姞RGV浠诲姟
- Dt_TaskRGVinfo rgvInfo = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == inboundTask.wcstask_barcode
+ //鍒ゆ柇鏄惁鏈夎揣锛屾湁鎵樼洏鏉$爜
+ string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), inboundTask.wcstask_startLocation).ToString();
+ bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), inboundTask.wcstask_startLocation).ToString());
+ if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load && inboundTask.wcstask_barcode== barcode)
+ {
+ //鏌ユ壘鏄惁鏈夎鎵樼洏鏉$爜浠诲姟锛屽鏋滄病鏈夊垯杩涜娣诲姞RGV浠诲姟
+ Dt_TaskRGVinfo rgvInfo = taskRGVinfoRepository.FindFirst(r => r.rgvtask_barCode == inboundTask.wcstask_barcode
&& r.rgvtask_wcsTaskNumber == inboundTask.wcstask_taskNumber);
- if (null == rgvInfo)
- {
- string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString();
-
- rgvInfo = GetRGVTask(taskRGVinfoRepository, inboundTask, rgvTaskType);
- taskRGVinfoRepository.Add(rgvInfo, true);
+ if (null == rgvInfo)
+ {
+ string rgvTaskType = RGVTaskType.RgvTaskType_Inbound.ToString();
- inboundTask.wcstask_state = TaskState.TaskState_RGV_Received.ToString();
- taskWCSinfoRepository.Update(inboundTask, x => x.wcstask_state, true);
+ rgvInfo = GetRGVTask(taskRGVinfoRepository, inboundTask, rgvTaskType);
+ taskRGVinfoRepository.Add(rgvInfo, true);
+
+ inboundTask.wcstask_state = TaskState.TaskState_RGV_Received.ToString();
+ taskWCSinfoRepository.Update(inboundTask, x => x.wcstask_state, true);
+ }
}
}
@@ -121,46 +132,92 @@
{
try
{
- //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
- Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.FindFirst(r => OutboundStationLayerNo.Contains(r.wcstask_endPoint) && r.wcstask_type ==
- TaskType.TaskType_Empty_Pallet_Inbound.ToString() && r.wcstask_state == TaskState.TaskState_Assigned.ToString());
- if(inboundTask != null)
+ //鑾峰彇鏄惁鏈夎揣
+ bool load = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), ReInboundRequestStationNo).ToString());
+ string barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), ReInboundRequestStationNo).ToString();
+ if (!string.IsNullOrEmpty(barcode) && !"0".Equals(barcode) && load)
{
- //鑾峰彇杞﹁酱鍑哄簱
- 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());
- if (LineExecucount >= 4)
+ //鏍规嵁瀵瑰簲鐨勬墭鐩樻潯鐮佽繘琛屽幓涓嬪彂浠诲姟
+ Dt_TaskWCSinfo inboundTask = taskWCSinfoRepository.Find(r => r.wcstask_barcode == barcode)
+ .Where(r => r.wcstask_type == TaskType.TaskType_Empty_Pallet_Inbound.ToString()
+ && (r.wcstask_state == TaskState.TaskState_Assigned.ToString() || r.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())).FirstOrDefault();
+ if(inboundTask != null)
{
- //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
- int Assrscount = executingTask.Count(x => x.wcstask_endLocation == inboundTask.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
- || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
- if (Assrscount == 0)
+ if(inboundTask.wcstask_state == TaskState.TaskState_Assigned.ToString())
+ {
+ ReInAssignedKTP(taskWCSinfoRepository, client, inboundTask);
+ }
+ else
{
ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask);
}
}
- else
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ WriteLog.Info(ReInboundRequestStationNo).Write($"{DateTime.Now}鍥炲簱绔欏彴浠诲姟涓嬪彂,璋冨害澶辫触:{ex.Message}", ReInboundRequestStationNo);
+ throw;
+ }
+ }
+
+
+ public static void ReInAssignedKTP(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, Dt_TaskWCSinfo wcsInfo)
+ {
+ try
+ {
+ //鑾峰彇杞﹁酱鍑哄簱
+ 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)
+ {
+ //鍒ゆ柇鏄惁鏈夊搴斿眰鐨勫嚭搴撲换鍔★紝
+ int Assrscount = executingTask.Count(x => x.wcstask_endLocation == wcsInfo.wcstask_startLocation
+ && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+ || x.wcstask_state == TaskState.TaskState_Assigned.ToString()
+ && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString()));
+ if (Assrscount == 0)
{
- //鍒ゆ柇鏈夊灏戞潯鍦ㄧ紦瀛樻灦鐨�
- int RGV_Finishedcount = executingTask.Count(x => x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
- && x.wcstask_state != TaskState.TaskState_Assigned.ToString());
- if (RGV_Finishedcount == 0)
+ ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
+ }
+ }
+ 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)
+ {
+ //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
+ //int Assrscount = executingTask.Count(x => x.wcstask_endLocation == wcsInfo.wcstask_startLocation
+ //&& (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+ //|| x.wcstask_state == TaskState.TaskState_Assigned.ToString())
+ //&& x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+
+ // 鑲栦郊 2026-01-20 淇敼涓婇潰濡備笅
+ int Assrscount = executingTask.Count(x =>
+ x.wcstask_endLocation == wcsInfo.wcstask_startLocation
+ && x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
+ && x.wcstask_state != TaskState.TaskState_Assigned.ToString()
+ && x.wcstask_state != TaskState.TaskState_Empty_Out_Line_Executing.ToString());
+
+
+ if (Assrscount == 0)
{
- //鍙互杩涜鍒ゆ柇涓嬪彂鍏ュ簱浠诲姟
- int Assrscount = executingTask.Count(x => x.wcstask_endLocation == inboundTask.wcstask_startLocation && (x.wcstask_state != TaskState.TaskState_Box_Out_Line_Executing.ToString()
- || x.wcstask_state == TaskState.TaskState_Assigned.ToString()));
- if (Assrscount == 0)
- {
- ReInboundRequestStationAction(taskWCSinfoRepository, client, inboundTask);
- }
+ ReInboundRequestStationAction(taskWCSinfoRepository, client, wcsInfo);
}
}
}
-
-
}
catch (Exception ex)
{
@@ -168,9 +225,7 @@
throw;
}
-
}
-
public static void ReInboundRequestStationAction(IDt_TaskWCSinfoRepository taskWCSinfoRepository, PLCClient client, Dt_TaskWCSinfo wcsInfo)
@@ -184,7 +239,25 @@
int logicValue = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString());
if ((logicValue == 1 || logicValue == 2))
{
+ client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+ client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+
+ int TaskTarget = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo).ToString());
+ int TaskNumber = int.Parse(client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo).ToString());
+
+ if (TaskTarget == 0 || TaskNumber == 0 || TaskTarget.ToString() != wcsInfo.wcstask_endPoint.ToString() || TaskNumber != wcsInfo.wcstask_taskNumber) // 鍐欏叆鍚� 濡傛灉璇诲彇涓嶅埌 閭e氨閲嶆柊鍐欏叆
+ {
+ client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+ client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+ }
+
WriteTaskInfo.WriteTaskInfoAction(wcsInfo, client, lineCode);
+ client.WriteValue(CLineInfoDBName.W_Line_PLCDispatch.ToString(), ReInboundRequestStationNo, 2);
+
+ if (RgvDispatchJob.TempHK) // 濡傛灉杩欎釜涓篢rue浜� 閭e氨璇佹槑鍥炵┖鎵樼洏鐨勪紭鍏堢骇琚彁楂樹簡 鐒跺悗灏变細杩炵画鍥炲洓涓紝杩欓噷姣忓洖涓�涓氨瑕�+1 鐩村埌鍥炲洓涓簡 杩欎釜浼樺厛绾у氨娑堝け浜�
+ {
+ RgvDispatchJob.HKNumber += 1;
+ }
}
string rfidResult = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode).ToString();
if (!wcsInfo.wcstask_barcode.Equals(rfidResult))
@@ -194,14 +267,26 @@
if (logicValue == 3)
{
//鍚姩浠诲姟
- client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+ bool logicbool= client.WriteValue(CLineInfoDBName.W_Line_Logic.ToString(), lineCode, 1);
+ if (logicbool)
+ {
+ if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+ return;
+ wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
+ wcsInfo.wcstask_dispatcherTime = DateTime.Now;
+ taskWCSinfoRepository.Update(wcsInfo, true);
+ }
+
}
else if (logicValue == 4 || logicValue == 5)
{
+ //client.WriteValue(CLineInfoDBName.R_Line_TargetPosition.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_endPoint);
+ //client.WriteValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), ReInboundRequestStationNo, wcsInfo.wcstask_taskNumber);
+
//鎻愬崌鏈烘墽琛屼腑
- if (wcsInfo.wcstask_state == TaskState.TaskState_HoisterExecuting.ToString())
+ if (wcsInfo.wcstask_state == TaskState.TaskState_Empty_In_PLC_Finished.ToString())
return;
- wcsInfo.wcstask_state = TaskState.TaskState_HoisterExecuting.ToString();
+ wcsInfo.wcstask_state = TaskState.TaskState_Empty_In_PLC_Finished.ToString();
wcsInfo.wcstask_dispatcherTime = DateTime.Now;
taskWCSinfoRepository.Update(wcsInfo, true);
}
--
Gitblit v1.9.3