From 8bc65cd3363d7148c356fe2eecca3590a9a3b4e0 Mon Sep 17 00:00:00 2001
From: Administrator <Administrator@DESKTOP-JIE70N9>
Date: 星期二, 21 十月 2025 09:34:41 +0800
Subject: [PATCH] 修改问题
---
Admin.NET/WCS.Application/Util/FourWayCarUtil.cs | 607 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 443 insertions(+), 164 deletions(-)
diff --git a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
index aaa4238..0a8fe55 100644
--- a/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
+++ b/Admin.NET/WCS.Application/Util/FourWayCarUtil.cs
@@ -7,6 +7,8 @@
using System.Text;
using System.Threading.Tasks;
using WCS.Application.Entity;
+using static Elastic.Clients.Elasticsearch.JoinField;
+using static SKIT.FlurlHttpClient.Wechat.Api.Models.CustomServiceKfSessionGetWaitCaseResponse.Types;
namespace WCS.Application.Util;
@@ -14,16 +16,435 @@
{
private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId);
-
+ private static readonly WcsTaskService _taskService = App.GetService<WcsTaskService>();
+
+ /// <summary>
+ /// 瀹屽杽灏忚溅涓嬪彂鑺傜偣銆佽妭鐐瑰懡浠�
+ /// </summary>
+ /// <param name="list">闆嗗悎</param>
+ /// <param name="moveType">绉诲姩绫诲瀷 0:绉诲姩 1:绉昏揣 </param>
+ /// <returns></returns>
+ public static List<CarModel> GetCarPathUp(List<CarModel> list, int moveType)
+ {
+ if (list == null)
+ {
+ return null;
+ }
+ for (int i = 0; i < list.Count; i++)
+ {
+ if (i >= 0 && i < list.Count - 1)
+ {
+ if (list[i].X == list[i + 1].X)
+ {
+ list[i].NodeCom = 2;
+ }
+ else if (list[i].Y == list[i + 1].Y)
+ {
+ list[i].NodeCom = 3;
+ }
+
+ }
+ if (i > 0 && i < list.Count - 1)
+ {
+ if (list[i].Make != list[i - 1].Make || list[i].Make != list[i + 1].Make)
+ {
+ if (list[i].X != list[i - 1].X || list[i].X != list[i + 1].X)
+ {
+ list[i].IsSendPlc = true;
+ }
+
+ //list[i - 1].IsSendPlc = true;
+
+ }
+
+ }
+ if (i == 0)
+ {
+ list[i].IsSendPlc = true;
+ if (moveType == 0)
+ {
+ if (list[i + 1] == null)
+ {
+ continue;
+ }
+
+ }
+ else
+ {
+ list[i].NodeCom = 1;
+ }
+ }
+ if (i == list.Count - 1)
+ {
+ list[i].IsSendPlc = true;
+ if (moveType == 0)
+ {
+ if (list[i].X == list[i - 1].X)
+ {
+ list[i].NodeCom = 2;
+ }
+ else if (list[i].Y == list[i - 1].Y)
+ {
+ list[i].NodeCom = 3;
+ }
+ }
+ else
+ {
+ list[i].NodeCom = 4;
+ }
+ }
+ }
+ return list;
+ }
+
+ /// <summary>
+ /// 鑾峰彇灏忚溅绉诲姩鐨勭洰鏍囦綅缃�
+ /// </summary>
+ /// <param name="startLocation">璧峰浣嶇疆</param>
+ /// <param name="noPathStr">涓嶈兘瀛樻斁鐨勫偍浣嶅瓧绗︿覆</param>
+ /// <returns></returns>
+ public static string GetCarEndLocation(string startLocation, string noPathStr)
+ {
+ if (string.IsNullOrEmpty(startLocation))
+ {
+ return null;
+ }
+
+ // 璧峰浣嶇疆
+ CarModel start = new CarModel()
+ {
+ X = int.Parse(startLocation.Substring(0, 2)),
+ Y = int.Parse(startLocation.Substring(2, 2)),
+ Z = int.Parse(startLocation.Substring(4, 2)),
+ NodeCom = 0
+ };
+
+ // 鑾峰彇鍌ㄤ綅琛ㄤ俊鎭瓨鍌ㄥ埌闆嗗悎閲�
+ var layer = int.Parse(startLocation.Substring(4, 2));
+
+ // 鑾峰彇褰撳墠灞傚偍浣嶄俊鎭�
+ var locationModels = _db.Queryable<WcsStorageLocat>()
+ .Where(m => m.WareHouseNo == "W01" && m.Layer == layer && m.IsDelete == false)
+ .ToList();
+
+ #region MyRegion
+
+ var list = locationModels.Where(m => !noPathStr.Contains(m.LocatNo)).OrderBy(m => Math.Abs(start.X - m.Row) + Math.Abs(start.Y - m.Column)).ToList();
+ var locateStr = "";
+ foreach (var item in list)
+ {
+ // 鍌ㄤ綅鐘舵�佷负鎹熷潖涓嶅彲閫氳 鍌ㄤ綅鐘舵�佷负灞忚斀涓哄彲閫氳涓嶅彲瀛樺偍鎵樼洏
+ if (item.Flag == "2")
+ {
+ continue;
+ }
+ locateStr = item.LocatNo;
+ break;
+ }
+ return locateStr;
+ #endregion
+ }
+
+ /// <summary>
+ /// 鑾峰彇浠诲姟鍙�
+ /// </summary>
+ /// <returns></returns>
+ public static int GetTaskNo()
+ {
+ var list = _db.Queryable<WcsCarTasks>().ToList();
+ var maxNo = list.Max(m => m.CarTaskNo);
+
+ if (maxNo != null && maxNo > 0)
+ {
+ if (maxNo++ > 65535)
+ {
+ return 1;
+ }
+
+ return (int)maxNo++;
+ }
+ return 1;
+
+ }
+
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="data">褰撳墠浠诲姟鎬昏矾寰�</param>
+ /// <param name="kXCarList">鎵�鏈夊皬杞�</param>
+ /// <param name="assignCar">褰撳墠鍒嗛厤灏忚溅</param>
+ /// <param name="waitTask">褰撳墠鎬讳换鍔�</param>
+ /// <param name="moveType">0鍘诲彇璐т换鍔� 1鍘绘斁璐�</param>
+ /// <returns></returns>
+ public static bool AddCarTask(List<CarModel> data, List<CarInfo> kXCarList, CarInfo assignCar, WcsTask waitTask,int moveType)
+ {
+ #region 鑾峰彇閫傚悎鎵ц褰撳墠浠诲姟鐨勫皬杞� 鐢熸垚璺緞锛堥渶鑰冭檻灏忚溅闃婚樆鎸★級
+ var preId1 = "";//鍓嶇疆浠诲姟Id
+ var executionPath1 = "";//浜や簰璺緞
+ var executionPath2 = "";//浜や簰璺緞
+ var path = "";//鎵�鏈夎矾寰�
+ var isOk = "1"; //鏄惁瀹屾暣璺緞 1瀹屾暣 2 涓ゆ潯璺緞
+ for (int i = 0; i < data.Count; i++)
+ {
+ //璺緞鑺傜偣
+ var pathXYZ = data[i].X.ToString().PadLeft(2, '0') + data[i].Y.ToString().PadLeft(2, '0') + data[i].Z.ToString().PadLeft(2, '0') + data[i].NodeCom.ToString();
+ var pathXYZ2 = data[i].X.ToString().PadLeft(2, '0') + data[i].Y.ToString().PadLeft(2, '0') + data[i].Z.ToString().PadLeft(2, '0');
+ path += pathXYZ + ";";
+
+ //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟
+ var taskList = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.Path.Contains(pathXYZ2) && m.CarNo != assignCar.CarPlcIp).Select(m => m.Id).Distinct().ToList();
+
+ foreach (var item in taskList)
+ {
+ //鍒ゆ柇濡傛灉鏄畬鏁磋矾寰� 璁板綍浜や簰璺緞
+ if (isOk == "1")
+ {
+ if (i == 0)
+ {
+ continue;
+ }
+ var pathXYZQian = data[i - 1].X.ToString().PadLeft(2, '0') + data[i - 1].Y.ToString().PadLeft(2, '0') + data[i - 1].Z.ToString().PadLeft(2, '0')+ data[i - 1].NodeCom.ToString();
+ var pathXYZQian2 = data[i - 1].X.ToString().PadLeft(2, '0') + data[i - 1].Y.ToString().PadLeft(2, '0') + data[i - 1].Z.ToString().PadLeft(2, '0');
+ if (!executionPath1.Contains(pathXYZQian2))
+ {
+ executionPath1 += pathXYZQian + ";";
+ }
+ executionPath2 += pathXYZQian + ";";
+
+ }
+ //鍒ゆ柇娣诲姞鍓嶇疆浠诲姟Id
+ if (!preId1.Contains(item + ""))
+ {
+ preId1 += item + ";";
+ }
+
+ isOk = "2";
+ }
+
+ if (data[i].IsSendPlc)
+ {
+ if (isOk == "1")
+ {
+ executionPath1 += pathXYZ + ";";
+ }
+ else
+ {
+ executionPath2 += pathXYZ + ";";
+ }
+
+ }
+
+ }
+
+ #endregion
+
+ #region 鍒ゆ柇鏄惁鏈夌┖闂插皬杞﹂樆鎸¤矾寰� 3
+ var preId3 = "";//鍓嶇疆浠诲姟Id
+ foreach (var item in kXCarList)
+ {
+ if (item == assignCar)
+ {
+ continue;//鎺掗櫎褰撳墠鍒嗛厤浠诲姟鐨勫皬杞�
+ }
+ //灏忚溅浣嶇疆
+ var carXYZ = item.X.ToString().PadLeft(2, '0') + item.Y.ToString().PadLeft(2, '0') + item.Z.ToString().PadLeft(2, '0');
+ //鍒嗛厤鐨勪换鍔¤矾寰勪腑 褰撳墠灏忚溅鏄惁闃绘尅
+ if (path.Contains(carXYZ))
+ {
+ //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
+ var taskList3 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing)).ToList();
+
+ var str3 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
+
+ foreach (var item2 in taskList3)
+ {
+ str3 += item2.Path;
+ }
+ var endLocate3 = "";
+ var executionPath3 = "";
+ var path3 = "";
+ var datas3 = new List<CarModel>();
+ //鏌ユ壘鐩爣浣嶇疆
+ while (endLocate3 == "" || datas3.Count == 0 || datas3 == null)
+ {
+ endLocate3 = FourWayCarUtil.GetCarEndLocation(carXYZ, str3);
+ var data3 = FourWayCarUtil.GetCarPath(carXYZ, endLocate3, "0");
+ datas3 = FourWayCarUtil.GetCarPathUp(data3, 0);
+ }
+ foreach (var itemPath in datas3)
+ {
+ var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString();
+
+ path3 += pathXYZ + ";";
+ if (itemPath.IsSendPlc)
+ {
+ executionPath3 += pathXYZ + ";";
+ }
+ }
+ WcsTask modTask = new WcsTask()
+ {
+ TaskNo = _taskService.GetTaskCode(),
+ TaskType = TaskTypeEnum.Move,
+ Type = PLCTypeEnum.ShuttleCar,
+ StartLocate = carXYZ,
+ EndLocate = endLocate3,
+ PalletNo = "",
+ Status = TaskStatusEnum.Wait,
+ Levels = 999,
+ Origin = "WCS",
+ CarIp = item.CarPlcIp
+ };
+ _db.Insertable(modTask).ExecuteCommand();
+ HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ //绉诲姩灏忚溅
+ var carTaskYC = new WcsCarTasks()
+ {
+ TaskNo = modTask.TaskNo,
+ PreId = "",
+ ExecutionPath = executionPath3,
+ Path = path3,
+ CarNo = item.CarPlcIp,
+ Status = TaskStatusEnum.Wait
+ };
+ var idLong = _db.Insertable(carTaskYC).ExecuteReturnSnowflakeId();
+ preId3 += idLong + ";";
+ }
+ }
+
+ #endregion
+
+ #region 鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔� 4
+
+ //鑾峰彇绛夊緟鎴栨鍦ㄦ墽琛岀殑浠诲姟涓寘鍚綋鍓嶈妭鐐圭殑灏忚溅浠诲姟锛屼笉浼氭湁澶浠诲姟锛屽悓灞傛湁鍑犱釜灏忚溅鏈�澶氭湁鍑犱釜浠诲姟
+ var taskListTask4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo!=assignCar.CarPlcIp).GroupBy(m=>m.TaskNo).Select(m=>m.TaskNo).ToList();
+ var taskList4 = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && (m.Status == TaskStatusEnum.Wait || m.Status == TaskStatusEnum.Doing) && m.CarNo != assignCar.CarPlcIp).ToList();
+ var preId4 = "";//鍓嶇疆浠诲姟Id
+ var str4 = "";//鎵�鏈夊凡鍒嗛厤鎴栨墽琛岀殑浠诲姟鍏ㄨ矾寰勪箣鍜�
+
+ foreach (var item in taskList4)
+ {
+ str4 += item.Path;
+ }
+ //鍒ゆ柇鐜版湁浠诲姟涓渶缁堣妭鐐规槸鍚﹀湪褰撳墠鍒嗛厤璺緞涓紝濡傛湁 娣诲姞绉昏蛋灏忚溅浠诲姟骞跺姞鍏ュ墠缃换鍔�
+ foreach (var item in taskListTask4)
+ {
+ var lastTask = taskList4.Where(m => m.TaskNo == item ).OrderBy(m=>m.CreateTime).LastOrDefault();
+ if (lastTask == null)
+ {
+ continue;
+ }
+ var lastPathList = lastTask.ExecutionPath.Split(';');
+ // a;b;c; 鏈�鍚庝竴涓綅鏄�溾�濓紝鎵�浠astPathList.Length - 2
+ var lastPath = lastPathList[lastPathList.Length - 2];
+ var lastPath2 = lastPath.Substring(0,6);
+
+ //濡傛灉姝ゆ鍒嗛厤璺緞鍖呭惈浠诲姟涓渶缁堣妭鐐硅矾寰勶紝娣诲姞绉昏蛋灏忚溅
+ if (path.Contains(lastPath2))
+ {
+
+ var endLocate = "";
+ var executionPath4 = "";
+ var path4 = "";
+ var datas4 = new List<CarModel>();
+ //鏌ユ壘鐩爣浣嶇疆
+ while (endLocate == "" || datas4.Count == 0 || datas4 == null)
+ {
+ endLocate = FourWayCarUtil.GetCarEndLocation(lastPath, str4+path);
+ var data4 = FourWayCarUtil.GetCarPath(lastPath, endLocate);
+ datas4 = FourWayCarUtil.GetCarPathUp(data4, 0);
+ }
+ foreach (var itemPath in datas4)
+ {
+ var pathXYZ = itemPath.X.ToString().PadLeft(2, '0') + itemPath.Y.ToString().PadLeft(2, '0') + itemPath.Z.ToString().PadLeft(2, '0') + itemPath.NodeCom.ToString();
+
+ path4 += pathXYZ + ";";
+ if (itemPath.IsSendPlc)
+ {
+ executionPath4 += pathXYZ + ";";
+ }
+ }
+ WcsTask modTask = new WcsTask()
+ {
+ TaskNo = _taskService.GetTaskCode(),
+ TaskType = TaskTypeEnum.Move,
+ Type = PLCTypeEnum.ShuttleCar,
+ StartLocate = lastPath,
+ EndLocate = endLocate,
+ PalletNo = "",
+ Status = TaskStatusEnum.Wait,
+ Levels = 999,
+ Origin = "WCS",
+ CarIp = lastTask.CarNo
+ };
+ _db.Insertable(modTask).ExecuteCommand();
+ HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ //绉诲姩灏忚溅
+ var carTaskYC = new WcsCarTasks()
+ {
+ TaskNo = modTask.TaskNo,
+ PreId = "",
+ ExecutionPath = executionPath4,
+ Path = path4,
+ CarNo = lastTask.CarNo,
+ Status = TaskStatusEnum.Wait
+ };
+ var idLong = _db.Insertable(carTaskYC).ExecuteReturnSnowflakeId();
+ preId4 += idLong + ";";
+ }
+ }
+
+ #endregion
+
+ #region 鎻掑叆浠诲姟鏁版嵁 鏀瑰彉浠诲姟鐘舵��
+
+ // 鎻掑叆鍥涘悜杞︿换鍔¤〃
+ var carTask1 = new WcsCarTasks()
+ {
+ TaskNo = waitTask.TaskNo,
+ PreId = preId1 + preId3 + preId4,
+ ExecutionPath = executionPath1,
+ Path = path,
+ CarNo = assignCar.CarPlcIp,
+ Status = TaskStatusEnum.Wait
+ };
+ _db.Insertable(carTask1).ExecuteCommand();
+ if (!string.IsNullOrWhiteSpace(executionPath1) && isOk == "2")
+ {
+ // 鎻掑叆鍥涘悜杞︿换鍔¤〃
+ var carTask2 = new WcsCarTasks()
+ {
+ TaskNo = waitTask.TaskNo,
+ PreId = "",
+ ExecutionPath = executionPath2,
+ Path = path,
+ CarNo = assignCar.CarPlcIp,
+ Status = TaskStatusEnum.Wait
+ };
+ _db.Insertable(carTask2).ExecuteCommand();
+ }
+ waitTask.CarIp = assignCar.CarPlcIp;
+ if (moveType == 1)
+ {
+ // 鏀瑰彉鎬讳换鍔¤〃鐘舵��
+ waitTask.Status = TaskStatusEnum.Doing;
+ waitTask.UpdateTime = DateTime.Now;
+ }
+ _db.Updateable(waitTask).ExecuteCommand();
+ HubUtil.PublicTask(waitTask.Adapt<WcsTaskOutput>());
+
+ return true;
+ #endregion
+ }
+
+
/// <summary>
/// 鑾峰彇灏忚溅璺緞
/// </summary>
/// <param name="startLocation">璧峰浣嶇疆</param>
/// <param name="endLocation">鐩爣浣嶇疆</param>
- /// <param name="moveType">绉诲姩绫诲瀷 0:绉诲姩 1:鍙栬揣 2:鏀捐揣</param>
/// <param name="isLoad">鏄惁杞借揣0锛氭湭杞借揣 1锛氬凡杞借揣</param>
/// <returns></returns>
- public static List<CarModel> GetCarPath(string startLocation, string endLocation, int moveType, string isLoad = "0")
+ public static List<CarModel> GetCarPath(string startLocation, string endLocation, string isLoad = "0")
{
if (string.IsNullOrEmpty(startLocation) || string.IsNullOrEmpty(endLocation))
{
@@ -83,14 +504,14 @@
if (current.Equals(end))
{
- Log.Error(ReconstructPath(cameFrom, current).ToString());
+ Log.Error("灏忚溅璺緞鍒嗛厤锛�" +ReconstructPath(cameFrom, current).ToString());
return ReconstructPath(cameFrom, current);
}
// 瀛樺偍灏忚溅鍙繍琛岀殑鏂瑰悜
var validDirections = new List<CarModel>();
var currentLocation = locationModels.FirstOrDefault(m => m.Row == current.X && m.Column == current.Y);
- if (currentLocation.Make == "0")
+ if (currentLocation.Make == "0"|| currentLocation.Make == "2")
{
// 涓婚�氶亾
validDirections.Add(new CarModel() { X = 1, Y = 0 }); // 鍙�
@@ -174,26 +595,10 @@
if (!gScore.ContainsKey(neighbor) || tentativeGScore < gScore[neighbor])
{
neighbor.IsSendPlc = false;
- // 琛ュ厖鍙傛暟
- if (neighbor.Equals(end))
- {
- neighbor.NodeCom = moveType;
- neighbor.IsSendPlc = true;
- }
- else if (currentModel.Make != locationModel.Make)
- {
- if (current.X == neighbor.X)
- {
- neighbor.NodeCom = 3;
- }
- else if (current.Y == neighbor.Y)
- {
- neighbor.NodeCom = 2;
- }
- neighbor.IsSendPlc = true;
- }
-
+ neighbor.Make = locationModel.Make;
+ current.Make = currentModel.Make;
+
// 鏇存柊瀹為檯璺濈涓庨浼拌窛绂�
cameFrom[neighbor] = current;
gScore[neighbor] = tentativeGScore;
@@ -219,156 +624,25 @@
}
/// <summary>
- /// 鑾峰彇灏忚溅绉诲姩鐨勭洰鏍囦綅缃�
+ /// 鑾峰彇鎬讳换鍔¤〃涓嬪彂ID涓婚敭
/// </summary>
- /// <param name="startLocation">璧峰浣嶇疆</param>
- /// <param name="noPathStr">涓嶈兘瀛樻斁鐨勫偍浣嶅瓧绗︿覆</param>
/// <returns></returns>
- public static string GetCarEndLocation(string startLocation,string noPathStr)
+ public static int GetTaskId()
{
- if (string.IsNullOrEmpty(startLocation))
+ var list = _db.Queryable<WcsTask>().ToList();
+ var maxNo = list.Max(m => m.TaskId);
+
+ if (maxNo != null && maxNo > 0)
{
- return null;
- }
-
- // 璧峰浣嶇疆
- CarModel start = new CarModel()
- {
- X = int.Parse(startLocation.Substring(0, 2)),
- Y = int.Parse(startLocation.Substring(2, 2)),
- Z = int.Parse(startLocation.Substring(4, 2)),
- NodeCom = 0
- };
-
- // 鑾峰彇鍌ㄤ綅琛ㄤ俊鎭瓨鍌ㄥ埌闆嗗悎閲�
- var layer = int.Parse(startLocation.Substring(4, 2));
-
- // 鑾峰彇褰撳墠灞傚偍浣嶄俊鎭�
- var locationModels = _db.Queryable<WcsStorageLocat>()
- .Where(m => m.WareHouseNo == "W01" && m.Layer == layer && m.IsDelete == false)
- .ToList();
-
- #region MyRegion
-
- var list = locationModels.Where(m => !noPathStr.Contains(m.LocatNo)).OrderBy(m=> Math.Abs(start.X - m.Row) + Math.Abs(start.Y - m.Column)).ToList();
- var locateStr = "";
- foreach (var item in list)
- {
- // 鍌ㄤ綅鐘舵�佷负鎹熷潖涓嶅彲閫氳 鍌ㄤ綅鐘舵�佷负灞忚斀涓哄彲閫氳涓嶅彲瀛樺偍鎵樼洏
- if (item.Flag == "2")
- {
- continue;
- }
- locateStr = item.LocatNo;
- break;
- }
- return locateStr;
- #endregion
-
- #region 浣跨敤绠楁硶璁$畻灏忚溅鍙Щ鍔ㄧ殑鐩爣璺緞
- //try
- //{
-
- // // 瀹氫箟鍏抽棴鑺傜偣瀛楀吀
- // var closeSet = new Dictionary<CarModel, CarModel>();
-
- // // 瀛樺偍灏忚溅鍙繍琛岀殑鏂瑰悜
- // var validDirections = new List<CarModel>();
- // var currentLocation = locationModels.FirstOrDefault(m => m.Row == start.X && m.Column == start.Y);
- // if (currentLocation.Make == "0")
- // {
- // // 涓婚�氶亾
- // validDirections.Add(new CarModel() { X = 1, Y = 0 }); // 鍙�
- // validDirections.Add(new CarModel() { X = -1, Y = 0 }); // 宸�
- // validDirections.Add(new CarModel() { X = 0, Y = 1 }); // 涓�
- // validDirections.Add(new CarModel() { X = 0, Y = -1 }); // 涓�
- // }
-
- // if (currentLocation.Make == "1")
- // {
- // // 瀛愰�氶亾
- // // 鍏堟媶鍒嗗嚭鍙�
- // var outNode = currentLocation.AisleOne;
- // if (string.IsNullOrEmpty(outNode))
- // {
- // throw new Exception("褰撳墠浣嶇疆娌℃湁缁存姢鍑哄彛锛�");
- // }
- // int outX = int.Parse(outNode.Substring(0, 2));
- // int outY = int.Parse(outNode.Substring(2, 2));
- // if (start.X == outX)
- // {
- // validDirections.Add(new CarModel() { X = 0, Y = 1 }); // 涓�
- // validDirections.Add(new CarModel() { X = 0, Y = -1 }); // 涓�
-
- // }
- // else
- // {
- // validDirections.Add(new CarModel() { X = 1, Y = 0 }); // 鍙�
- // validDirections.Add(new CarModel() { X = -1, Y = 0 }); // 宸�
- // }
- // }
-
- // foreach (var dir in validDirections)
- // {
- // CarModel neighbor = new CarModel() { X = start.X + dir.X, Y = start.Y + dir.Y, Z = layer };
-
- // // 楠岃瘉涓嬩竴鑺傜偣浣嶇疆鏄惁鍙�氳骞朵笖鍒ゆ柇鏄惁琚叾浠栧皬杞﹀崰鐢�
-
-
- // // 鍒ゆ柇涓嬩竴鑺傜偣鏄惁鍏抽棴
- // if (closeSet.ContainsKey(neighbor))
- // {
- // closeSet[neighbor] = neighbor;
- // }
-
- // // 褰撳墠鑺傜偣
- // var currentModel = locationModels.FirstOrDefault(it => it.Row == start.X && it.Column == start.Y);
- // // 涓嬩竴鑺傜偣
- // var locationModel = locationModels.FirstOrDefault(it => it.Row == neighbor.X && it.Column == neighbor.Y);
-
- // // 涓嶅瓨鍦ㄦ浣嶇疆淇℃伅
- // if (locationModel == null)
- // {
- // closeSet[neighbor] = neighbor;
- // continue;
- // }
- // // 鍌ㄤ綅鐘舵�佷负鎹熷潖涓嶅彲閫氳 鍌ㄤ綅鐘舵�佷负灞忚斀涓哄彲閫氳涓嶅彲瀛樺偍鎵樼洏
- // if (locationModel.Flag == "2")
- // {
- // closeSet[neighbor] = neighbor;
- // continue;
- // }
-
- // }
-
-
-
- //}
- //catch (Exception)
- //{
- // throw;
- //}
-
- //return null;
- #endregion
- }
-
- public static int GetTaskNo()
- {
- var list = _db.Queryable<WcsCarTasks>().ToList();
- var maxNo = list.Max(m => m.CarTaskNo);
-
- if (maxNo!=null && maxNo > 0)
- {
- if (maxNo++ > 65535)
+ if (maxNo++ > 99999999)
{
return 1;
}
-
+
return (int)maxNo++;
}
+
return 1;
-
}
/// <summary>
@@ -427,6 +701,11 @@
/// </summary>
public bool IsSendPlc { get; set; }
+ /// <summary>
+ /// 0閫氶亾 1 鍌ㄤ綅
+ /// </summary>
+ public string Make { get; set; }
+
public int CompareTo(CarModel other)
{
if (other == null)
--
Gitblit v1.8.0