From 4683c8a19e593e8f999c6f1a145e0bb73eb20dea Mon Sep 17 00:00:00 2001
From: chengsc <Demo@DESKTOP-CPA90BF>
Date: 星期四, 12 九月 2024 08:17:12 +0800
Subject: [PATCH] 解决冲突
---
Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs | 21 +
Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs | 66 +++++
Admin.NET/WCS.Application/Entity/WcsTask.cs | 2
Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs | 2
Web/src/api/wcs/wcsPosition.ts | 62 +++--
Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs | 3
Admin.NET/WCS.Application/PLC/PLCService.cs | 321 ++++++++++++++++++++++++++---
Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs | 3
Web/src/views/wcs/wcsTask/component/editDialog.vue | 31 ++
Web/src/views/device/sortPallet/index.vue | 8
Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs | 13
Admin.NET/WCS.Application/Enum/TaskEnum.cs | 18 +
Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs | 2
Admin.NET/WCS.Application/PLC/PLCCommon.cs | 20
Admin.NET/WCS.Application/PLC/PLCTaskAction.cs | 14
Admin.NET/WCS.Application/Entity/WcsCheckTask.cs | 18 +
Web/src/views/device/wcsOderTask/component/editDialog.vue | 2
Admin.NET/WCS.Application/Model/TaskRequest.cs | 2
Web/src/views/wcs/wcsPosition/index.vue | 24 +
19 files changed, 530 insertions(+), 102 deletions(-)
diff --git a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs
index 9b0970e..4e618f3 100644
--- a/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs
+++ b/Admin.NET/WCS.Application/Entity/WcsCheckTask.cs
@@ -15,11 +15,23 @@
public class WcsCheckTask : EntityBaseData
{
/// <summary>
+ /// 浠诲姟鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "TaskNo", ColumnDescription = "浠诲姟鍙�", Length = 20)]
+ public string? TaskNo { get; set; }
+
+ /// <summary>
/// WMS涓嬪彂鍗曞彿
/// </summary>
[SugarColumn(ColumnName = "OrderNo", ColumnDescription = "WMS涓嬪彂鍗曞彿", Length = 20)]
public string? OrderNo { get; set; }
-
+
+ /// <summary>
+ /// 鏈哄櫒浜虹被鍨�
+ /// </summary>
+ [SugarColumn(ColumnName = "RoboatType", ColumnDescription = "鏈哄櫒浜虹被鍨�", Length = 5)]
+ public string? RoboatType { get; set; }
+
/// <summary>
/// 鏈哄櫒浜虹紪鍙�
/// </summary>
@@ -29,8 +41,8 @@
/// <summary>
/// 鍒嗘嫞绾跨紪鍙�
/// </summary>
- [SugarColumn(ColumnName = "LineNO", ColumnDescription = "鍒嗘嫞绾跨紪鍙�", Length = 5)]
- public string? LineNO { get; set; }
+ [SugarColumn(ColumnName = "LineNo", ColumnDescription = "鍒嗘嫞绾跨紪鍙�", Length = 5)]
+ public string? LineNo { get; set; }
/// <summary>
/// 鐮佺洏宸ヤ綅鍙�
diff --git a/Admin.NET/WCS.Application/Entity/WcsTask.cs b/Admin.NET/WCS.Application/Entity/WcsTask.cs
index 8119603..4a3b69b 100644
--- a/Admin.NET/WCS.Application/Entity/WcsTask.cs
+++ b/Admin.NET/WCS.Application/Entity/WcsTask.cs
@@ -113,7 +113,7 @@
/// 鎷h揣鏂瑰紡
/// </summary>
[SugarColumn(ColumnName = "UnstackingMode", ColumnDescription = "鎷h揣鏂瑰紡", Length = 10)]
- public string? UnstackingMode { get; set; }
+ public UnstackingModeEnum? UnstackingMode { get; set; }
/// <summary>
/// 鍙栨秷鏃堕棿
diff --git a/Admin.NET/WCS.Application/Enum/TaskEnum.cs b/Admin.NET/WCS.Application/Enum/TaskEnum.cs
index d35bae5..c59998b 100644
--- a/Admin.NET/WCS.Application/Enum/TaskEnum.cs
+++ b/Admin.NET/WCS.Application/Enum/TaskEnum.cs
@@ -85,4 +85,22 @@
/// </summary>
[Description("鍥炰紶澶辫触")]
Fail = 1
+}
+/// <summary>
+/// 鎷h揣鏂瑰紡
+/// </summary>
+[Description("鎷h揣鏂瑰紡")]
+public enum UnstackingModeEnum
+{
+ /// <summary>
+ /// 鏈哄櫒鎷嗘墭鍑�
+ /// </summary>
+ [Description("鏈哄櫒鎷嗘墭鍑�")]
+ Machine = 0,
+
+ /// <summary>
+ /// 浜哄伐鎷h揣鍑�
+ /// </summary>
+ [Description("浜哄伐鎷h揣鍑�")]
+ Artificial = 1,
}
\ No newline at end of file
diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs
index 42b047f..7587e00 100644
--- a/Admin.NET/WCS.Application/Model/TaskRequest.cs
+++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -4,7 +4,7 @@
{
public string TaskNo { get; set; } // 浠诲姟鍙�
public string PalletNo { get; set; } // 鎵樼洏鍙�
- public string TaskType { get; set; } // 浠诲姟绫诲瀷
+ public TaskTypeEnum TaskType { get; set; } // 浠诲姟绫诲瀷
public TaskStatusEnum TaskStatus { get; set; } // 浠诲姟鐘舵�� 0 绛夊緟鎵ц 1 姝e湪鎵ц 2 鎵ц瀹屾垚 3 寮傚父缁撴潫 4 浠诲姟鍙栨秷
}
public class ResponseTasks
diff --git a/Admin.NET/WCS.Application/PLC/PLCCommon.cs b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
index 6aca413..8b64865 100644
--- a/Admin.NET/WCS.Application/PLC/PLCCommon.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
@@ -1,4 +1,5 @@
-锘縰sing Microsoft.AspNetCore.SignalR;
+锘縰sing Elastic.Clients.Elasticsearch.Tasks;
+using Microsoft.AspNetCore.SignalR;
using RazorEngine.Compilation.ImpromptuInterface.Dynamic;
using System;
using System.Collections.Generic;
@@ -215,33 +216,32 @@
/// </summary>
/// <param name="startStation"></param>
/// <returns></returns>
- public static PlcTaskInfo GetPlcIp(string startStation)
+ public static PLCUtil GetPlcIp(string startStation)
{
- PlcTaskInfo taskInfo = new PlcTaskInfo();
-
+ string strIp = "";
var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065" };
var conveyList2 = new List<string>() { "252", "254", "260", "262", "272", "272", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
var conveyList3 = new List<string>() { "401", "402", "405", "406", "409", "410", "413", "414", "417", "418", "421", "422", "425", "426", "429", "430", "433", "434", "437", "438" };
if (conveyList1.Contains(startStation))
{
- taskInfo.Ip = "10.18.51.110";
+ strIp = "10.18.51.110";
}
else if (conveyList2.Contains(startStation))
{
- taskInfo.Ip = "10.18.51.120";
+ strIp = "10.18.51.120";
}
else if (conveyList3.Contains(startStation))
{
- taskInfo.Ip = "10.18.51.130";
+ strIp = "10.18.51.130";
}
else
{
- throw new Exception("宸ヤ綅鏈煡璇㈠埌");
+ throw Oops.Bah("宸ヤ綅鏈煡璇㈠埌");
}
-
- return taskInfo;
+ var plcConveyorConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == strIp);
+ return plcConveyorConn;
}
/// <summary>
diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index ed2d3b6..d1253f1 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -4,10 +4,12 @@
using Furion.Logging;
using IoTClient;
using Microsoft.AspNetCore.SignalR;
+using Qiniu.Storage;
using RazorEngine.Compilation.ImpromptuInterface.Dynamic;
using SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models;
using System;
using System.Data;
+using System.Reflection.Emit;
namespace WCS.Application;
public static class PLCService
@@ -53,7 +55,7 @@
/// 璺烘満涓氬姟澶勭悊
/// </summary>
/// <param name="modDevice"></param>
- private static async void StackingMachine(WcsDeviceDto modDevice)
+ private static void StackingMachine(WcsDeviceDto modDevice)
{
var plcConn = modDevice.PLCUtil;
switch (modDevice.Value.ToString())
@@ -62,8 +64,8 @@
// 璺烘満绌洪棽锛岃幏鍙栧嚭搴撲换鍔°�佺Щ搴撲换鍔�
{
// 鑾峰彇浠诲姟淇℃伅
- var modTask = _db.Queryable<WcsTask>().OrderBy(m=>m.CreateTime).OrderBy(m=>m.Levels,OrderByType.Desc)
- .First(s => s.Status == TaskStatusEnum.Wait && (s.TaskType == TaskTypeEnum.Out || s.TaskType == TaskTypeEnum.Move)
+ var modTask = _db.Queryable<WcsTask>().OrderBy(m => m.CreateTime).OrderBy(m => m.Levels, OrderByType.Desc)
+ .First(s => s.Status == TaskStatusEnum.Wait && (s.TaskType == TaskTypeEnum.Out || s.TaskType == TaskTypeEnum.Move)
&& s.StartRoadway == modDevice.StationNum);
if (modTask == null)
{
@@ -71,11 +73,11 @@
}
// 鏍规嵁鐩爣鍦板潃鍜屽贩閬撹幏鍙栨斁璐у伐浣嶅搴旂殑鎺掑垪灞�
- PlcTaskInfo taskInfo = PLCCommon.GetCTaskInfo(modTask.EndLocate, modTask.TaskType.ToString(),
+ PlcTaskInfo taskInfo = PLCCommon.GetCTaskInfo(modTask.EndLocate, modTask.TaskType.ToString(),
modTask.StartRoadway, modTask.EndRoadway);
// 鐩爣宸ヤ綅涓嶄负null锛岄渶鍏堝垽鏂斁璐у伐浣嶆槸鍚︾┖闂�
- if (!string.IsNullOrEmpty(taskInfo.EndStation))
+ if (!string.IsNullOrEmpty(taskInfo.EndStation))
{
// 鎵撳紑瀵瑰簲鐨勮緭閫佺嚎杩炴帴
var plcConveyorConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == taskInfo.Ip);
@@ -94,12 +96,12 @@
break;
}
}
- else
+ else
{
break;
}
}
- else
+ else
{
break;
}
@@ -143,7 +145,7 @@
.SetColumns(s => s.Status == TaskStatusEnum.Doing)
.Where(s => s.Id == modTask.Id)
.ExecuteCommand();
-
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
WcsTaskMonitor modInsertTaskMonitor;
if (string.IsNullOrEmpty(taskInfo.EndStation))
{
@@ -160,7 +162,7 @@
EndLocat = modTask.EndLocate,
};
}
- else
+ else
{
// 鍑哄簱浠诲姟 璺ㄥ贩閬撶Щ搴�
modInsertTaskMonitor = new WcsTaskMonitor()
@@ -185,7 +187,7 @@
}
}
break;
- case "840":
+ case "840":
// 鍙栬揣瀹屾垚
{
// 鑾峰彇璺烘満鐐逛綅閰嶇疆
@@ -194,11 +196,11 @@
var modPosEndStation = modDevice.listStation.FirstOrDefault(m => m.Text == "鐩殑宸ヤ綅");
var (endStationRes, endStation) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosTask.PlcPos);
- if (res.IsSucceed)
+ if (res.IsSucceed)
{
// 鑾峰彇浠诲姟淇℃伅
string tasknoVal = val.ToString();
- var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == true);
+ var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == true);
if (modTask == null)
{
Log.Error(string.Format("PLC鎺у埗瀛�840:鏈壘鍒板搴旂殑浠诲姟銆�"));
@@ -209,7 +211,7 @@
{
TaskNo = modTask.TaskNo,
PlcId = modDevice.Id,
- PlcName = modDevice.Text,
+ PlcName = modDevice.Text,
PalletNo = modTask.PalletNo,
Status = TaskStatusEnum.Complete,
StartLocat = modTask.StartLocate,
@@ -220,12 +222,11 @@
// 鑾峰彇璺烘満璧峰宸ヤ綅鐐逛綅閰嶇疆,璇诲彇璧峰宸ヤ綅
var modPosStartStation = modDevice.listStation.FirstOrDefault(m => m.Text == "璧峰宸ヤ綅");
var (startStationRes, startStationVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosStartStation.PlcPos);
- if (startStationRes.IsSucceed)
+ if (startStationRes.IsSucceed)
{
// 鏍规嵁宸ヤ綅鍙疯幏鍙栧搴旂殑杈撻�佺嚎IP
- PlcTaskInfo taskInfo = PLCCommon.GetPlcIp(startStationVal);
- var plcConveyorConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == taskInfo.Ip);
- if (plcConveyorConn.Connected)
+ var plcConveyorConn = PLCCommon.GetPlcIp(startStationVal);
+ if (plcConveyorConn.Connected)
{
// 鍚戝彇璐у伐浣嶅啓鍏ユ祦绋嬪瓧640 鍙栬揣宸插畬鎴�
var ConveyorMod = PLCTaskAction.plcDevices.First(m => m.StationNum == startStationVal
@@ -241,7 +242,7 @@
StartLocat = startStationVal,
EndLocat = modTask.EndLocate // 鐩爣鍌ㄤ綅鍦板潃
};
- if (!retc.IsSucceed)
+ if (!retc.IsSucceed)
{
modcTaskMonitor.InteractiveMsg = string.Format("杈撻�佺嚎鍙栬揣宸ヤ綅锛歿0},鍐欏叆鍙栬揣瀹屾垚640澶辫触绛夊緟鍦ㄦ鍐欏叆", startStationVal);
// 鎻掑叆浜や簰鏃ュ織
@@ -267,7 +268,7 @@
modInsertTaskMonitor.InteractiveMsg = string.Format("杈撻�佺嚎鍙栬揣宸ヤ綅锛歿0}璺烘満鍙栬揣瀹屾垚850鎴愬姛", startStationVal);
modInsertTaskMonitor.EndLocat = modTask.EndLocate; // 鐩爣鍌ㄤ綅鍦板潃
- // 鎻掑叆浜や簰鏃ュ織
+ // 鎻掑叆浜や簰鏃ュ織
_db.Insertable(modInsertTaskMonitor).ExecuteCommand();
//涓嬪彂浠诲姟鏃ュ織
_taskLogHubContext.Clients.All.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
@@ -286,7 +287,7 @@
modInsertTaskMonitor.InteractiveMsg = string.Format("鍌ㄤ綅鍦板潃锛歿0}鍙栬揣瀹屾垚", modTask.StartLocate);
modInsertTaskMonitor.EndLocat = endStation; // 鏀捐揣宸ヤ綅
}
- else
+ else
{
// 鍐欏叆娴佺▼鎺у埗瀛�
var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "850");
@@ -329,7 +330,7 @@
case TaskTypeEnum.In:
{
var res870 = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870");
- if (!res870.IsSucceed)
+ if (!res870.IsSucceed)
{
Log.Error(string.Format("璺烘満鎺у埗瀛�860鍐欏叆870澶辫触!"));
break;
@@ -337,34 +338,172 @@
// 鏀瑰彉浠诲姟鐘舵��
modTask.Status = TaskStatusEnum.Complete;
- modTask.FinishDate = DateTime.Now;
+ modTask.FinishDate = DateTime.Now;
_db.Updateable(modTask).ExecuteCommand();
-
- if (modTask.Origin == "WMS")
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ var modcTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ InteractiveMsg = $"浠诲姟瀹屾垚"
+ };
+ if (modTask.Origin == "WMS")
{
// 鍙嶉WMS
var requestMode = new TaskRequest()
{
TaskNo = modTask.TaskNo,
PalletNo = modTask.PalletNo,
- TaskType = "1",
+ TaskType = TaskTypeEnum.In,
TaskStatus = TaskStatusEnum.Complete
};
-
- // 姝ゅ娣诲姞璋冪敤WMS鎺ュ彛 liudl
+ HttpService httpService = new HttpService();
+ var modResponseTask = httpService.RequestTask(requestMode).Result;
+ if (modResponseTask.StatusCode == "0")
+ {
+ modcTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+ }
}
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modcTaskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
// 姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
}
break;
case TaskTypeEnum.Out: // 鍑哄簱浠诲姟
- {
-
+ {
+ string roadway = modTask.StartRoadway;
+ // 浠庡嚭搴撲换鍔¤幏鍙栨斁璐у伐浣�
+ string outCode = modTask.EndLocate;
+ // 鏍规嵁宸ヤ綅鍙疯幏鍙栧搴旂殑杈撻�佺嚎IP
+ var plcConveyorConn = PLCCommon.GetPlcIp(outCode);
+ if (plcConveyorConn.Connected)
+ {
+ // 鏍规嵁鐩爣鍦板潃鍜屽贩閬撹幏鍙栨斁璐у伐浣嶅搴旂殑鎺掑垪灞�
+ PlcTaskInfo taskInfo = PLCCommon.GetCTaskInfo(modTask.EndLocate, modTask.TaskType.ToString(),
+ modTask.StartRoadway, modTask.EndRoadway);
+ // 鏍规嵁宸ヤ綅鍙疯幏鍙栧伐浣嶄俊鎭�
+ var wcsDevice = PLCTaskAction.plcDevices.First(s => s.PlcId == plcConveyorConn.PlcId && s.Level == DeviceLevelEnum.Station && s.StationNum == taskInfo.EndStation);
+ // 璇诲彇褰撳墠宸ヤ綅鍚勫亸绉婚噺鍊�
+ var listPos = PLCTaskAction.plcPositions.Where(s => s.DeviceId == wcsDevice.Id).ToList();
+
+ // 缁橮LC鍐欏叆浠诲姟鏁版嵁
+ var listResult = new List<Result>();
+ //浠诲姟鍙�
+ var modPosTask = listPos.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ //浠诲姟绫诲瀷
+ var modPosTaskType = listPos.FirstOrDefault(s => s.Text == "浠诲姟绫诲瀷");
+ listResult.Add(plcConn.SetPlcDBValue(modPosTaskType.PosType, modDevice.DbNumber, modPosTaskType.PlcPos, ((int)modTask.TaskType).ToString()));
+ //鎵樼洏鍙�
+ var modPosPalletNo = listPos.FirstOrDefault(s => s.Text == "鎵樼洏鐮�");
+ listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ //璧峰宸ヤ綅
+ var modPosLocatNo = listPos.FirstOrDefault(s => s.Text == "璧峰宸ヤ綅");
+ listResult.Add(plcConn.SetPlcDBValue(modPosLocatNo.PosType, modDevice.DbNumber, modPosLocatNo.PlcPos, taskInfo.EndStation));
+ // 鐩爣宸ヤ綅
+ var modPosEndLocatNo = listPos.FirstOrDefault(s => s.Text == "鐩殑宸ヤ綅");
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndLocatNo.PosType, modDevice.DbNumber, modPosEndLocatNo.PlcPos, outCode));
+
+ // 鏄惁鍐欏叆鎴愬姛
+ if (listResult.All(s => s.IsSucceed))
+ {
+ var result = plcConveyorConn.SetPlcDBValue(wcsDevice.PosType, wcsDevice.DbNumber, wcsDevice.WcsPos, "740");
+
+ if (result.IsSucceed)
+ {
+ // 鍐欏叆璺烘満wcs鎺у埗瀛� 杩斿洖鍨涙満鎵ц瀹屾垚
+ result = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "870");
+ if (result.IsSucceed)
+ {
+ var modcTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = wcsDevice.Id,
+ PlcName = wcsDevice.Text,
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = taskInfo.EndStation,
+ EndLocat = outCode,
+ InteractiveMsg = $"鍐欏叆鎸囦护锛氭敹鍒拌泛鏈烘斁璐у畬鎴愶紱鏀捐揣{taskInfo.EndStation}宸ヤ綅===銆媨outCode}鍑哄簱鍙�"
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modcTaskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ break;
+ }
+ }
+ }
+ //姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
+ }
}
break;
case TaskTypeEnum.Move: // 绉诲簱浠诲姟
- {
-
+ {
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ var result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo);
+ if (!result.IsSucceed)
+ {
+ Log.Error($"{modDevice.Text}鍐欏叆浠诲姟鍙峰け璐�");
+ break;
+ }
+ result = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "30");
+ if (!result.IsSucceed)
+ {
+ Log.Error($"{modDevice.Text}鎺у埗瀛楀啓鍏�30澶辫触");
+ break;
+ }
+ // 鏀瑰彉浠诲姟鐘舵��
+ modTask.Status = TaskStatusEnum.Complete;
+ modTask.FinishDate = DateTime.Now;
+ _db.Updateable(modTask).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+
+ var modcTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modTask.StartLocate,
+ EndLocat = modTask.EndLocate,
+ InteractiveMsg = $"浠诲姟瀹屾垚"
+ };
+ if (modTask.Origin == "WMS")
+ {
+ // 鍙嶉WMS
+ var requestMode = new TaskRequest()
+ {
+ TaskNo = modTask.TaskNo,
+ PalletNo = modTask.PalletNo,
+ TaskType = TaskTypeEnum.Move,
+ TaskStatus = TaskStatusEnum.Complete
+ };
+ HttpService httpService = new HttpService();
+ var modResponseTask = httpService.RequestTask(requestMode).Result;
+ if (modResponseTask.StatusCode == "0")
+ {
+ modcTaskMonitor.InteractiveMsg = "浠诲姟瀹屾垚锛岃繑鍥炵粰WMS浠诲姟瀹屾垚";
+ //淇敼鍌ㄤ綅淇℃伅 浠诲姟绫诲瀷 鎵ц鐘舵�� 璧峰浣嶇疆 鐩爣浣嶇疆
+
+ }
+ }
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modcTaskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+
+ // 姝ゅ娣诲姞涓嶇┖璺戜笟鍔�
}
break;
default: break;
@@ -379,12 +518,128 @@
break;
case "843":
{
-
+ //绌哄彇璐у紓甯�
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+ if (!result.IsSucceed)
+ break;
+ string taskNo = Convert.ToString(TaskNo);
+ var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing);
+ if (modTask == null)
+ {
+ Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}");
+ break;
+ }
+ var res = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "844");
+ if (!res.IsSucceed)
+ break;
+ modTask.Status = TaskStatusEnum.Exception;
+ _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿绌哄彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}");
+ var modTaskRequest = modTask.Adapt<TaskRequest>();
+ HttpService httpService = new HttpService();
+ var modResponseTask = httpService.RequestEmptyException(modTaskRequest).Result;
+ if (modResponseTask.StatusCode == "0")
+ {
+ //璇锋眰鎴愬姛
+ modTask.IsSuccess = TaskSuccessEnum.Success;
+ _db.Updateable(modTask).UpdateColumns(s => s.IsSuccess).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ }
+ else
+ {
+ //璇锋眰澶辫触
+ modTask.IsSuccess = TaskSuccessEnum.Fail;
+ modTask.Information = modResponseTask.Message;
+ _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand();
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ }
}
break;
case "861":
{
+ //婊℃斁璐у紓甯�
+ var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�");
+ var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鍙�");
+ var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
+ if (!result.IsSucceed)
+ break;
+ string taskNo = Convert.ToString(TaskNo);
+ var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing);
+ if (modTask == null)
+ {
+ Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}");
+ break;
+ }
+ modTask.Status = TaskStatusEnum.Exception;
+ _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+ _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
+ Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿婊″彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}");
+ var modTaskRequest = modTask.Adapt<TaskRequest>();
+ HttpService httpService = new HttpService();
+ var modResponseTask = httpService.RequestFullException(modTaskRequest).Result;
+ if (modResponseTask.StatusCode == "0")
+ {
+ //淇敼浠诲姟涓烘鍦ㄦ墽琛�
+ modTask.Status = TaskStatusEnum.Doing;
+ _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand();
+ // 璧峰鎺掑垪灞�
+ var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鎺�");
+ var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鍒�");
+ var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣灞�");
+ // 鐩爣鏀捐揣宸ヤ綅
+ var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鎺�");
+ var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鍒�");
+ var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣灞�");
+ string endLocat = modResponseTask.TaskList.EndLocate;
+ string row = int.Parse(endLocat.Substring(0, 2)).ToString();
+ string column = int.Parse(endLocat.Substring(2, 2)).ToString();
+ string storey = int.Parse(endLocat.Substring(4, 2)).ToString();
+ // 缁橮LC鍐欏叆浠诲姟鏁版嵁
+ var listResult = new List<Result>();
+ // 浠诲姟鍙锋墭鐩樺彿
+ listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo));
+ listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo));
+ // 璧峰鎺掑垪灞�
+ listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2"));
+ listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100"));
+ listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1"));
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row));
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column));
+ listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey));
+ // 鏄惁鍐欏叆鎴愬姛
+ if (listResult.All(s => s.IsSucceed))
+ {
+ // 鍚戣泛鏈哄啓鍏ユ帶鍒舵祦绋嬪瓧
+ var res = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.WcsPos, "862");
+ var modcTaskMonitor = new WcsTaskMonitor()
+ {
+ TaskNo = modTask.TaskNo,
+ PlcId = modDevice.Id,
+ PlcName = modDevice.Text,
+ PalletNo = modTask.PalletNo,
+ Status = TaskStatusEnum.Complete,
+ StartLocat = modDevice.StationNum,
+ EndLocat = endLocat,
+ InteractiveMsg = $"鍐欏叆鎸囦护锛歿modDevice.StationNum}宸ヤ綅====銆�" + endLocat + "鍌ㄤ綅鍦板潃!"
+ };
+ // 鎻掑叆浜や簰鏃ュ織
+ _db.Insertable(modcTaskMonitor).ExecuteCommand();
+ //涓嬪彂浠诲姟鏃ュ織
+ _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+ }
+
+ }
+ //else
+ //{
+ // //璇锋眰澶辫触
+ // modTask.IsSuccess = TaskSuccessEnum.Fail;
+ // modTask.Information = modResponseTask.Message;
+ // _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand();
+ //}
}
break;
default:
@@ -900,5 +1155,5 @@
}
-
+
}
diff --git a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
index 4af0bf5..c66cde7 100644
--- a/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCTaskAction.cs
@@ -25,7 +25,7 @@
private static List<WcsPlc> listPlc = new List<WcsPlc>();
private static List<WcsDevice> listPlcDevice = new List<WcsDevice>();
- private static List<WcsPosition> listPlcStation = new List<WcsPosition>();
+ private static List<WcsPosition> listPlcPosition = new List<WcsPosition>();
private static List<WcsAlarmInfo> listAlarmInfo = new List<WcsAlarmInfo>();
private static List<PLCUtil> listPlcUtil = new List<PLCUtil>();
@@ -36,16 +36,14 @@
get { return listPlcUtil; }
}
// 浜や簰鐐归泦鍚�
- public static List<WcsDevice> plcDevices
+ public static List<WcsDevice> plcDevices
{
get { return listPlcDevice; }
}
- // 浜や簰鐐归泦鍚�
- public static List<WcsPosition> plcStation
+ public static List<WcsPosition> plcPositions
{
- get { return listPlcStation; }
+ get { return listPlcPosition; }
}
-
public static event EventHandler DeviceValueChangeEvent;
static PLCTaskAction()
{
@@ -64,7 +62,7 @@
cts.Cancel();
listPlc = _db.Queryable<WcsPlc>().Where(s => s.Type == PLCTypeEnum.StackingMachine || s.Type == PLCTypeEnum.ConveyorLine || s.Type == PLCTypeEnum.BoxConveyorLine).ToList();
listPlcDevice = _db.Queryable<WcsDevice>().ToList();
- listPlcStation = _db.Queryable<WcsPosition>().ToList();
+ listPlcPosition = _db.Queryable<WcsPosition>().ToList();
listAlarmInfo = _db.Queryable<WcsAlarmInfo>().ToList();
//绛夊緟鍑犵閽燂紝鎶婂凡鏈夌嚎绋嬪彇娑堟帀鍐嶈繛鎺�
//Thread.Sleep(5000);
@@ -156,7 +154,7 @@
dto.Value = value;
dto.Type = _modplc.Type;
dto.PLCUtil = modPlcUtil;
- dto.listStation = listPlcStation.Where(s => s.DeviceId == modDevice.Id).ToList();
+ dto.listStation = listPlcPosition.Where(s => s.DeviceId == modDevice.Id).ToList();
dto.listDevice = listDevice.Where(s => s.StationNum == modDevice.StationNum && s.Level == DeviceLevelEnum.Station).ToList();
//杩欓噷瑙﹀彂鍊煎彉鏇翠簨浠�
DeviceValueChangeEvent?.Invoke(dto, EventArgs.Empty);
diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs
index f9ec4c8..b478f73 100644
--- a/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs
+++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/Dto/WcsCheckTaskInput.cs
@@ -169,7 +169,7 @@
/// <summary>
/// 鍒嗘嫞绾跨紪鍙�
/// </summary>
- public string? LineNO { get; set; }
+ public string? LineNo { get; set; }
/// <summary>
/// 鐮佺洏宸ヤ綅鍙�
diff --git a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
index 5d9c864..2f85b2f 100644
--- a/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsCheckTask/WcsCheckTaskService.cs
@@ -45,7 +45,7 @@
.WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
u.OrderNo.Contains(input.SearchKey)
|| u.RoboatNo.Contains(input.SearchKey)
- || u.LineNO.Contains(input.SearchKey)
+ || u.LineNo.Contains(input.SearchKey)
|| u.Port.Contains(input.SearchKey)
|| u.LotNo.Contains(input.SearchKey)
|| u.SkuNo.Contains(input.SearchKey)
@@ -57,7 +57,7 @@
)
.WhereIF(!string.IsNullOrWhiteSpace(input.OrderNo), u => u.OrderNo.Contains(input.OrderNo.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.RoboatNo), u => u.RoboatNo.Contains(input.RoboatNo.Trim()))
- .WhereIF(!string.IsNullOrWhiteSpace(input.LineNO), u => u.LineNO.Contains(input.LineNO.Trim()))
+ .WhereIF(!string.IsNullOrWhiteSpace(input.LineNo), u => u.LineNo.Contains(input.LineNo.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.Port), u => u.Port.Contains(input.Port.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.LotNo), u => u.LotNo.Contains(input.LotNo.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.SkuNo), u => u.SkuNo.Contains(input.SkuNo.Trim()))
@@ -196,6 +196,10 @@
checkTaskInfo.PZNo = skuInfo.PZNo;
//鏇存柊鍒嗘嫞浠诲姟
await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+
+ #region#缁橮LC鍐欐暟鎹�
+
+ #endregion
}
[HttpPost]
@@ -203,18 +207,21 @@
[DisplayName("浠诲姟缁撴壒")]
public async Task CloseTaskForPLC(BindTaskPLCInput input)
{
- #region 璇锋眰PLC鎺ュ彛
+ #region 璇锋眰PLC鎺ュ彛锛堣繖涓柟娉曞疄闄呮槸棰勭粨鎵癸紝缁橮LC鍙戦�侀缁撴壒淇℃伅锛岀劧鍚嶱LC鍐嶇粰WCS鍙戦�佺粨鎵逛俊鍙峰啀灏嗗垎鎷d俊鎭竻绌猴級
+
#endregion
//鍒嗘嫞浠诲姟淇℃伅
var checkTaskList = _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.LotNo == input.lotNo && w.Status == "1").ToList();
foreach (var item in checkTaskList)
{
item.OrderNo = "";
+ item.TaskNo = "";
item.LotNo = "";
item.SkuNo = "";
item.SkuName = "";
item.BoxType = "";
item.Qty = 0;
+ item.PZNo = "";
item.Status = "0";//鏈粦瀹�
}
//鏇存柊鍒嗘嫞浠诲姟
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs
index 116d386..87420b4 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/Dto/WcsDeviceTaskOrderDto.cs
@@ -9,6 +9,7 @@
{
public long Id { get; set; }
public string Text { get; set; }
+ public string? TaskNo { get; set; }
public string? OrderNo { get; set; }
public string? LotNo { get; set; }
public string? SkuNo { get; set; }
@@ -18,6 +19,6 @@
/// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
/// </summary>
public int? Qty { get; set; }
- public string? LineNO { get; set; }
+ public string? LineNo { get; set; }
public string? PZNo { get; set; }
}
diff --git a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
index 403432f..032a946 100644
--- a/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsDevice/WcsDeviceService.cs
@@ -405,11 +405,12 @@
{
Id=device.Id,
Text=device.Text,
+ TaskNo=task.TaskNo,
OrderNo=task.OrderNo,
LotNo=task.LotNo,
SkuNo=task.SkuNo,
SkuName=task.SkuName,
- LineNO=task.LineNO,
+ LineNo=task.LineNo,
Status =task.Status,
PZNo=task.PZNo,
Qty=task.Qty
diff --git a/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs b/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs
index 0491508..8c1f777 100644
--- a/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsPosition/WcsPositionService.cs
@@ -8,9 +8,11 @@
public class WcsPositionService : IDynamicApiController, ITransient
{
private readonly SqlSugarRepository<WcsPosition> _WcsPositionRep;
- public WcsPositionService(SqlSugarRepository<WcsPosition> WcsPositionRep)
+ private readonly SqlSugarRepository<WcsPlc> _wcsPlcRep;
+ public WcsPositionService(SqlSugarRepository<WcsPosition> WcsPositionRep, SqlSugarRepository<WcsPlc> wcsPlcRep)
{
_WcsPositionRep = WcsPositionRep;
+ _wcsPlcRep = wcsPlcRep;
}
/// <summary>
@@ -145,7 +147,22 @@
).ToListAsync();
}
-
+ /// <summary>
+ /// 鑾峰彇璁惧ID鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ [ApiDescriptionSettings(Name = "WcsPlcIdDropdown"), HttpGet]
+ [DisplayName("鑾峰彇璁惧ID鍒楄〃")]
+ public async Task<dynamic> WcsPlcIdDropdown()
+ {
+ return await _wcsPlcRep.Context.Queryable<WcsPlc>()
+ .Select(u => new
+ {
+ Label = u.Text,
+ Value = u.Id
+ }
+ ).ToListAsync();
+ }
}
diff --git a/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs b/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs
index 1fd8664..30ed7df 100644
--- a/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs
+++ b/Admin.NET/WCS.Application/Service/WcsTask/Dto/WcsTaskInput.cs
@@ -102,7 +102,7 @@
/// <summary>
/// 鎷h揣鏂瑰紡
/// </summary>
- public virtual string? UnstackingMode { get; set; }
+ public virtual UnstackingModeEnum? UnstackingMode { get; set; }
/// <summary>
/// 鍙栨秷鏃堕棿
diff --git a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
index d3408f7..3f2e706 100644
--- a/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
+++ b/Admin.NET/WCS.Application/Service/WcsTask/WcsTaskService.cs
@@ -1,7 +1,9 @@
锘�
using AngleSharp.Dom;
+using Elastic.Clients.Elasticsearch.Tasks;
using Furion.DatabaseAccessor;
using Microsoft.AspNetCore.SignalR;
+using WCS.Application.Entity;
namespace WCS.Application;
@@ -13,11 +15,15 @@
{
private readonly SqlSugarRepository<WcsTask> _wcsTaskRep;
private readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext;
+ private readonly SqlSugarRepository<WcsCheckTask> _wcsCheckTaskRep;
+ private readonly SqlSugarRepository<WcsMateialPzInfo> _wcsMateialPzInfoRep;
- public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext)
+ public WcsTaskService(SqlSugarRepository<WcsTask> wcsTaskRep, IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext, SqlSugarRepository<WcsCheckTask> wcsCheckTaskRep, SqlSugarRepository<WcsMateialPzInfo> wcsMateialPzInfoRep)
{
_wcsTaskRep = wcsTaskRep;
_taskLogHubContext = taskLogHubContext;
+ _wcsCheckTaskRep = wcsCheckTaskRep;
+ _wcsMateialPzInfoRep = wcsMateialPzInfoRep;
}
/// <summary>
@@ -56,9 +62,48 @@
{
throw Oops.Bah("浠诲姟鍙烽噸澶�");
}
+ if (input.UnstackingMode == UnstackingModeEnum.Machine)
+ {
+ if (string.IsNullOrEmpty(input.SkuNo) || string.IsNullOrEmpty(input.SkuName))
+ {
+ throw Oops.Bah("鏈哄櫒浜烘嫞璐э紝鐗╂枡鍜屾壒娆′俊鎭笉鑳戒负绌�");
+ }
+ }
var entity = input.Adapt<WcsTask>();
entity.Origin = "WCS";
await _wcsTaskRep.InsertAsync(entity);
+
+ #region 缁戝畾鍨涙満
+
+ //鐗╂枡鍝佺淇℃伅
+ var skuInfo = await _wcsMateialPzInfoRep.Context.Queryable<WcsMateialPzInfo>().Where(w => w.SkuNo == input.SkuNo).FirstAsync();
+ if (skuInfo == null)
+ {
+ throw Oops.Oh("鐗╂枡鍝佺淇℃伅涓嶅瓨鍦�");
+ }
+ //鍒嗘嫞浠诲姟淇℃伅
+ var checkTaskInfo = await _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.Status == "0" && w.RoboatType == "0").OrderBy(o => o.LineNo).FirstAsync();
+ if (checkTaskInfo == null)
+ {
+ throw Oops.Oh("鍒嗘嫞浠诲姟淇℃伅涓嶅瓨鍦�");
+ }
+ if (checkTaskInfo.Status != "0")
+ {
+ throw Oops.Oh("璇ュ伐浣嶅凡缁戝畾浠诲姟锛岃鍕垮啀娆$粦瀹�");
+ }
+ checkTaskInfo.OrderNo = "";
+ checkTaskInfo.TaskNo = entity.TaskNo;
+ checkTaskInfo.LotNo = entity.LotNo;
+ checkTaskInfo.SkuNo = entity.SkuNo;
+ checkTaskInfo.SkuName = entity.SkuName;
+ checkTaskInfo.BoxType = "";
+ checkTaskInfo.Qty = entity.Qty;
+ checkTaskInfo.Status = "1";//宸茬粦瀹�
+ checkTaskInfo.PZNo = skuInfo.PZNo;
+ //鏇存柊鍒嗘嫞浠诲姟
+ await _wcsCheckTaskRep.AsUpdateable(checkTaskInfo).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+ #endregion
+
return entity.Id;
}
@@ -155,6 +200,25 @@
await _wcsTaskRep.Context.Insertable(modTaskMonitor).ExecuteCommandAsync();
//await _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>());
//await _taskLogHubContext.Clients.All.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>());
+
+ #region
+ //鍒嗘嫞浠诲姟淇℃伅
+ var checkTaskList = _wcsCheckTaskRep.Context.Queryable<WcsCheckTask>().Where(w => w.TaskNo == modTask.TaskNo && w.Status == "1").ToList();
+ foreach (var item in checkTaskList)
+ {
+ item.OrderNo = "";
+ item.TaskNo = "";
+ item.LotNo = "";
+ item.SkuNo = "";
+ item.SkuName = "";
+ item.BoxType = "";
+ item.Qty = 0;
+ item.PZNo = "";
+ item.Status = "0";//鏈粦瀹�
+ }
+ //鏇存柊鍒嗘嫞浠诲姟
+ await _wcsCheckTaskRep.AsUpdateable(checkTaskList).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+ #endregion
}
else
{
diff --git a/Web/src/api/wcs/wcsPosition.ts b/Web/src/api/wcs/wcsPosition.ts
index 4dda87d..3a58648 100644
--- a/Web/src/api/wcs/wcsPosition.ts
+++ b/Web/src/api/wcs/wcsPosition.ts
@@ -1,11 +1,12 @@
锘縤mport request from '/@/utils/request';
enum Api {
- AddWcsPosition = '/api/wcsPosition/add',
- DeleteWcsPosition = '/api/wcsPosition/delete',
- UpdateWcsPosition = '/api/wcsPosition/update',
- PageWcsPosition = '/api/wcsPosition/page',
- DetailWcsPosition = '/api/wcsPosition/detail',
- GetWcsDeviceDeviceIdDropdown = '/api/wcsPosition/WcsDeviceDeviceIdDropdown',
+ AddWcsPosition = '/api/wcsPosition/add',
+ DeleteWcsPosition = '/api/wcsPosition/delete',
+ UpdateWcsPosition = '/api/wcsPosition/update',
+ PageWcsPosition = '/api/wcsPosition/page',
+ DetailWcsPosition = '/api/wcsPosition/detail',
+ GetWcsDeviceDeviceIdDropdown = '/api/wcsPosition/WcsDeviceDeviceIdDropdown',
+ GetWcsPlcIdDropdown = '/api/wcsPosition/WcsPlcIdDropdown',
}
// 澧炲姞璁惧宸ヤ綅
@@ -17,40 +18,45 @@
});
// 鍒犻櫎璁惧宸ヤ綅
-export const deleteWcsPosition = (params?: any) =>
+export const deleteWcsPosition = (params?: any) =>
request({
- url: Api.DeleteWcsPosition,
- method: 'post',
- data: params,
- });
+ url: Api.DeleteWcsPosition,
+ method: 'post',
+ data: params,
+ });
// 缂栬緫璁惧宸ヤ綅
-export const updateWcsPosition = (params?: any) =>
+export const updateWcsPosition = (params?: any) =>
request({
- url: Api.UpdateWcsPosition,
- method: 'post',
- data: params,
- });
+ url: Api.UpdateWcsPosition,
+ method: 'post',
+ data: params,
+ });
// 鍒嗛〉鏌ヨ璁惧宸ヤ綅
-export const pageWcsPosition = (params?: any) =>
+export const pageWcsPosition = (params?: any) =>
request({
- url: Api.PageWcsPosition,
- method: 'post',
- data: params,
- });
+ url: Api.PageWcsPosition,
+ method: 'post',
+ data: params,
+ });
// 璇︽儏璁惧宸ヤ綅
-export const detailWcsPosition = (id: any) =>
+export const detailWcsPosition = (id: any) =>
request({
- url: Api.DetailWcsPosition,
- method: 'get',
- data: { id },
- });
+ url: Api.DetailWcsPosition,
+ method: 'get',
+ data: { id },
+ });
export const getWcsDeviceDeviceIdDropdown = () =>
- request({
+ request({
url: Api.GetWcsDeviceDeviceIdDropdown,
method: 'get'
- });
+ });
+export const GetWcsPlcIdDropdown = () =>
+ request({
+ url: Api.GetWcsPlcIdDropdown,
+ method: 'get'
+ });
\ No newline at end of file
diff --git a/Web/src/views/device/sortPallet/index.vue b/Web/src/views/device/sortPallet/index.vue
index 5bdd4f7..a4aba31 100644
--- a/Web/src/views/device/sortPallet/index.vue
+++ b/Web/src/views/device/sortPallet/index.vue
@@ -27,9 +27,9 @@
<el-form-item label="WMS鏄庣粏鍗曞彿">
<el-input v-model="deviceInfo.orderNo" readonly></el-input>
</el-form-item>
- <!-- <el-form-item label="浠诲姟鍙�">
- <el-input v-model=""></el-input>
- </el-form-item> -->
+ <el-form-item label="浠诲姟鍙�">
+ <el-input v-model="deviceInfo.taskNo"></el-input>
+ </el-form-item>
<el-form-item label="鎵规鍙�">
<el-input v-model="deviceInfo.lotNo" readonly></el-input>
</el-form-item>
@@ -40,7 +40,7 @@
<el-input v-model="deviceInfo.skuName" readonly></el-input>
</el-form-item>
<el-form-item label="鍒嗘嫞绾跨紪鍙�">
- <el-input v-model="deviceInfo.lineNO" readonly></el-input>
+ <el-input v-model="deviceInfo.lineNo" readonly></el-input>
</el-form-item>
<el-form-item label="缁戝畾鐘舵��">
<el-input :value="deviceInfo.status === '0' ? '鏈粦瀹�' : '宸茬粦瀹�'" readonly></el-input>
diff --git a/Web/src/views/device/wcsOderTask/component/editDialog.vue b/Web/src/views/device/wcsOderTask/component/editDialog.vue
index d0d0468..652ccb2 100644
--- a/Web/src/views/device/wcsOderTask/component/editDialog.vue
+++ b/Web/src/views/device/wcsOderTask/component/editDialog.vue
@@ -115,7 +115,7 @@
</template>
</el-dialog>
- <!-- 缁戝畾浠诲姟寮规 -->
+ <!-- 閫夋嫨鐗╂枡寮规 -->
<el-dialog v-model="bindDialogVisible" title="閫夋嫨鏁版嵁">
<el-table
:data="bindBoxData"
diff --git a/Web/src/views/wcs/wcsPosition/index.vue b/Web/src/views/wcs/wcsPosition/index.vue
index a589b8c..50f0698 100644
--- a/Web/src/views/wcs/wcsPosition/index.vue
+++ b/Web/src/views/wcs/wcsPosition/index.vue
@@ -9,9 +9,20 @@
</el-form-item>
</el-col>
+ <!-- <el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
+ <el-form-item label="PLC">
+ <el-select clearable="" filterable="" v-model="queryParams.plcId" placeholder="璇烽�夋嫨PLC">
+ <el-option v-for="(item, index) in wcsPLCList" :key="index" :value="item.value"
+ :label="item.label" />
+
+ </el-select>
+
+ </el-form-item>
+ </el-col> -->
+
<el-col :xs="24" :sm="12" :md="12" :lg="8" :xl="4" class="mb10" v-if="showAdvanceQueryUI">
- <el-form-item label="璁惧ID">
- <el-select clearable="" filterable="" v-model="queryParams.deviceId" placeholder="璇烽�夋嫨璁惧ID">
+ <el-form-item label="璁惧">
+ <el-select clearable="" filterable="" v-model="queryParams.deviceId" placeholder="璇烽�夋嫨璁惧">
<el-option v-for="(item, index) in wcsDeviceDeviceIdDropdownList" :key="index" :value="item.value"
:label="item.label" />
@@ -104,7 +115,7 @@
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import printDialog from '/@/views/system/print/component/hiprint/preview.vue'
import editDialog from '/@/views/wcs/wcsPosition/component/editDialog.vue'
-import { pageWcsPosition, deleteWcsPosition } from '/@/api/wcs/wcsPosition';
+import { pageWcsPosition, deleteWcsPosition,GetWcsPlcIdDropdown } from '/@/api/wcs/wcsPosition';
import { getWcsDeviceDeviceIdDropdown } from '/@/api/wcs/wcsPosition';
const showAdvanceQueryUI = ref(false);
@@ -194,6 +205,13 @@
};
getWcsDeviceDeviceIdDropdownList();
+const wcsPLCList = ref<any>([]);
+const getwcsPLCList = async () => {
+ let list = await GetWcsPlcIdDropdown();
+ wcsPLCList.value = list.data.result ?? [];
+};
+getwcsPLCList();
+
handleQuery();
</script>
<style scoped>
diff --git a/Web/src/views/wcs/wcsTask/component/editDialog.vue b/Web/src/views/wcs/wcsTask/component/editDialog.vue
index 12cb215..7b112e6 100644
--- a/Web/src/views/wcs/wcsTask/component/editDialog.vue
+++ b/Web/src/views/wcs/wcsTask/component/editDialog.vue
@@ -64,6 +64,37 @@
</el-form-item>
</el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="鎷h揣鏂瑰紡" prop="unstackingMode">
+ <el-select clearable v-model="ruleForm.unstackingMode" placeholder="璇烽�夋嫨鎷h揣鏂瑰紡">
+ <el-option v-for="(item,index) in dl('UnstackingModeEnum')" :key="index" :value="Number(item.value)" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
+
+ </el-select>
+
+ </el-form-item>
+
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="鐗╂枡缂栫爜" prop="skuNo">
+ <el-input v-model="ruleForm.skuNo" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" maxlength="20" show-word-limit clearable />
+
+ </el-form-item>
+
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="鐗╂枡鍚嶇О" prop="skuName">
+ <el-input v-model="ruleForm.skuName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" maxlength="50" show-word-limit clearable/>
+
+ </el-form-item>
+
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="鎵规鍙�" prop="lotNo">
+ <el-input v-model="ruleForm.lotNo" placeholder="璇疯緭鍏ユ壒娆″彿" maxlength="50" show-word-limit clearable />
+
+ </el-form-item>
+
+ </el-col>
</el-row>
</el-form>
<template #footer>
--
Gitblit v1.8.0