From 531c6e89dc07bb6997e6249a6cd9f53a9bd474a5 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 23 三月 2026 10:31:54 +0800
Subject: [PATCH] 出库逻辑变更
---
项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 6 +++
项目代码/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrderDetail.cs | 6 +++
项目代码/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs | 6 ++-
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC3.cs | 6 +-
项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 71 +++++++++++++++++++++++++++++++++++
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 8 +++-
项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 5 ++
项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs | 6 +-
8 files changed, 104 insertions(+), 10 deletions(-)
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 025ed12..902cdb5 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"
@@ -172,6 +172,11 @@
Dt_Task QueryStackerCraneTask(string deviceNo, string currentAddress = "");
/// <summary>
+ /// 鍘熸枡搴撲换鍔℃煡璇�
+ /// </summary>
+ Dt_Task QueryStackerYLTask(string deviceNo,TaskTypeGroup? taskTypeGroup=null);
+
+ /// <summary>
/// 鏍规嵁璁惧缂栧彿銆佸綋鍓嶅湴鍧�鎸夌収浼樺厛绾т互鍙婂垱寤烘椂闂存帓搴忔煡璇换鍔℃睜鍏ュ簱绫诲瀷鐨勬柊澧炵殑浠诲姟
/// </summary>
/// <param name="deviceNo">璁惧缂栧彿</param>
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 002d2f5..b9fa397 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"
@@ -77,6 +77,12 @@
return Service.TaskStatusRecovery(taskNum);
}
+ [HttpPost, HttpGet, Route("QueryStackerYLTask"),AllowAnonymous]
+ public Dt_Task QueryStackerYLTask(string deviceNo, TaskTypeGroup? taskTypeGroup = null)
+ {
+ return Service.QueryStackerYLTask(deviceNo, taskTypeGroup);
+ }
+
[HttpPost, HttpGet, Route("RollbackTaskStatusToLast")]
public WebResponseContent RollbackTaskStatusToLast(int taskNum)
{
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 ca7c9b5..b2b9f9c 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"
@@ -701,6 +701,77 @@
else
return BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.CurrentAddress == currentAddress && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
}
+ private static int OldorNew = 0;
+ /// <summary>
+ /// 鍘熸枡搴撲换鍔℃煡璇�
+ /// </summary>
+ /// <param name="deviceNo">璁惧缂栧彿</param>
+ /// <param name="currentAddress">褰撳墠鍦板潃</param>
+ /// <returns>杩斿洖浠诲姟瀹炰綋瀵硅薄锛屽彲鑳戒负null</returns>
+ public Dt_Task QueryStackerYLTask(string deviceNo,TaskTypeGroup? taskTypeGroup= null)
+ {
+ if (taskTypeGroup == null)
+ {
+ Dt_Task taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && x.TaskState == (int)TaskStatusEnum.SC_Execute && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt(), TaskOrderBy);
+ if (taskSend == null)
+ {
+ OldorNew = 1;
+ List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
+ .ThenBy(t => t.Grade)
+ .ThenBy(t => t.TaskNum)
+ .ToList();
+ if (specificTasks.Any())
+ {
+ //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
+ Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
+ .ThenBy(t => t.Grade)
+ .ThenBy(t => t.TaskNum)
+ .FirstOrDefault();
+ Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
+ if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
+ {
+ taskSend = taskCheckSend;
+ }
+ }
+ }
+ else
+ {
+ OldorNew = 0;
+ }
+ return taskSend;
+ }
+ else
+ {
+ Dt_Task taskSend = null;
+ if (OldorNew == 0)
+ {
+ OldorNew = 1;
+ List<Dt_Task> specificTasks = BaseDal.QueryData(t => t.DeviceCode == deviceNo && t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
+ .ThenBy(t => t.Grade)
+ .ThenBy(t => t.TaskNum)
+ .ToList();
+ if (specificTasks.Any())
+ {
+ //鏍规嵁鏃堕棿绛涙煡涓ユ牸鎺掑簭
+ Dt_Task taskCheck = BaseDal.QueryData(t => t.TaskState == (int)TaskStatusEnum.SC_Execute && t.TaskType == TaskTypeEnum.OldYLOutbound.ObjToInt()).OrderBy(t => t.CreateDate.Date)
+ .ThenBy(t => t.Grade)
+ .ThenBy(t => t.TaskNum)
+ .FirstOrDefault();
+ Dt_Task taskCheckSend = specificTasks.FirstOrDefault();
+ if (taskCheck.CreateDate.Date == taskCheckSend.CreateDate.Date && taskCheckSend.Grade <= taskCheck.Grade)
+ {
+ taskSend = taskCheckSend;
+ }
+ }
+ }
+ else
+ {
+ OldorNew = 0;
+ taskSend = BaseDal.QueryFirst(x => x.DeviceCode == deviceNo && TaskOutboundTypes.Contains(x.TaskType) && x.TaskType != TaskTypeEnum.OldYLOutbound.ObjToInt() && x.TaskState == (int)TaskStatusEnum.SC_Execute, TaskOrderBy);
+ }
+ return taskSend;
+ }
+ }
/// <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/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 94c1ebe..1a30800 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"
@@ -229,7 +229,7 @@
Dt_Task? task;
if (commonStackerCrane.LastTaskType == null)
{
- task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode);
}
else
{
@@ -239,13 +239,13 @@
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
if (task == null)
{
- task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup);
}
}
else
{
//涓婁竴涓负鍏ュ簱鍒欐煡鏄惁瀛樺湪鍑哄簱浠诲姟 浜ゆ浛鎵ц
- task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup);
if (task == null)
{
task = _taskService.QueryStackerCraneInTask(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 3614307..8633163 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"
@@ -280,7 +280,7 @@
Dt_Task? task;
if (commonStackerCrane.LastTaskType == null)
{
- task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode);
}
else
{
@@ -290,13 +290,13 @@
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
if (task == null)
{
- task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup);
}
}
else
{
//涓婁竴涓负鍏ュ簱鍒欐煡鏄惁瀛樺湪鍑哄簱浠诲姟 浜ゆ浛鎵ц
- task = _taskService.QueryStackerCraneOutTask(commonStackerCrane.DeviceCode);
+ task = _taskService.QueryStackerYLTask(commonStackerCrane.DeviceCode, TaskTypeGroup.OutbondGroup);
if (task == null)
{
task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrderDetail.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrderDetail.cs"
index fa425d3..72c3fcc 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrderDetail.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Outbound/Dt_OutSGOrderDetail.cs"
@@ -121,5 +121,11 @@
/// </summary>
[SugarColumn(IsNullable = false, ColumnDescription = "鍑哄簱鍗曟槑缁嗙姸鎬�")]
public int OutSGOrderDetailStatus { get; set; }
+
+ /// <summary>
+ /// 椤哄簭鍙�
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "椤哄簭鍙�")]
+ public int Number { get; set; }
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs"
index 9284f59..8a17d2e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs"
@@ -129,8 +129,8 @@
try
{
//鑾峰彇鎵�鏈夋帓绋嬪崟
- List<Dt_OutSGOrder> outSGOrders = BaseDal.Db.Queryable<Dt_OutSGOrder>().Includes(x => x.Details).ToList();
- List<Dt_OutSGOrderDetail> outSGOrderDetails= outSGOrders.SelectMany(x=>x.Details).ToList();
+ //List<Dt_OutSGOrder> outSGOrders = BaseDal.Db.Queryable<Dt_OutSGOrder>().Includes(x => x.Details).ToList();
+ //List<Dt_OutSGOrderDetail> outSGOrderDetails= outSGOrders.SelectMany(x=>x.Details).ToList();
////鍒ゆ柇鍗曟嵁
//Dt_OutSGOrderDetail? ExistAddOutOrderDetail = outSGOrderDetails.FirstOrDefault(x => outOrderDTOs.Select(t => t.BoardMpsDetailId).Distinct().Contains(x.BoardMpsDetailId));
//if (ExistAddOutOrderDetail != null)
@@ -171,11 +171,13 @@
//鍒ゆ柇宸ュ崟鏄惁宸茬粡瀛樺湪
if (ExistOutSGOrder != null)
{
+ outSGOrderDetail.Number = ExistOutSGOrder.Number;
ExistOutSGOrder.Details.Add(outSGOrderDetail);
}
else
{
Dt_OutSGOrder outSGOrder = _mapper.Map<Dt_OutSGOrder>(item);
+ outSGOrderDetail.Number = outSGOrder.Number;
outSGOrder.Details = new List<Dt_OutSGOrderDetail>() { outSGOrderDetail };
AddOutSGOrders.Add(outSGOrder);
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
index c5ad0d1..08abc09 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs"
@@ -223,7 +223,7 @@
}
if (outStockLockInfosMES != null && outStockLockInfosMES.Count() > 0)
{
- Dt_AGVStationInfo aGVStationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.AGVStationCode==task.TargetAddress);
+ Dt_AGVStationInfo aGVStationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.AGVStationCode==task.TargetAddress || x.MESPointCode == task.TargetAddress);
MESDeliveryModel mESDeliveryModel = MESDeliveryUp(outStockLockInfosMES, aGVStationInfo.MESPointCode);
MESResponse response = _invokeMESService.MESDelivery(mESDeliveryModel).DeserializeObject<MESResponse>() ?? throw new Exception("鏈幏鍙栧埌杩斿洖淇℃伅");
if (!response.Result)
@@ -804,8 +804,12 @@
{
tasks.ForEach(x =>
{
- string orderNos = string.Join(",", outStockLockInfos.Where(t => t.PalletCode == x.PalletCode).Select(x => x.OrderNo).Distinct());
+ List<Dt_OutStockLockInfo> outStockNos = outStockLockInfos.Where(t => t.PalletCode == x.PalletCode).ToList();
+ List<int> outDetailIds = outStockNos.Select(t => t.OrderDetailId).ToList();
+ int numberNo = outboundOrderDetails.Where(t => outDetailIds.Contains(t.Id)).OrderBy(x => x.Number).FirstOrDefault().Number;
+ string orderNos = string.Join(",", outStockNos.Select(t => t.OrderNo).Distinct());
x.OrderNo = orderNos;
+ x.Grade = numberNo;
});
}
BaseDal.AddData(tasks);
--
Gitblit v1.9.3