From 3148a5c11b47ccbda05b8cf4b7fc445318eb13f5 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 19 一月 2026 16:32:12 +0800
Subject: [PATCH] 入库分配巷道逻辑更改,码垛程序优化等
---
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs | 22 +++
项目代码/WCS/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs | 9 +
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 12 +
项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | 9 +
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs | 22 +++
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs | 7 +
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs | 14 ++
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 28 ++++
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs | 30 ++-
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs | 14 ++
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs | 51 +++---
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs | 114 +++++++++++++++-
项目资料/通信协议/原料库输送线故障读取.xls | 0
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/码垛/MDJob_CP.cs | 16 +
项目代码/WCS/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs | 5
项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs | 5
项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 5
17 files changed, 313 insertions(+), 50 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
index c155e56..d0a2ab1 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/StationTypeEnum.cs"
@@ -32,6 +32,11 @@
StationType_InStartAndOutEnd = 33,
/// <summary>
+ /// 宸烽亾
+ /// </summary>
+ StationType_RoadwayError = 81,
+
+ /// <summary>
/// 鍙犵洏鍙枡绔欏彴
/// </summary>
StationType_StackingPlates = 91,
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
index 55d9cf3..1cce4b3 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs"
@@ -82,4 +82,13 @@
/// </summary>
public string WorkCentreCode { get; set; }
}
+ public class RoadwayError
+ {
+ public static List<ErrorDeviceInfo> Roadways = new List<ErrorDeviceInfo>();
+ }
+ public class ErrorDeviceInfo
+ {
+ public string Code { get; set; }
+ public string Roadway { get; set; }
+ }
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
index 3051118..025ed12 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs"
@@ -130,7 +130,10 @@
/// <param name="roadwayNo">宸烽亾鍙�</param>
/// <returns></returns>
string? RequestAssignLocation(int taskNum, string roadwayNo);
-
+ /// <summary>
+ /// 鍚慦MS鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鏉$爜
+ /// </summary>
+ WebResponseContent RequestInBoundPalletCode(int taskNum, string barCode);
/// <summary>
/// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
/// </summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 367dc18..002d2f5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -1,4 +1,5 @@
-锘縰sing HslCommunication.WebSocket;
+锘縰sing Autofac.Core;
+using HslCommunication.WebSocket;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
@@ -165,5 +166,14 @@
return content.Error(ex.Message);
}
}
+ /// <summary>
+ /// 鑾峰彇鏁呴殰宸烽亾
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("ExistRoadwaysError"), AllowAnonymous]
+ public List<string> ExistRoadwaysError()
+ {
+ return RoadwayError.Roadways.Select(x => x.Roadway).Distinct().ToList();
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index 3ca6b74..a80095d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -609,6 +609,34 @@
return "";
}
/// <summary>
+ /// 鍚慦MS鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鏉$爜
+ /// </summary>
+ /// <param name="taskNum">浠诲姟鍙�</param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public WebResponseContent RequestInBoundPalletCode(int taskNum,string barCode)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ string address = AppSettings.Get("WMSApiAddress");
+ if (string.IsNullOrEmpty(address)) throw new Exception("鏈壘鍒癢MSApi鍦板潃");
+ string responseStr = HttpHelper.Get($"{address}/api/Task/InBoundPalletCode?taskNum={taskNum}&barCode={barCode}");
+ WebResponseContent responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr) ?? throw new Exception("鏈敹鍒拌繑鍥炲弬鏁�");
+ if (!responseContent.Status)
+ {
+ return responseContent;
+ }
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+
+ }
+ /// <summary>
/// 鍚慦MS鐢宠鍑哄簱AGV缁堢偣
/// </summary>
/// <param name="taskNum">浠诲姟鍙�</param>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
index 8c9dfc2..cd215b5 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs"
@@ -343,6 +343,13 @@
set { _barcode = value.Replace("\0", "").Replace("\\0", ""); }
}
}
+ public class R_ErrorYLDB : DeviceCommand
+ {
+ /// <summary>
+ /// 鏁呴殰
+ /// </summary>
+ public short R_Error { get; set; }
+ }
public class W_RGVCPInfo : DeviceCommand
{
/// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
index 3cb75a6..41be831 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs"
@@ -12,6 +12,7 @@
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
@@ -73,6 +74,7 @@
foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode)))
{
DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(WR_CLineYLDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
+ DeviceProDTO? deviceErrRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ErrorYLDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
if (deviceProRead != null)
{
R_ConveyorLineYLInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineYLInfo>(deviceProRead.DeviceProAddress);
@@ -221,6 +223,26 @@
}
}
}
+ else if (deviceErrRead!=null)
+ {
+ R_ErrorYLDB errorYLDB = device.Communicator.ReadCustomer<R_ErrorYLDB>(deviceErrRead.DeviceProAddress);
+ if (errorYLDB != null && errorYLDB.R_Error==2)
+ {
+ ErrorDeviceInfo? errorDeviceInfo = RoadwayError.Roadways.FirstOrDefault(x=>x.Code==item.StationCode);
+ if (errorDeviceInfo==null)
+ {
+ RoadwayError.Roadways.Add(new ErrorDeviceInfo() { Code = item.StationCode, Roadway = item.StackerCraneCode });
+ }
+ }
+ else if(errorYLDB != null && errorYLDB.R_Error == 1)
+ {
+ ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == item.StationCode);
+ if (deviceInfo != null)
+ {
+ RoadwayError.Roadways.Remove(deviceInfo);
+ }
+ }
+ }
else
{
WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
index 4926ef0..94c1ebe 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs"
@@ -25,6 +25,7 @@
using WIDESEAWCS_QuartzJob.Repository;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.StackerCrane;
+using WIDESEAWCS_DTO.TaskInfo;
namespace WIDESEAWCS_Tasks
{
@@ -90,6 +91,19 @@
}
}
}
+ ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode);
+ if (deviceInfo != null)
+ {
+ RoadwayError.Roadways.Remove(deviceInfo);
+ }
+ }
+ else
+ {
+ ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode);
+ if (deviceInfo==null)
+ {
+ RoadwayError.Roadways.Add(new ErrorDeviceInfo() { Code = commonStackerCrane.DeviceCode, Roadway = commonStackerCrane.DeviceCode });
+ }
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
index ff16b81..3614307 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC3.cs"
@@ -26,6 +26,7 @@
using HslCommunication.WebSocket;
using WIDESEAWCS_DTO.Equipment;
using WIDESEAWCS_QuartzJob.StackerCrane;
+using WIDESEAWCS_DTO.TaskInfo;
namespace WIDESEAWCS_Tasks
{
@@ -95,6 +96,19 @@
}
}
}
+ ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode);
+ if (deviceInfo != null)
+ {
+ RoadwayError.Roadways.Remove(deviceInfo);
+ }
+ }
+ else
+ {
+ ErrorDeviceInfo? deviceInfo = RoadwayError.Roadways.FirstOrDefault(x => x.Code == commonStackerCrane.DeviceCode);
+ if (deviceInfo == null)
+ {
+ RoadwayError.Roadways.Add(new ErrorDeviceInfo() { Code = commonStackerCrane.DeviceCode, Roadway = commonStackerCrane.DeviceCode });
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
index 38bcce7..026554b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPB.cs"
@@ -101,16 +101,24 @@
WriteError(item.StationName, $"璺敱淇℃伅閰嶇疆閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}");
continue;
}
- device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode);
- device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode);
- device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
- task.CurrentAddress = item.StationCode;
- task.NextAddress = router.NextPosi;
- task.PalletCode = conveyorLineInfoRead.PalletCode;
- task.Roadway = roadWay;
- task.DeviceCode = router.ChildPosiDeviceCode;
- _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
- WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�");
+ WebResponseContent responseContent = _taskService.RequestInBoundPalletCode(task.TaskNum, conveyorLineInfoRead.PalletCode.Trim());
+ if (responseContent.Status)
+ {
+ device.SetValue(W_ConveyorLineCPDB.W_TargetAddress, router.NextPosi, item.StationCode);
+ device.SetValue(W_ConveyorLineCPDB.W_TaskNo, task.TaskNum, item.StationCode);
+ device.SetValue(W_ConveyorLineCPDB.W_Command, 1, item.StationCode);
+ task.CurrentAddress = item.StationCode;
+ task.NextAddress = router.NextPosi;
+ task.PalletCode = conveyorLineInfoRead.PalletCode.Trim();
+ task.Roadway = roadWay;
+ task.DeviceCode = router.ChildPosiDeviceCode;
+ _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing);
+ WriteInfo(item.StationName, $"浠诲姟鍙穥task.TaskNum}涓嬩竴姝ュ埌杈緖router.NextPosi}鍏ュ簱绔欏彴");
+ }
+ else
+ {
+ WriteError(item.StationName, $"浠诲姟鍙穥task.TaskNum}鎵爜璇锋眰閿欒{responseContent.Message}");
+ }
}
else
{
@@ -212,7 +220,7 @@
}
}
}
- else if (item.StationType == StationTypeEnum.StationType_StackingPlates.ObjToInt() && deviceProRead != null && deviceProWrite != null)
+ else if (item.StationType == StationTypeEnum.StationType_StackingPlates.ObjToInt() && item.IsOccupied==StationOccupiedEnum.None.ObjToInt() && deviceProRead != null && deviceProWrite != null)
{//鍙犵洏鏈哄伐浣嶅彨鏂�
R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
index 6209a7d..9882eeb 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\347\240\201\345\236\233/MDJob_CP.cs"
@@ -74,7 +74,7 @@
if (flag && value != null)
{
OtherDevice device = (OtherDevice)value;
- List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StackerCraneCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && x.IsOccupied == 0);
+ List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StackerCraneCode == device.DeviceCode && x.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt());
//鑾峰彇鍗忚
DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(R_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(W_MDDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault();
@@ -93,6 +93,7 @@
#endregion
//鐮佸灈鐘舵��
short PackState = device.GetValue<R_MDDB, short>(GetPackStateEnum(item.StackerCraneStationCode), item.StackerCraneCode);
+ short PackSendState = device.GetValue<W_MDDB, short>(GetPackSendEnum(item.StackerCraneStationCode), item.StackerCraneCode);
//鐮佸灈鏁伴噺
short PackNum = device.GetValue<R_MDDB, short>(GetPackNumEnum(item.StackerCraneStationCode), item.StackerCraneCode);
if ((R_MDStatus1 == 1 || R_MDStatus2 == 1 || R_MDStatus3 == 1 || R_MDStatus4 == 1) && Allow == 4)
@@ -105,11 +106,18 @@
}
continue;
}
- if (PackState == 2)
+ if (PackState == 2 && PackSendState == 2)
{
Thread.Sleep(200);
- device.Communicator.Write<float>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 0);
- WriteInfo(item.StationName, $"{item.StationName}娓呴櫎宸ヤ綅缁撴墭淇″彿");
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 4);
+ WriteInfo(item.StationName, $"{item.StationName}鍐欏叆娓呮墭淇″彿");
+ continue;
+ }
+ if (PackState == 4 && PackSendState == 4)
+ {
+ Thread.Sleep(200);
+ device.Communicator.Write<short>(device.DeviceProDTOs.FirstOrDefault(x => x.DeviceProParamName == GetPackSendEnum(item.StackerCraneStationCode).ToString()).DeviceProDataBlock, 0);
+ WriteInfo(item.StationName, $"{item.StationName}娓呮墭淇″彿澶嶄綅");
continue;
}
//鑾峰彇褰撳墠宸ヤ綅鐮佸灈鎵ц涓暟鎹�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
index 1a0fbeb..4d11768 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs"
@@ -276,5 +276,10 @@
/// <returns></returns>
WebResponseContent DisableStatus(int[] keys);
WebResponseContent BoxingInBound(string stationCode, List<string> barCodes);
+ /// <summary>
+ /// 鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鏉$爜
+ /// </summary>
+ /// <returns></returns>
+ WebResponseContent InBoundPalletCode(int taskNum, string barCode);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
index 517040a..3955caa 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs"
@@ -136,6 +136,28 @@
}
}
/// <summary>
+ /// 浠诲姟淇℃伅鎺ㄩ�佽嚦WCS
+ /// </summary>
+ /// <returns></returns>
+ public List<string> ExistRoadwaysError()
+ {
+ try
+ {
+ string url = AppSettings.Get("WCS");
+ if (string.IsNullOrEmpty(url))
+ {
+ return null;
+ }
+ string response = HttpHelper.Get($"{url}/api/Task/ExistRoadwaysError");
+
+ return JsonConvert.DeserializeObject<List<string>>(response) ?? throw new Exception("杩斿洖閿欒");
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
+ }
+ /// <summary>
/// 鏀捐揣瀹屾垚
/// </summary>
/// <param name="code"></param>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
index a134326..4e1cebf 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs"
@@ -108,6 +108,14 @@
wmsTask.Dispatchertime = task.Dispatchertime;
wmsTask.TaskType = task.TaskType;
wmsTask.TargetAddress = task.TargetAddress;
+ ////鎴愬搧鍏ュ簱鏇存柊鎵樼洏鏉$爜
+ //if (wmsTask.TaskType == TaskTypeEnum.InProduct.ObjToInt() && oldPalletCode != task.PalletCode)
+ //{
+ // Dt_ProStockInfo stockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == oldPalletCode);
+ // //鍒ゆ柇閲嶅鎵樼洏
+ // stockInfo.PalletCode = task.PalletCode;
+ // _stockRepository.ProStockInfoRepository.UpdateData(stockInfo);
+ //}
BaseDal.UpdateData(wmsTask);
//鎺ㄩ�丮ES鎺ラ┏鎴愬姛鎺ュ彛
if (wmsTask.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup && !wmsTask.WorkCentreCode.IsNullOrEmpty() && wmsTask.TaskStatus == TaskStatusEnum.AGV_TakeFinish.ObjToInt())
@@ -134,31 +142,24 @@
};
}
//鎺ㄩ�丒RP鍗婃垚鍝佸叆搴�
- if (wmsTask.TaskType>=TaskTypeEnum.WFBYLInbound.ObjToInt() && wmsTask.TaskType <= TaskTypeEnum.PrintYLInbound.ObjToInt() && wmsTask.TaskStatus==TaskStatusEnum.AGV_TakeFinish.ObjToInt())
- {
- Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x=>x.PalletCode== wmsTask.PalletCode);
- string request = _invokeERPService.ERPSemiProInUp(
- new ERPProInUpModel()
- {
- PB_INV_PRODUCT_IN = new List<PB_INV_PRODUCT_INItem>()
- {
- new PB_INV_PRODUCT_INItem()
- {
- WP_ID = 0,
- INV_BARCODE = wmsTask.PalletCode,
- REMARK = "鍗婃垚鍝佸叆搴�",
- QTY=(int)stockInfo.StockLength
- }
- }
- }) ?? throw new Exception("鍗婃垚鍝佸叆搴撴帴鍙h姹傚け璐�");
- }
- //鎴愬搧鍏ュ簱鏇存柊鎵樼洏鏉$爜
- if (wmsTask.TaskType == TaskTypeEnum.InProduct.ObjToInt() && oldPalletCode!=task.PalletCode)
- {
- Dt_ProStockInfo stockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == oldPalletCode);
- stockInfo.PalletCode = task.PalletCode;
- _stockRepository.ProStockInfoRepository.UpdateData(stockInfo);
- }
+ //if (wmsTask.TaskType>=TaskTypeEnum.WFBYLInbound.ObjToInt() && wmsTask.TaskType <= TaskTypeEnum.PrintYLInbound.ObjToInt() && wmsTask.TaskStatus==TaskStatusEnum.AGV_TakeFinish.ObjToInt())
+ //{
+ // Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x=>x.PalletCode== wmsTask.PalletCode);
+ // string request = _invokeERPService.ERPSemiProInUp(
+ // new ERPProInUpModel()
+ // {
+ // PB_INV_PRODUCT_IN = new List<PB_INV_PRODUCT_INItem>()
+ // {
+ // new PB_INV_PRODUCT_INItem()
+ // {
+ // WP_ID = 0,
+ // INV_BARCODE = wmsTask.PalletCode,
+ // REMARK = "鍗婃垚鍝佸叆搴�",
+ // QTY=(int)stockInfo.StockLength
+ // }
+ // }
+ // }) ?? throw new Exception("鍗婃垚鍝佸叆搴撴帴鍙h姹傚け璐�");
+ //}
}
return WebResponseContent.Instance.OK();
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index ff193fb..c95cf6f 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -826,6 +826,12 @@
{
try
{
+ List<string> roadways = ExistRoadwaysError();
+ bool ErrorRoadway = false;
+ if (roadways!=null && roadways.Count>0)
+ {
+ ErrorRoadway = true;
+ }
Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
if (stockInfo==null)
{
@@ -861,8 +867,7 @@
{
locationCounts = locationCounts.Where(x => x.RoadwayNo != "SC03_YLDual").ToList();
}
-
- roadwayNo = HandleRoadway(locationCounts, warehouse);
+ roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null);
}
}
else
@@ -872,6 +877,7 @@
{
bool LayerLimit = stockInfo.CheckThickness > 1300;
bool RoadwayLimit = stockInfo.MaterielWide > 2200;
+ bool RoadwayType = stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt();
var query = Db.Queryable<Dt_LocationInfo>()
.Where(x => x.WarehouseId == warehouse.WarehouseId
&& x.LocationStatus == (int)LocationStatusEnum.Free
@@ -897,15 +903,46 @@
})
.OrderBy(x => x.RoadwayNo)
.ToList();
-
- roadwayNo = HandleRoadway(locationCounts, warehouse);
+ if (RoadwayType)
+ {
+ foreach (var item in locationCounts)
+ {
+ if (item.RoadwayNo.Contains("YLDual"))
+ {
+ int count = Db.Queryable<Dt_LocationInfo>()
+ .Where(x => x.WarehouseId == warehouse.WarehouseId
+ && x.LocationStatus == (int)LocationStatusEnum.Free
+ && x.EnableStatus == (int)EnableStatusEnum.Normal
+ && x.LocationType==LocationTypeEnum.MediumPallet.ObjToInt()
+ && x.RoadwayNo == item.RoadwayNo).Count();
+ item.Count = count;
+ }
+ }
+ }
+ roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null);
}
else if (stockInfo.CheckThickness >= 400 && stockInfo.CheckThickness < 800 && stockInfo.MaterielWide >= 700 && stockInfo.MaterielWide <= 2500)
{
+ bool RoadwayType = stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt();
//鑾峰彇鍒嗛厤
List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt() && x.RoadwayNo.Contains("YLDual") && (stockInfo.PalletType == LocationTypeEnum.MediumPallet.ObjToInt() ? x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt() : x.LocationType == LocationTypeEnum.SmallPallet.ObjToInt())).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).OrderBy(x => x.RoadwayNo).ToList();
-
- roadwayNo = HandleRoadway(locationCounts, warehouse);
+ if (RoadwayType)
+ {
+ foreach (var item in locationCounts)
+ {
+ if (item.RoadwayNo.Contains("YLDual"))
+ {
+ int count = Db.Queryable<Dt_LocationInfo>()
+ .Where(x => x.WarehouseId == warehouse.WarehouseId
+ && x.LocationStatus == (int)LocationStatusEnum.Free
+ && x.EnableStatus == (int)EnableStatusEnum.Normal
+ && x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt()
+ && x.RoadwayNo == item.RoadwayNo).Count();
+ item.Count = count;
+ }
+ }
+ }
+ roadwayNo = HandleRoadway(locationCounts, warehouse, ErrorRoadway ? roadways : null);
}
}
@@ -923,12 +960,17 @@
}
}
//澶勭悊鍒嗛厤宸烽亾 浠诲姟鏁伴噺
- public string HandleRoadway(List<LocationCount> locationCounts, Dt_Warehouse warehouse)
+ public string HandleRoadway(List<LocationCount> locationCounts, Dt_Warehouse warehouse,List<string> roadways=null)
{
+ if (roadways != null)
+ {
+ locationCounts = locationCounts.Where(x => !roadways.Contains(x.RoadwayNo)).ToList();
+ }
//宸烽亾浠诲姟鍒嗛厤鏁伴噺
List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId
&& locationCounts.Select(j => j.RoadwayNo).Distinct().Contains(x.Roadway)
&& TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList();
+
foreach (var item in locationCounts)
{
LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo);
@@ -1847,8 +1889,26 @@
List<Dt_Task> tasks = new List<Dt_Task>();
_unitOfWorkManage.BeginTran();
_inboundRepository.MESProInOrderInfoRepository.AddData(AddMESProInOrders);
- if (AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.鍗婃垚鍝�.ObjToInt()).Count() > 0)
+ List<Dt_MESProInOrderInfo> mESProInOrderInfos = AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.鍗婃垚鍝�.ObjToInt()).ToList();
+ if (mESProInOrderInfos.Count > 0)
{
+ List<PB_INV_PRODUCT_INItem> pRODUCT_INItems = new List<PB_INV_PRODUCT_INItem>();
+ foreach (var item in mESProInOrderInfos)
+ {
+ PB_INV_PRODUCT_INItem pB_INV_PRODUCT_INItem = new PB_INV_PRODUCT_INItem()
+ {
+ WP_ID = item.ProcessNum,
+ INV_BARCODE=item.BarCode,
+ REMARK = "鍗婃垚鍝佸叆搴�",
+ QTY=(int)item.ProQuantity
+ };
+ pRODUCT_INItems.Add(pB_INV_PRODUCT_INItem);
+ }
+ string request = _invokeERPService.ERPSemiProInUp(
+ new ERPProInUpModel()
+ {
+ PB_INV_PRODUCT_IN= pRODUCT_INItems
+ }) ?? throw new Exception("鍗婃垚鍝佸叆搴撴帴鍙h姹傚け璐�");
//鐢熸垚鍗婃垚鍝佸叆搴�
WebResponseContent webResponse = SemiProInbound(AddMESProInOrders.Where(x => x.MESProOrderType == MaterielTypeEnum.鍗婃垚鍝�.ObjToInt()).ToList());
if (!webResponse.Status)
@@ -2087,5 +2147,43 @@
}
return content;
}
+ /// <summary>
+ /// 鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鏉$爜
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent InBoundPalletCode(int taskNum, string barCode)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ //鑾峰彇褰撳墠浠诲姟
+ Dt_Task? taskExist = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (taskExist==null)
+ {
+ return content.Error($"鏈壘鍒颁换鍔taskNum}");
+ }
+ //鍒ゆ柇搴撳瓨涓槸鍚﹀瓨鍦ㄩ噸澶嶆墭鐩樻潯鐮�
+ Dt_ProStockInfo? proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x=>x.PalletCode==barCode);
+ if (proStockInfo!=null)
+ {
+ return content.Error($"搴撳瓨鏉$爜{proStockInfo.PalletCode}宸插瓨鍦�");
+ }
+ Dt_ProStockInfo proStockInfoExist = _stockRepository.ProStockInfoRepository.QueryFirst(x=>x.PalletCode== taskExist.PalletCode);
+ //鏇存柊
+ proStockInfoExist.PalletCode = barCode;
+ taskExist.PalletCode = barCode;
+ _unitOfWorkManage.BeginTran();
+ _stockRepository.ProStockInfoRepository.UpdateData(proStockInfoExist);
+ BaseDal.UpdateData(taskExist);
+ _unitOfWorkManage.CommitTran();
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
index ef7c6a1..cafc5b2 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs"
@@ -334,5 +334,14 @@
{
return Service.BoxingInBound(stationCode, barCodes);
}
+ /// <summary>
+ /// 鎴愬搧鍏ュ簱鎵爜璇锋眰鏇存柊鎵樼洏鏉$爜
+ /// </summary>
+ /// <returns></returns>
+ [HttpPost, HttpGet, Route("InBoundPalletCode"), AllowAnonymous]
+ public WebResponseContent InBoundPalletCode(int taskNum, string barCode)
+ {
+ return Service.InBoundPalletCode(taskNum, barCode);
+ }
}
}
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\346\225\205\351\232\234\350\257\273\345\217\226.xls" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\346\225\205\351\232\234\350\257\273\345\217\226.xls"
new file mode 100644
index 0000000..96703fb
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\346\225\205\351\232\234\350\257\273\345\217\226.xls"
Binary files differ
--
Gitblit v1.9.3