From 557f02072fa311eefe3123aa44afebac22adc465 Mon Sep 17 00:00:00 2001
From: xiaojiao <xiaojiao@kaokeziliao.com>
Date: 星期五, 24 四月 2026 17:24:43 +0800
Subject: [PATCH] 4-24
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs | 148 ++++++++++++++++++++++++++++++++----------------
1 files changed, 98 insertions(+), 50 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs"
index b95909d..b0144a9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs"
@@ -1,4 +1,6 @@
-锘縰sing System;
+锘縰sing NewLife.Serialization;
+using Newtonsoft.Json;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -6,6 +8,7 @@
using WIDESEA.Core.Utilities;
using WIDESEA.Entity.DomainModels;
using WIDESEA.Services.Repositories;
+using WIDESEA_Common.LogEnum;
using WIDESEA_Entity.CustomModels.RGVModel;
using WIDESEA_Services.Services.APIInvoke.RGV;
using static WIDESEA_Entity.CustomModels.RGVModel.RgvDeviceStatusModel;
@@ -18,7 +21,7 @@
/// 缁欏叆搴撹姹傚垎閰嶈揣浣�
/// </summary>
/// <returns></returns>
- public static Dt_locationinfo GetEmptyLocationAction()
+ public static Dt_locationinfo GetEmptyLocationAction(int? Gznumber = 0)
{
List<string> locationId = new List<string>();
//鍑哄簱浠诲姟
@@ -28,66 +31,103 @@
//鍏ュ簱浠诲姟
Dt_locationinfo locationinfo = null;
- List<Dt_taskinfo> inboundTask = Dt_taskinfoRepository.Instance.Find(r => r.task_type.Contains("Inbound"));
+
+
+
List<int> listLayer = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
-
- //// 鏇存敼鑾峰彇璐т綅鐨勪俊鎭� 杩欓噷瑕佸啓涓�涓惊鐜�
- //List<Dt_taskinfo> outboundTask_temp = Dt_taskinfoRepository.Instance.Find(x => x.task_tolocationid == "10301" || x.task_endstation == "10301");
- //if (outboundTask_temp != null)
- //{
- // string temp_layer = "";
-
- // foreach (var item in outboundTask_temp)
- // {
-
- // }
- //}
-
- if (null != inboundTask && inboundTask.Count > 0)
+ // 褰撲紶杩涙潵鐨勬槸1 澶勭悊鍏ュ簱鍖虹殑閫昏緫 褰撲紶杩涙潵鐨勬槸2澶勭悊鍑哄簱鍖虹殑閫昏緫
+ if (Gznumber == 1)
{
- foreach (var item in inboundTask)
+ List<Dt_taskinfo> inbound = Dt_taskinfoRepository.Instance.Find(x =>
+ x.task_beginstation == "20101"
+ );
+ foreach (var item in inbound)
{
- //濡傛灉鍙栬揣瀹屾垚锛屽彲浠ュ垎閰�
- if (string.IsNullOrEmpty(item.task_bak_2) || !"2".Equals(item.task_bak_2))
+ string[] location = item.task_tolocationid.Split('-');
+ //鑾峰彇褰撳墠鏈変换鍔$殑灞�
+ int layer = int.Parse(location[0]);
+ LogRecord.WriteLog((int)LogEnum.InBound, $"鍒嗛厤浠诲姟鏃讹紝鏈夊叆搴撲换鍔¢渶瑕佸垹闄ょ殑灞傦細{layer}锛屽綋鍓嶅眰璐т綅缂栧彿锛歿item.ToJson()},褰撳墠鐜版湁浠诲姟{inbound.ToJson()}");
+ listLayer.Remove(layer);
+ }
+
+ List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r => ((r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString())
+ && (r.task_state == TaskState.TaskState_RGV_Received.ToString() || r.task_state == TaskState.TaskState_RGV_Finished.ToString()))
+ || r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString());
+
+ if (null != outboundTask && outboundTask.Count > 0)
+ {
+ List<string> fromStation = outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()).Select(r => r.task_fromlocationid).ToList();
+ fromStation.AddRange(outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString()).Select(r => r.task_tolocationid).ToList());
+
+ foreach (var item in fromStation)
{
- string[] location = item.task_tolocationid.Split('-');
+ string[] location = item.Split('-');
//鑾峰彇褰撳墠鏈変换鍔$殑灞�
int layer = int.Parse(location[0]);
+ LogRecord.WriteLog((int)LogEnum.InBound, $"鍒嗛厤浠诲姟鏃讹紝鏈夊叆搴撲换鍔¢渶瑕佸垹闄ょ殑灞傦細{layer}锛屽綋鍓嶅眰璐т綅缂栧彿锛歿item.ToJson()},褰撳墠鐜版湁浠诲姟{outboundTask.ToJson()}");
listLayer.Remove(layer);
}
}
+
}
-
- // List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r => ((r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString())
- // && (r.task_state.Equals(TaskState.TaskState_RGV_Received.ToString()) || r.task_state.Equals(TaskState.TaskState_RGV_Finished.ToString())))
- //|| r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString());
- List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r =>(r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() || r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString())
- && (r.task_state != TaskState.TaskState_Create.ToString()));
-
- if (outboundTask.Count < 3)
+ else if (Gznumber == 2)
{
- int crtacount = 3 - outboundTask.Count;
- List<Dt_taskinfo> outboundcCrteateTask = Dt_taskinfoRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()
- && r.task_state == TaskState.TaskState_Create.ToString()).OrderBy(r=>r.task_createtime).Take(crtacount).ToList();
-
- outboundTask.AddRange(outboundcCrteateTask);
- }
-
-
- if (null != outboundTask && outboundTask.Count > 0)
- {
- List<string> fromStation = outboundTask.Where(r=>r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()).Select(r => r.task_fromlocationid).ToList();
- fromStation.AddRange(outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString()).Select(r => r.task_tolocationid).ToList());
-
- foreach (var item in fromStation)
+ List<Dt_taskinfo> outbound = Dt_taskinfoRepository.Instance.Find(x =>
+ x.task_beginstation == "90101"
+ );
+ foreach (var item in outbound)
{
- string[] location = item.Split('-');
+ string[] location = item.task_tolocationid.Split('-');
//鑾峰彇褰撳墠鏈変换鍔$殑灞�
int layer = int.Parse(location[0]);
+ LogRecord.WriteLog((int)LogEnum.InBound, $"鍒嗛厤浠诲姟鏃讹紝鏈夊叆搴撲换鍔¢渶瑕佸垹闄ょ殑灞傦細{layer}锛屽綋鍓嶅眰璐т綅缂栧彿锛歿item.ToJson()},褰撳墠鐜版湁浠诲姟{outbound.ToJson()}");
listLayer.Remove(layer);
}
}
+ else
+ {
+ List<Dt_taskinfo> inboundTask = Dt_taskinfoRepository.Instance.Find(r => r.task_type.Contains("Inbound"));
+ if (null != inboundTask && inboundTask.Count > 0)
+ {
+ foreach (var item in inboundTask)
+ {
+ //濡傛灉鍙栬揣瀹屾垚锛屽彲浠ュ垎閰�
+ if (string.IsNullOrEmpty(item.task_bak_2) || !"2".Equals(item.task_bak_2))
+ {
+ string[] location = item.task_tolocationid.Split('-');
+ //鑾峰彇褰撳墠鏈変换鍔$殑灞�
+ int layer = int.Parse(location[0]);
+ LogRecord.WriteLog((int)LogEnum.InBound, $"鍒嗛厤浠诲姟鏃讹紝鏈夊叆搴撲换鍔¢渶瑕佸垹闄ょ殑灞傦細{layer}锛屽綋鍓嶅眰璐т綅缂栧彿锛歿item.ToJson()},褰撳墠鐜版湁浠诲姟{inboundTask.ToJson()}");
+ listLayer.Remove(layer);
+ }
+ }
+ }
+ List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r => ((r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString())
+ && (r.task_state == TaskState.TaskState_RGV_Received.ToString() || r.task_state == TaskState.TaskState_RGV_Finished.ToString()))
+ || r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString());
+
+ if (null != outboundTask && outboundTask.Count > 0)
+ {
+ List<string> fromStation = outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()).Select(r => r.task_fromlocationid).ToList();
+ fromStation.AddRange(outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString()).Select(r => r.task_tolocationid).ToList());
+
+ foreach (var item in fromStation)
+ {
+ string[] location = item.Split('-');
+ //鑾峰彇褰撳墠鏈変换鍔$殑灞�
+ int layer = int.Parse(location[0]);
+ LogRecord.WriteLog((int)LogEnum.InBound, $"鍒嗛厤浠诲姟鏃讹紝鏈夊叆搴撲换鍔¢渶瑕佸垹闄ょ殑灞傦細{layer}锛屽綋鍓嶅眰璐т綅缂栧彿锛歿item.ToJson()},褰撳墠鐜版湁浠诲姟{outboundTask.ToJson()}");
+ listLayer.Remove(layer);
+ }
+ }
+
+ }
+
+
+
+
+
List<int> rgvLayer = new List<int>();
WebResponseContent resultcontent = RGVAPIInvokeGetRgvInfo.GetRgvInfo();
if (resultcontent.Status)
@@ -105,24 +145,25 @@
}
+
if (locationId.Count > 0)
{
//浼樺厛鍒嗛厤绌挎杞︾殑灞�
if (rgvLayer.Count > 0)
{
- locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString() &&
- !locationId.Contains(x.location_id) && !x.location_islocked && rgvLayer.Contains(x.location_layer)).OrderBy(x => x.location_layer)
+ locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString()
+ && !x.location_islocked && rgvLayer.Contains(x.location_layer) && !locationId.Contains(x.location_id)).OrderBy(x => x.location_layer)
.ThenBy(x => x.location_column).FirstOrDefault();
if (null != locationinfo)
return locationinfo;
else
- locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString() &&
- !locationId.Contains(x.location_id) && !x.location_islocked && listLayer.Contains(x.location_layer)).OrderBy(x => x.location_layer)
+ locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString()
+ && !x.location_islocked && listLayer.Contains(x.location_layer) && !locationId.Contains(x.location_id)).OrderBy(x => x.location_layer)
.ThenBy(x => x.location_column).FirstOrDefault();
}
else
- locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString() &&
- !locationId.Contains(x.location_id) && !x.location_islocked && listLayer.Contains(x.location_layer)).OrderBy(x => x.location_layer)
+ locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString()
+ && !x.location_islocked && listLayer.Contains(x.location_layer) && !locationId.Contains(x.location_id)).OrderBy(x => x.location_layer)
.ThenBy(x => x.location_column).FirstOrDefault();
if (null != locationinfo)
@@ -146,7 +187,14 @@
&& !x.location_islocked && listLayer.Contains(x.location_layer)).OrderBy(x => x.location_layer).ThenBy(x => x.location_column).FirstOrDefault();
if (null != locationinfo)
+ return locationinfo;
+ }
+ if (locationinfo == null)
+ {
+ locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString()
+ && !x.location_islocked && listLayer.Contains(x.location_layer)).OrderBy(x => x.location_layer).ThenBy(x => x.location_column).FirstOrDefault();
+ if (null != locationinfo)
return locationinfo;
}
throw new Exception("鏆傛棤璐т綅鍙垎閰�");
--
Gitblit v1.9.3