From c9982eb3dd76696b8a3851cc6411a71c402d042f Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期三, 06 十一月 2024 20:04:41 +0800
Subject: [PATCH] 11.06
---
.gitignore | 1
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs | 788 ++++++++++++++++++++++++++++----------
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs | 114 ++---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs | 3
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs | 4
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs | 2
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs | 54 +
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs | 1
Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs | 135 ++++--
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs | 5
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs | 11
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs | 21 +
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs | 2
13 files changed, 794 insertions(+), 347 deletions(-)
diff --git a/.gitignore b/.gitignore
index cd83563..3a3fac0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -973,3 +973,4 @@
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessParameters/obj/Debug/net6.0/WIDESEAWCS_IProcessRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_ProcessRepository/obj/Debug/net6.0/WIDESEAWCS_ProcessRepository.csproj.CoreCompileInputs.cache
/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/obj/Debug/net6.0/WIDESEAWCS_Tasks.csproj.CoreCompileInputs.cache
+*.txt
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
index 5733764..ec87b7c 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
@@ -20,11 +20,9 @@
using AutoMapper;
using HslCommunication;
using Newtonsoft.Json;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using Quartz;
using SqlSugar;
using System.Reflection;
-using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Helper;
@@ -121,7 +119,7 @@
{
command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
int count = string.IsNullOrEmpty(platform.Location) ? 0 + 1 : platform.Location.Split(',').Count() + 1;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count });
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
}
}
else
@@ -140,7 +138,7 @@
{
command.InteractiveSignal = commandWrite.WriteInteractiveSignal;
int count = strings.Count - index;
- method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count });
+ method.Invoke(this, new object[] { conveyorLine, command, childDeviceCode, count, platform });
}
}
}
@@ -407,28 +405,42 @@
Dt_Task task = _taskService.QueryExecutingConveyorLineTask(command.TaskNum, childDeviceCode);
if (task != null)
{
+ WebResponseContent content = new WebResponseContent();
ConveyorLineTaskCommand taskCommand = _mapper.Map<ConveyorLineTaskCommand>(task);
taskCommand.InteractiveSignal = command.InteractiveSignal;
if (task.PalletCode != command.Barcode)
{
var NGAddress = _platFormRepository.QueryFirst(x => x.PlatCode == task.TargetAddress).Capacity;
taskCommand.TargetAddress = NGAddress;
- conveyorLine.SendCommand(taskCommand, childDeviceCode);
}
else
{
taskCommand.TargetAddress = 0;
}
- // TODO璋冪敤浠诲姟瀹屾垚鎵ц浠诲姟瀹屾垚
+
+ #region 鍚慦MS涓婃姤浠诲姟瀹屾垚
+
+ WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
+ var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/CompleteTaskAsync", (new { taskNum = command.TaskNum }).ToJsonString()).Result;
+
+ content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+ // 妫�鏌ョ姸鎬佸苟杩斿洖
+ if (!content.Status)
+ return;
+
+ #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
+
+ conveyorLine.SendCommand(taskCommand, childDeviceCode);
ConveyorLineSendFinish(conveyorLine, childDeviceCode, ProtocalDetailValue, true);
- WebResponseContent content = _taskService.UpdateTaskStatusToNext(task);
+ content = _taskService.UpdateTaskStatusToNext(task);
}
}
/// <summary>
/// 鍒涘缓浠诲姟骞跺彂閫佽姹�
/// </summary>
- private WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
+ public WebResponseContent CreateAndSendTask(WMSTaskDTO taskDTO)
{
var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
if (content.Status)
@@ -445,54 +457,91 @@
/// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
/// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
/// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
- public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+ public void EmptyTrayReturn(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index, Platform platform)
{
- CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "CHSC01", "001-001-001");
+ TaskOutboundTypeEnum taskOutboundTypeEnum;
+ if (platform.PlatformType.Contains("OutTray"))
+ taskOutboundTypeEnum = TaskOutboundTypeEnum.OutTray;
+ else
+ taskOutboundTypeEnum = TaskOutboundTypeEnum.Outbound;
+ CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, platform.Stacker.Split(',')[0], platform.Stacker.Split(',').ToList());
}
- /// 闈欑疆绌烘墭鐩樺嚭搴�
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
- public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
- {
- CheckAndCreateTask((int)TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
- }
+ #region
+ ///// <summary>
+ ///// 闄堝寲瀹炵洏鍑哄簱)
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, "CHSC01", "001-001-001");
+ //}
- /// <summary>
- /// 闄堝寲鍑哄簱(瀹炵洏)
- /// </summary>
- /// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
- /// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
- /// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
- /// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
- public void ChuanhuaOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
- {
- CheckAndCreateTask((int)TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "CHSC01", "001-001-001");
- }
+ ///// 闈欑疆绌烘墭鐩樺嚭搴�
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void EmptyTrayOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.OutTray, childDeviceCode, index, "JZSC01", "002-020-001");
+ //}
+ ///// <summary>
+ ///// 闈欑疆瀹炵洏鍑哄簱
+ ///// </summary>
+ ///// <param name="conveyorLine">杈撻�佺嚎瀹炰緥瀵硅薄</param>
+ ///// <param name="command">璇诲彇鐨勮姹備俊鎭�</param>
+ ///// <param name="childDeviceCode">瀛愯澶囩紪鍙�</param>
+ ///// <param name="index">绾夸綋褰撳墠bool璇诲彇鍋忕Щ鍦板潃</param>
+ //public void JingzhiOutbound(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int index)
+ //{
+ // CheckAndCreateTask(TaskOutboundTypeEnum.Outbound, childDeviceCode, index, "JZSC01", "002-000-001");
+ //}
+ #endregion
/// <summary>
/// 妫�鏌ヤ换鍔″苟鍒涘缓鏂颁换鍔�
/// </summary>
- private void CheckAndCreateTask(int taskType, string childDeviceCode, int index, string roadWay, string sourceAddress)
+ private void CheckAndCreateTask(TaskOutboundTypeEnum taskType, string childDeviceCode, int index, string roadWay, List<string> roadways = null)
{
- var tasks = _taskRepository.QueryData(x => x.TaskType == taskType && x.TargetAddress == childDeviceCode);
+ var tasks = _taskRepository.QueryData(x => x.TaskType == (int)taskType && x.TargetAddress == childDeviceCode);
if (tasks.Count < index)
{
- var taskDTO = new WMSTaskDTO()
+ //var taskDTO = new WMSTaskDTO()
+ //{
+ // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
+ // Grade = 1,
+ // PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
+ // RoadWay = roadWay,
+ // SourceAddress = sourceAddress,
+ // TargetAddress = childDeviceCode,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // Id = 0,
+ // TaskType = (int)taskType
+ //};
+ #region 璋冪敤WMS鑾峰彇鍑哄簱浠诲姟
+ WMSTaskDTO taskDTO = new WMSTaskDTO();
+ dynamic dynamic = new
{
- TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
- Grade = 1,
- PalletCode = DateTime.Now.ToString("yyyyMMddHHmmss"),
- RoadWay = roadWay,
- SourceAddress = sourceAddress,
- TargetAddress = childDeviceCode,
- TaskState = (int)TaskOutStatusEnum.OutNew,
- Id = 0,
- TaskType = taskType
+ position = childDeviceCode,
+ tag = (int)taskType,
+ areaCdoe = roadWay,
+ roadways = roadways
};
+ var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", dynamic.ToJsonString()).Result;
+
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+ // 妫�鏌ョ姸鎬佸苟杩斿洖
+ if (!content.Status)
+ return;
+
+ taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+ #endregion
CreateAndSendTask(taskDTO);
}
diff --git a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
index f7f6183..b904bad 100644
--- a/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
+++ b/Code Management/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/ConveyorLineJob/Task/RequestInbound.cs
@@ -13,10 +13,11 @@
using WIDESEAWCS_Tasks.ConveyorLineJob;
using HslCommunication;
using OfficeOpenXml.ConditionalFormatting;
+using WIDESEAWCS_DTO.WMS;
namespace WIDESEAWCS_Tasks
{
- partial class CommonConveyorLineJob
+ public partial class CommonConveyorLineJob
{
/// <summary>
/// 澶勭悊鍑哄簱浠诲姟
@@ -34,7 +35,7 @@
bool isOutboundAndOutFinish = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.SC_OutFinish;
bool isOutboundAndLineOutExecuting = taskOut.TaskType == (int)TaskOutboundTypeEnum.Outbound && taskOut.TaskState == (int)TaskOutStatusEnum.Line_OutExecuting;
- if (isOutTray || isOutboundAndOutFinish || isOutboundAndLineOutExecuting)
+ if (isOutTray || isOutboundAndOutFinish || !isOutboundAndLineOutExecuting)
{
// 鍙戦�佸懡浠ゅ埌杈撻�佺嚎
conveyorLine.SendCommand(taskCommand, childDeviceCode);
@@ -56,13 +57,14 @@
private void HandleNewTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
// 鐗瑰畾鏉′欢涓嬪垱寤哄苟鍙戦�佺┖鎵樼洏鍏ュ簱浠诲姟
- if (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016")
+ if ((conveyorLine.DeviceCode == "1003" && childDeviceCode == "1016") || (conveyorLine.DeviceCode == "1005" && childDeviceCode == "1048"))
{
+ // 璇锋眰WMS绌烘墭鐩樹换鍔�
CreateAndSendEmptyTrayTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
}
- else if (conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088")
+ else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1088")||(conveyorLine.DeviceCode == "1004" && childDeviceCode == "1339"))
{
- // 璇锋眰WMS浠诲姟
+ // 璇锋眰WMS鍏ュ簱浠诲姟
RequestWmsTask(conveyorLine, command, childDeviceCode, ProtocalDetailValue);
}
else if ((conveyorLine.DeviceCode == "1001" && childDeviceCode == "1073") || (conveyorLine.DeviceCode == "1003" && childDeviceCode == "1002"))
@@ -109,7 +111,7 @@
/// <summary>
/// 鍒涘缓骞跺彂閫佺┖鎵樼洏浠诲姟
/// </summary>
- private void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
+ public void CreateAndSendEmptyTrayTask(CommonConveyorLine conveyorLine, ConveyorLineTaskCommand command, string childDeviceCode, int ProtocalDetailValue)
{
if (command.Barcode != "NoRead")
{
@@ -142,18 +144,38 @@
private WMSTaskDTO CreateEmptyTrayTaskDto(string barcode, string childDeviceCode)
{
// 鍒涘缓骞惰繑鍥炵┖鎵樼洏浠诲姟DTO
- return new WMSTaskDTO
+ //return new WMSTaskDTO
+ //{
+ // TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
+ // Grade = 1,
+ // PalletCode = barcode,
+ // RoadWay = "JZSC01",
+ // SourceAddress = childDeviceCode,
+ // TargetAddress = "JZSC01",
+ // TaskState = (int)TaskInStatusEnum.InNew,
+ // Id = 0,
+ // TaskType = (int)TaskInboundTypeEnum.InTray,
+ //};
+
+ #region 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
+
+ WMSTaskDTO wMSTaskDTO = new WMSTaskDTO();
+ RequestTaskDto request = new RequestTaskDto()
{
- TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
- Grade = 1,
+ Position = childDeviceCode,
PalletCode = barcode,
- RoadWay = "CHSC01",
- SourceAddress = childDeviceCode,
- TargetAddress = "CHSC01",
- TaskState = (int)TaskInStatusEnum.InNew,
- Id = 0,
- TaskType = (int)TaskInboundTypeEnum.InTray,
};
+ var result = HttpHelper.PostAsync("http:127.0.0.1:8098/api/Task/RequestTaskAsync", request.ToJsonString()).Result;
+
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(result);
+
+ // 妫�鏌ョ姸鎬佸苟杩斿洖
+ if (!content.Status)
+ return wMSTaskDTO;
+
+ return JsonConvert.DeserializeObject<WMSTaskDTO>(content.Data.ToString());
+
+ #endregion 鍚慦MS璇锋眰绌烘墭鐩樹换鍔�
}
/// <summary>
@@ -180,4 +202,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
index 7d715d8..2723c74 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
@@ -21,5 +21,6 @@
void CommitTran(MethodInfo method);
void RollbackTran();
void RollbackTran(MethodInfo method);
+ Task UseTranAsync(Func<Task> action);
}
}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
index 81607a6..4b550f4 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
@@ -190,5 +190,26 @@
}
}
}
+
+ public async Task UseTranAsync(Func<Task> action)
+ {
+ // 寮�濮嬩簨鍔�
+ _sqlSugarClient.Ado.BeginTran();
+
+ try
+ {
+ // 鎵ц浼犲叆鐨勬搷浣�
+ await action();
+
+ // 鎻愪氦浜嬪姟
+ await _sqlSugarClient.Ado.CommitTranAsync();
+ }
+ catch (Exception ex)
+ {
+ // 鍥炴粴浜嬪姟
+ await _sqlSugarClient.Ado.RollbackTranAsync();
+ throw new Exception (ex.Message); // 閲嶆柊鎶涘嚭寮傚父锛屼互渚胯皟鐢ㄦ柟鍙互澶勭悊
+ }
+ }
}
}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
index 7a0af69..8cc81fc 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -134,9 +134,12 @@
Task<WebResponseContent> RequestTaskAsync(RequestTaskDto input);
/// <summary>
- /// 璇锋眰绌烘墭鐩樹换鍔�
+ /// 璇锋眰鎵樼洏浠诲姟
/// </summary>
- /// <param name="position"></param>
- /// <returns></returns>
- Task<WebResponseContent> RequestTrayTaskAsync(string position);
+ /// <param name="position">鐩爣浣嶇疆</param>
+ /// <param name="tag">鎵樼洏绫诲瀷锛�1锛氬疄鐩橈紝2锛氱┖鐩橈級</param>
+ /// <param name="areaCode">鍖哄煙缂栫爜</param>
+ /// <param name="roadways">宸烽亾鍒楄〃</param>
+ /// <returns>杩斿洖缁撴灉闆�</returns>
+ Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways);
}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
index 9fab037..cdefd49 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
@@ -36,7 +36,7 @@
public bool IsFull { get; set; }
/// <summary>
- /// 澶囨敞 (闈欏埗)
+ /// 澶囨敞 (闈欏埗\闄堝寲鏃堕棿)
/// </summary>
[SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
public string Remark { get; set; }
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
index 36d5fa7..d880a04 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/AgingInOrOutInput/AgingInOrOutInputService.cs
@@ -23,8 +23,6 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
var inputJson = input.ToDictionary();
@@ -54,12 +52,11 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); ;
var inputJson = input.ToDictionary();
var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/AgingOutput", inputJson);
+ content.OK(data: x);
LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("闈欑疆闄堝寲鍑哄簱锛堟暣鎵樼洏锛�").Info(true, x);
content.OK();
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
index 11e418b..1459cc2 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/CellState/CellStateService.cs
@@ -1,13 +1,10 @@
锘縰sing LogLibrary.Log;
using Masuit.Tools;
-using Newtonsoft.Json;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_DTO;
-using WIDESEA_DTO.MOM;
using WIDESEA_IStorageBasicService;
using WIDESEA_IStoragIntegrationServices;
-using WIDESEA_Model.Models;
namespace WIDESEA_StoragIntegrationServices;
@@ -33,40 +30,42 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
var inputJson = input.ToDictionary();
var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/CellState", inputJson);
- if (x != null)
- {
- ResultCellState result = JsonConvert.DeserializeObject<ResultCellState>(x);
- DtBoxingInfo boxingInfo = new DtBoxingInfo()
- {
- IsFull = true,
- PalletCode = "",
- };
- var details = new List<DtBoxingInfoDetail>();
- foreach (var item in result.SerialNos)
- {
- DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
- {
- SerialNumber = item.SerialNo,
- OrderNo = item.BindCode,
- Status = item.SerialNoStatus,
- };
- details.Add(detail);
- }
- boxingInfo.BoxingInfoDetails = details;
- var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo);
- if (abc.Status)
- return content.OK("缁勭洏鎴愬姛");
- else
- return content.Error("缁勭洏澶辫触");
- }
+ #region
+ //if (x != null)
+ //{
+ // ResultCellState result = JsonConvert.DeserializeObject<ResultCellState>(x);
+ // DtBoxingInfo boxingInfo = new DtBoxingInfo()
+ // {
+ // IsFull = true,
+ // PalletCode = "",
+ // };
+ // var details = new List<DtBoxingInfoDetail>();
+ // foreach (var item in result.SerialNos)
+ // {
+ // DtBoxingInfoDetail detail = new DtBoxingInfoDetail()
+ // {
+ // SerialNumber = item.SerialNo,
+ // OrderNo = item.BindCode,
+ // Status = item.SerialNoStatus,
+ // };
+ // details.Add(detail);
+ // }
+ // boxingInfo.BoxingInfoDetails = details;
+ // var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo);
+ // if (abc.Status)
+ // return content.OK("缁勭洏鎴愬姛");
+ // else
+ // return content.Error("缁勭洏澶辫触");
+ //}
+ #endregion
+
LogFactory.GetLog("鍗曠數鑺睘鎬ц幏鍙�").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("鍗曠數鑺睘鎬ц幏鍙�").Info(true, x);
+ return x;
}
catch (Exception err)
{
@@ -88,42 +87,37 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
var inputJson = input.ToDictionary();
var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/TrayCellsStatus", inputJson);
- //if (x != null)
- //{
- // // 鍙嶅簭鍒楀寲ResultTrayCellsStatus瀵硅薄
- // ResultTrayCellsStatus result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(x);
+ if (x != null)
+ {
+ // 鍙嶅簭鍒楀寲ResultTrayCellsStatus瀵硅薄
+ //ResultTrayCellsStatus result = JsonConvert.DeserializeObject<ResultTrayCellsStatus>(x);
- // // 鍒涘缓DtBoxingInfo瀵硅薄
- // DtBoxingInfo boxingInfo = new DtBoxingInfo
- // {
- // IsFull = true,
- // PalletCode = result.TrayBarcode,
- // };
+ //// 鍒涘缓DtBoxingInfo瀵硅薄
+ //DtBoxingInfo boxingInfo = new DtBoxingInfo
+ //{
+ // IsFull = true,
+ // PalletCode = result.TrayBarcode,
+ //};
- // // 浣跨敤LINQ鍒涘缓DtBoxingInfoDetail瀵硅薄鍒楄〃
- // var details = result.SerialNos.Select(item => new DtBoxingInfoDetail
- // {
- // SerialNumber = item.SerialNo,
- // OrderNo = item.PositionNo.ToString(),
- // Status = item.SerialNoStatus,
- // Remark = result.TrayBarcodePropertys.ToJsonString(),
- // MaterielCode = result.BindCode,
- // }).ToList();
+ //// 浣跨敤LINQ鍒涘缓DtBoxingInfoDetail瀵硅薄鍒楄〃
+ //var details = result.SerialNos.Select(item => new DtBoxingInfoDetail
+ //{
+ // SerialNumber = item.SerialNo,
+ // OrderNo = item.PositionNo.ToString(),
+ // Status = item.SerialNoStatus,
+ // Remark = result.TrayBarcodePropertys.ToJsonString(),
+ // MaterielCode = result.BindCode,
+ //}).ToList();
- // // 璧嬪�糄tBoxingInfoDetails
- // boxingInfo.BoxingInfoDetails = details;
- // var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo);
- // if (abc.Status)
- // content.OK("缁勭洏鎴愬姛", result);
- // else
- // content.Error("缁勭洏澶辫触");
- //}
+ //// 璧嬪�糄tBoxingInfoDetails
+ //boxingInfo.BoxingInfoDetails = details;
+ //var abc = await _boxingInfoService.AddBoxingInfoAsync(boxingInfo);
+ content.OK("缁勭洏鎴愬姛", x);
+ }
LogFactory.GetLog("鏁寸洏鐢佃姱灞炴�ц幏鍙�").Info(true, $"\r\r--------------------------------------");
LogFactory.GetLog("鏁寸洏鐢佃姱灞炴�ц幏鍙�").Info(true, x);
}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
index 1e1d970..5ed91fb 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/ProcessApply/ProcessApplyService.cs
@@ -24,8 +24,6 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
var inputIson = input.ToDictionary();
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
index b883ec0..18f563a 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/MOM/Unbind/UnbindService.cs
@@ -26,12 +26,9 @@
try
{
input.SessionId = Guid.NewGuid().ToString();
- input.Software = "闄堝寲鏈�";
- input.EquipmentCode = "P1K10040";
input.EmployeeNo = "T00001";
input.RequestTime = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now).ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
var inputJson = input.ToDictionary();
- Console.WriteLine();
LogFactory.GetLog("鎵樼洏鍗曠數鑺В缁�1").Info(true, JsonConvert.SerializeObject(inputJson));
var x = await HttpsClient.PostAsync("http://ts-momapp01:12020/api/MachineIntegration/TrayCellUnbind", inputJson);
LogFactory.GetLog("鎵樼洏鍗曠數鑺В缁�").Info(true, $"\r\r--------------------------------------");
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
index 8149a7f..4529a37 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -1,10 +1,13 @@
-锘縰sing Mapster;
+锘縰sing log4net.Core;
+using Mapster;
using Masuit.Tools;
using WIDESEA_DTO.MOM;
using WIDESEA_DTO.WMS;
using WIDESEA_IStorageBasicRepository;
using WIDESEA_IStoragIntegrationServices;
+using WIDESEA_Model.Models;
using WIDESEA_StorageBasicRepository;
+using WIDESEA_StorageTaskRepository;
using WIDESEA_StoragIntegrationServices;
namespace WIDESEA_StorageOutTaskServices;
@@ -83,6 +86,101 @@
/// </summary>
/// <param name="saveModel">浠诲姟鏁版嵁鍚堥泦</param>
/// <returns>杩斿洖缁撴灉闆�</returns>
+ //public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
+ //{
+ // WebResponseContent content = new WebResponseContent();
+ // try
+ // {
+ // if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ // {
+ // var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
+ // .FirstAsync(x => x.EquipmentName == task.Roadway);
+ // EquipmentParameterInfo info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
+ // AgingOutputDto agingOutputDto = new AgingOutputDto()
+ // {
+ // OpFlag = 1,
+ // EquipmentCode = stock.LocationInfo.RoadwayNo,
+ // TrayBarcode = stock.PalletCode,
+ // SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto()
+ // {
+ // SlotNo = x.OrderNo.ToInt32(),
+ // SerialNo = x.SerialNumber,
+ // SerialNoResult = true,
+ // ParameterInfo = new List<ParameterInfo>()
+ // {
+ // new ParameterInfo()
+ // {
+ // LowerLomit =info.LowerControlLimit,
+ // UpperLimit = info.UpperControlLimit,
+ // ParameterResult = info.EquipmentAvailabilityFlag,
+ // ParameterCode = info.ParameterCode,
+ // ParameterDesc = info.Description,
+ // TargetValue = info.TargetValue,
+ // Value = info.TargetValue,
+ // DefectCode = info.UOMCode
+ // }
+ // }
+ // }).ToList()
+ // };
+ // content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+ // var result = JsonConvert.DeserializeObject<BasicResult>(content.ToString());
+ // if (!result.Success)
+ // {
+ // throw new Exception(result.MOMMessage);
+ // }
+ // }
+ // // 鏇存柊搴撳瓨鐘舵��
+ // var loation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ // var detail = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
+
+ // // 璁剧疆搴撲綅鐘舵�佷负绌洪棽
+ // loation.LocationStatus = LocationEnum.Free.ObjToInt();
+
+ // // 鏇存柊浠诲姟鐘舵��
+ // task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
+ // task.CurrentAddress = task.NextAddress;
+ // task.NextAddress = task.TargetAddress;
+
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", "鏇存柊搴撳瓨鐘舵�佷笌浠诲姟鐘舵��");
+
+ // // 浜嬪姟澶勭悊
+ // // 寮�濮嬩簨鍔�
+ // _unitOfWorkManage.BeginTran();
+ // // 鍒犻櫎搴撳瓨淇℃伅
+ // var isStockUpdated = _stockInfoRepository.DeleteDataById(stock.Id);
+ // // 鍒犻櫎搴撳瓨淇℃伅
+ // var isStockDetailUpdated = _stockInfoDetailRepository.DeleteDataByIds(detail.Select(x => (object)x.Id).ToArray());
+ // // 鍒犻櫎浠诲姟淇℃伅
+ // var isTaskUpdated = BaseDal.DeleteDataById(task.TaskId);
+
+ // // 濡傛灉搴撳瓨淇℃伅鍜屼换鍔′俊鎭兘鏇存柊鎴愬姛
+ // if (isStockUpdated && isTaskUpdated && isStockDetailUpdated)
+ // {
+ // // 璁板綍鏃ュ織
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", $"浜嬪姟澶勭悊瀹屾垚锛屽簱瀛樼姸鎬佹洿鏂帮細{isStockUpdated}锛屼换鍔$姸鎬佹洿鏂�:{isTaskUpdated}");
+ // // 鎻愪氦浜嬪姟
+ // _unitOfWorkManage.CommitTran();
+ // // 杩斿洖鎴愬姛缁撴灉
+ // return content.OK("浠诲姟瀹屾垚鎴愬姛");
+ // }
+ // else
+ // {
+ // // 璁板綍鏃ュ織
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", $"浜嬪姟澶勭悊澶辫触锛屽簱瀛樼姸鎬佹洿鏂帮細{isStockUpdated}锛屼换鍔$姸鎬佹洿鏂�:{isTaskUpdated}");
+ // // 鍥炴粴浜嬪姟
+ // _unitOfWorkManage.RollbackTran();
+ // // 杩斿洖澶辫触缁撴灉
+ // return content.Error("浠诲姟鎴栧簱瀛樻洿鏂板け璐�");
+ // }
+ // }
+ // catch (Exception err)
+ // {
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, $"绯荤粺寮傚父锛屽紓甯镐俊鎭細{err.Message}", "");
+ // Console.WriteLine(err.Message);
+ // return content.Error(err.Message);
+ // }
+ //}
+
public async Task<WebResponseContent> CompleteStackTaskAsync(Dt_Task task, DtStockInfo stock)
{
WebResponseContent content = new WebResponseContent();
@@ -91,89 +189,126 @@
if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
{
var process = await SqlSugarHelper.Db.Queryable<Dt_EquipmentProcess>()
- .FirstAsync(x => x.EquipmentName == task.Roadway);
- EquipmentParameterInfo info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
- AgingOutputDto agingOutputDto = new AgingOutputDto()
- {
- OpFlag = 1,
- EquipmentCode = stock.LocationInfo.RoadwayNo,
- TrayBarcode = stock.PalletCode,
- SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto()
- {
- SlotNo = x.OrderNo.ToInt32(),
- SerialNo = x.SerialNumber,
- SerialNoResult = true,
- ParameterInfo = new List<ParameterInfo>()
- {
- new ParameterInfo()
- {
- LowerLomit =info.LowerControlLimit,
- UpperLimit = info.UpperControlLimit,
- ParameterResult = info.EquipmentAvailabilityFlag,
- ParameterCode = info.ParameterCode,
- ParameterDesc = info.Description,
- TargetValue = info.TargetValue,
- Value = info.TargetValue,
- DefectCode = info.UOMCode
- }
- }
- }).ToList()
- };
+ .FirstAsync(x => x.EquipmentName == task.Roadway);
+ var info = JsonConvert.DeserializeObject<EquipmentParameterInfo>(process.ProcessValue);
+
+ var agingOutputDto = MapToAgingOutputDto(stock, info);
+ content = await _agingInOrOutInputService.GetOCVOutputAsync(agingOutputDto);
+ ValidateResponse(content);
}
- // 鏇存柊搴撳瓨鐘舵��
- var loation = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
- var detail = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
- // 璁剧疆搴撲綅鐘舵�佷负绌洪棽
- loation.LocationStatus = LocationEnum.Free.ObjToInt();
-
-
- // 鏇存柊浠诲姟鐘舵��
- task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
- task.CurrentAddress = task.NextAddress;
- task.NextAddress = task.TargetAddress;
-
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", "鏇存柊搴撳瓨鐘舵�佷笌浠诲姟鐘舵��");
+ // 鏇存柊搴撳瓨鐘舵�佸拰浠诲姟鐘舵��
+ (var loc, var tas) = UpdateStockAndTaskStatus(stock, task);
// 浜嬪姟澶勭悊
- // 寮�濮嬩簨鍔�
- _unitOfWorkManage.BeginTran();
- // 鍒犻櫎搴撳瓨淇℃伅
- var isStockUpdated = _stockInfoRepository.DeleteDataById(stock.Id);
- // 鍒犻櫎搴撳瓨淇℃伅
- var isStockDetailUpdated = _stockInfoDetailRepository.DeleteDataByIds(detail.Select(x => (object)x.Id).ToArray());
- // 鍒犻櫎浠诲姟淇℃伅
- var isTaskUpdated = BaseDal.DeleteDataById(task.TaskId);
+ await _unitOfWorkManage.UseTranAsync(async () =>
+ {
+ await UpdateLocationAsync(loc);
+ await DeleteStockInfoAsync(stock.Id);
+ await DeleteStockInfoDetailsAsync(stock.StockInfoDetails);
+ await DeleteTaskAsync(task.TaskId);
+ });
- // 濡傛灉搴撳瓨淇℃伅鍜屼换鍔′俊鎭兘鏇存柊鎴愬姛
- if (isStockUpdated && isTaskUpdated && isStockDetailUpdated)
- {
- // 璁板綍鏃ュ織
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", $"浜嬪姟澶勭悊瀹屾垚锛屽簱瀛樼姸鎬佹洿鏂帮細{isStockUpdated}锛屼换鍔$姸鎬佹洿鏂�:{isTaskUpdated}");
- // 鎻愪氦浜嬪姟
- _unitOfWorkManage.CommitTran();
- // 杩斿洖鎴愬姛缁撴灉
- return content.OK("浠诲姟瀹屾垚鎴愬姛");
- }
- else
- {
- // 璁板綍鏃ュ織
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", $"浜嬪姟澶勭悊澶辫触锛屽簱瀛樼姸鎬佹洿鏂帮細{isStockUpdated}锛屼换鍔$姸鎬佹洿鏂�:{isTaskUpdated}");
- // 鍥炴粴浜嬪姟
- _unitOfWorkManage.RollbackTran();
- // 杩斿洖澶辫触缁撴灉
- return content.Error("浠诲姟鎴栧簱瀛樻洿鏂板け璐�");
- }
+ return content.OK("浠诲姟瀹屾垚鎴愬姛");
}
catch (Exception err)
{
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, $"绯荤粺寮傚父锛屽紓甯镐俊鎭細{err.Message}", "");
- Console.WriteLine(err.Message);
+ LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, $"绯荤粺寮傚父锛屽紓甯镐俊鎭細{err.Message}");
return content.Error(err.Message);
}
}
- #endregion 鍫嗗灈鏈哄嚭搴撲换鍔″畬鎴�
+ private AgingOutputDto MapToAgingOutputDto(DtStockInfo stock, EquipmentParameterInfo info)
+ {
+ return new AgingOutputDto
+ {
+ OpFlag = 1,
+ EquipmentCode = stock.LocationInfo.RoadwayNo,
+ TrayBarcode = stock.PalletCode,
+ SerialNos = stock.StockInfoDetails.Select(x => new SerialNoOutDto
+ {
+ SlotNo = x.OrderNo.ToInt32(),
+ SerialNo = x.SerialNumber,
+ SerialNoResult = true,
+ ParameterInfo = new List<ParameterInfo>
+ {
+ new ParameterInfo
+ {
+ LowerLomit = info.LowerControlLimit,
+ UpperLimit = info.UpperControlLimit,
+ ParameterResult = info.EquipmentAvailabilityFlag,
+ ParameterCode = info.ParameterCode,
+ ParameterDesc = info.Description,
+ TargetValue = info.TargetValue,
+ Value = info.TargetValue,
+ DefectCode = info.UOMCode
+ }
+ }
+ }).ToList()
+ };
+ }
+
+ private void ValidateResponse(WebResponseContent content)
+ {
+ var result = JsonConvert.DeserializeObject<BasicResult>(content.ToString());
+ if (!result.Success)
+ {
+ throw new Exception(result.MOMMessage);
+ }
+ }
+
+ private (DtLocationInfo, Dt_Task) UpdateStockAndTaskStatus(DtStockInfo stock, Dt_Task task)
+ {
+ var location = _locationRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ var details = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id);
+
+ location.LocationStatus = LocationEnum.Free.ObjToInt();
+ task.TaskState = TaskOutStatusEnum.OutFinish.ObjToInt();
+ task.CurrentAddress = task.NextAddress;
+ task.NextAddress = task.TargetAddress;
+
+ LogFactory.GetLog("浠诲姟瀹屾垚").Info(true, "鏇存柊搴撳瓨鐘舵�佷笌浠诲姟鐘舵��");
+ return (location, task);
+ }
+
+ private async Task DeleteStockInfoAsync(int stockId)
+ {
+ var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(stockId);
+ if (!isStockUpdated)
+ {
+ throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+ }
+ }
+
+ private async Task UpdateLocationAsync(DtLocationInfo info)
+ {
+ var isStockUpdated = await _locationRepository.UpdateDataAsync(info);
+ if (!isStockUpdated)
+ {
+ throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+ }
+ }
+
+ private async Task DeleteStockInfoDetailsAsync(IEnumerable<DtStockInfoDetail> details)
+ {
+ var ids = details.Select(x => (object)x.Id).ToArray();
+ var isStockDetailUpdated = await _stockInfoDetailRepository.DeleteDataByIdsAsync(ids);
+ if (!isStockDetailUpdated)
+ {
+ throw new Exception("搴撳瓨璇︽儏淇℃伅鏇存柊澶辫触");
+ }
+ }
+
+ private async Task DeleteTaskAsync(int taskId)
+ {
+ var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(taskId);
+ if (!isTaskUpdated)
+ {
+ throw new Exception("浠诲姟淇℃伅鏇存柊澶辫触");
+ }
+ }
+
+ #endregion 鍑哄簱浠诲姟瀹屾垚
#region 绉诲簱浠诲姟瀹屾垚
@@ -215,85 +350,187 @@
/// </summary>
/// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
/// <returns>杩斿洖缁撴灉闆�</returns>
+ //public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
+ //{
+ // WebResponseContent content = new WebResponseContent();
+ // try
+ // {
+ // var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+ // var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
+
+ // locationInf.LocationStatus = (int)LocationEnum.InStock;
+
+ // // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+ // var taskHty = CreateHistoricalTask(task);
+
+ // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
+ // DtStockInfo stock;
+ // if (boxing == null)
+ // {
+ // // 绌烘墭鐩�
+
+ // stock = new DtStockInfo()
+ // {
+ // PalletCode = task.PalletCode,
+ // LocationCode = task.TargetAddress,
+ // CreateDate = DateTime.Now,
+ // Creater = "system",
+ // IsFull = boxing.IsFull,
+ // StockInfoDetails = new List<DtStockInfoDetail>()
+ // {
+ // new DtStockInfoDetail()
+ // {
+ // MaterielCode = "绌烘墭鐩�",
+ // Id = 0,
+ // }
+ // }
+ // };
+ // }
+ // else
+ // {
+ // // 瀹炵洏
+ // var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+ // // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
+ // stock = new DtStockInfo()
+ // {
+ // PalletCode = task.PalletCode,
+ // LocationCode = task.TargetAddress,
+ // CreateDate = DateTime.Now,
+ // Creater = "system",
+ // IsFull = boxing.IsFull,
+ // StockInfoDetails = boxDetail,
+ // };
+
+ // AgingInputDto agingInputDto = new AgingInputDto()
+ // {
+ // SerialNos = boxing.BoxingInfoDetails
+ // .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
+ // .ToList(),
+ // TrayBarcode = task.PalletCode,
+ // OpFlag = 1
+ // };
+ // var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto);
+ // stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
+
+ // LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
+
+ // }
+
+ // // 鎵ц鏁版嵁搴撲簨鍔�
+ // bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
+ // if (isResult)
+ // content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
+ // else
+ // content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触");
+ // }
+ // catch (Exception err)
+ // {
+ // Console.WriteLine(err.Message.ToString());
+ // }
+ // return content;
+ //}
+
+ /// <summary>
+ /// 瀹屾垚鍏ュ簱浠诲姟
+ /// </summary>
+ /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
+ /// <returns>杩斿洖缁撴灉闆�</returns>
public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
{
+ // 鍒濆鍖栧搷搴斿唴瀹�
WebResponseContent content = new WebResponseContent();
try
{
+ // 鑾峰彇瑁呯淇℃伅鍜岀洰鏍囦綅缃俊鎭�
var boxing = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
var locationInf = await _locationRepository.QueryFirstAsync(x => x.LocationCode == task.TargetAddress);
+ // 鏇存柊鐩爣浣嶇疆鐘舵�佷负搴撳瓨涓�
locationInf.LocationStatus = (int)LocationEnum.InStock;
// 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
var taskHty = CreateHistoricalTask(task);
- // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
- DtStockInfo stock;
- if (boxing == null)
- {
- // 绌烘墭鐩�
-
- stock = new DtStockInfo()
- {
- PalletCode = task.PalletCode,
- LocationCode = task.TargetAddress,
- CreateDate = DateTime.Now,
- Creater = "system",
- IsFull = boxing.IsFull,
- StockInfoDetails = new List<DtStockInfoDetail>()
- {
- new DtStockInfoDetail()
- {
- MaterielCode = "绌烘墭鐩�",
- Id = 0,
- }
- }
- };
- }
- else
- {
- // 瀹炵洏
- var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
- // 鍒涘缓搴撳瓨瀹炰緥妯″瀷
- stock = new DtStockInfo()
- {
- PalletCode = task.PalletCode,
- LocationCode = task.TargetAddress,
- CreateDate = DateTime.Now,
- Creater = "system",
- IsFull = boxing.IsFull,
- StockInfoDetails = boxDetail,
- };
-
- AgingInputDto agingInputDto = new AgingInputDto()
- {
- SerialNos = boxing.BoxingInfoDetails
- .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
- .ToList(),
- TrayBarcode = task.PalletCode,
- OpFlag = 1
- };
- var result = await _agingInOrOutInputService.GetOCVInputAsync(agingInputDto);
- stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
-
-
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
-
- }
+ // 鏍规嵁鏄惁鏈夌粍鐩樹俊鎭垱寤哄簱瀛樺疄渚嬫ā鍨�
+ DtStockInfo stock = boxing == null ? CreateEmptyPalletStock(task, locationInf) : CreateFullPalletStock(task, locationInf, boxing);
// 鎵ц鏁版嵁搴撲簨鍔�
bool isResult = await ExecuteTransaction(stock, taskHty, locationInf, task.TaskId);
if (isResult)
+ {
content.OK("鍏ュ簱浠诲姟瀹屾垚鎴愬姛");
+ }
else
+ {
content.Error("鍏ュ簱浠诲姟瀹屾垚澶辫触");
+ }
}
catch (Exception err)
{
+ // 璁板綍寮傚父淇℃伅鍒版帶鍒跺彴鍜屾棩蹇�
Console.WriteLine(err.Message.ToString());
+ LogFactory.GetLog("浠诲姟瀹屾垚").Error(true, err);
}
return content;
+ }
+
+ /// <summary>
+ /// 鍒涘缓绌烘墭鐩樼殑搴撳瓨瀹炰緥妯″瀷
+ /// </summary>
+ private DtStockInfo CreateEmptyPalletStock(Dt_Task task, DtLocationInfo locationInf)
+ {
+ return new DtStockInfo()
+ {
+ PalletCode = task.PalletCode,
+ LocationCode = task.TargetAddress,
+ CreateDate = DateTime.Now,
+ Creater = "system",
+ IsFull = false,
+ AreaCode = task.Roadway,
+ StockInfoDetails = new List<DtStockInfoDetail>()
+ {
+ new DtStockInfoDetail()
+ {
+ MaterielCode = "绌烘墭鐩�",
+ Id = 0,
+ }
+ }
+ };
+ }
+
+ /// <summary>
+ /// 鍒涘缓瀹炵洏鐨勫簱瀛樺疄渚嬫ā鍨嬪苟璋冪敤MOM鍏ュ簱
+ /// </summary>
+ private DtStockInfo CreateFullPalletStock(Dt_Task task, DtLocationInfo locationInf, DtBoxingInfo boxing)
+ {
+ var boxDetail = boxing.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+ var stock = new DtStockInfo()
+ {
+ PalletCode = task.PalletCode,
+ LocationCode = task.TargetAddress,
+ CreateDate = DateTime.Now,
+ Creater = "system",
+ IsFull = boxing.IsFull,
+ AreaCode = task.Roadway,
+ StockInfoDetails = boxDetail,
+ };
+
+ // 澶勭悊璇锋眰鍙傛暟
+ AgingInputDto agingInputDto = new AgingInputDto()
+ {
+ SerialNos = boxing.BoxingInfoDetails
+ .Select(item => new SerialNoInDto { SerialNo = item.SerialNumber, PositionNo = item.OrderNo })
+ .ToList(),
+ TrayBarcode = task.PalletCode,
+ OpFlag = 1
+ };
+ var result = _agingInOrOutInputService.GetOCVInputAsync(agingInputDto).Result;
+ stock.Remark = JsonConvert.DeserializeObject<ResponeAgingInputDto>(result.Data.ToString()).LinedProcessFeedbackTime;
+
+ // 璁板綍鏃ュ織
+ LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟瀹屾垚", $"璐т綅鍦板潃锛歿task.TargetAddress},淇敼鍚庤揣浣嶆暟鎹細{locationInf}");
+
+ return stock;
}
#endregion 鍏ュ簱浠诲姟瀹屾垚
@@ -301,13 +538,15 @@
#region 浠诲姟瀹屾垚
/// <summary>
- /// 浠诲姟瀹屾垚
+ /// 瀹屾垚浠诲姟
/// </summary>
- /// <param name="taskNum">浠诲姟鍙�</param>
- /// <returns></returns>
+ /// <param name="taskNum">浠诲姟缂栧彿</param>
+ /// <returns>杩斿洖缁撴灉闆�</returns>
public async Task<WebResponseContent> CompleteAsync(int taskNum)
{
+ // 鍒濆鍖栧搷搴斿唴瀹�
WebResponseContent content = new WebResponseContent();
+
// 鎻愬彇浠诲姟鏁版嵁
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鎻愬彇浠诲姟鏁版嵁", $"浠诲姟鍙凤細{taskNum}");
@@ -321,61 +560,28 @@
// 楠岃瘉搴撳瓨鏄惁瀛樺湪
var stock = await _stockInfoRepository.QueryFirstAsync(x => x.PalletCode == task.PalletCode);
- if (stock == null)
+
+ // 鏍规嵁浠诲姟绫诲瀷璋冪敤鐩稿簲鐨勫畬鎴愪换鍔℃柟娉�
+ switch (task.TaskType)
{
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "搴撳瓨涓嶅瓨鍦ㄥ瓨鍦紝鍒ゆ柇鏄惁鏄叆搴撲换鍔�", $"{task.TaskType}");
- if (task.TaskType == (int)TaskInboundTypeEnum.Inbound)
- {
+ case (int)TaskInboundTypeEnum.Inbound:
+ case (int)TaskInboundTypeEnum.InTray:
LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍏ュ簱浠诲姟", "");
return await CompleteInboundTaskAsync(task);
- }
- else if (task.TaskType == (int)TaskInboundTypeEnum.InTray)
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "绌烘墭鐩樺叆搴�", "");
- return await CompleteInboundTaskAsync(task);
- }
- else
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "浠诲姟鐘舵�佸紓甯�", "");
- return content.Error("浠诲姟鐘舵�佸紓甯�");
- }
- }
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "楠岃瘉搴撳瓨鏄惁瀛樺湪", JsonConvert.SerializeObject(stock));
- if (task.TaskType == (int)TaskOutboundTypeEnum.Outbound)
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
- if (task.TaskState == TaskOutStatusEnum.Line_OutFinish.ObjToInt())
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍫嗗灈鏈哄嚭搴撳畬鎴�", "");
+ case (int)TaskOutboundTypeEnum.OutTray:
+ case (int)TaskOutboundTypeEnum.Outbound:
+ LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鍑哄簱浠诲姟", "");
return await CompleteStackTaskAsync(task, stock);
- }
- else if (task.TaskState == TaskOutStatusEnum.SC_OutExecuting.ObjToInt())
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "搴撳瓨涓嶅瓨鍦ㄤ篃涓嶆槸鍏ュ簱浠诲姟", "");
- return content.Error("搴撳瓨涓嶅瓨鍦�");
- }
- else
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "浠诲姟鐘舵�佸紓甯�", "");
- return content.Error("浠诲姟鐘舵�佸紓甯�");
- }
- }
- else if (task.TaskType == (int)TaskTypeEnum.RelocationIn)
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "绉诲簱浠诲姟瀹屾垚", "");
- return await CompleteTransferTaskAsync(task, stock);
- }
- else
- {
- LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, $"浠诲姟鐘舵�佸紓甯�", "鏃犲弬鏁�");
- return content.Error("浠诲姟鐘舵�佸紓甯�");
+
+ default:
+ return content.Error("浠诲姟绫诲瀷涓嶅瓨鍦�");
}
}
#endregion 浠诲姟瀹屾垚
- #region 璇锋眰浠诲姟
+ #region 璇锋眰浠诲姟鍏ュ簱
/// <summary>
/// 璇锋眰浠诲姟
@@ -505,64 +711,222 @@
}
}
- #endregion 璇锋眰浠诲姟
+ #endregion 璇锋眰浠诲姟鍏ュ簱
- #region 璇锋眰绌烘墭鐩�
+ #region 璇锋眰鍑哄簱
- public async Task<WebResponseContent> RequestTrayTaskAsync(string position)
+ //public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCdoe,List<string> roadways)
+ //{
+ // WebResponseContent content = new WebResponseContent();
+ // try
+ // {
+ // // 1==瀹炵洏 2 ==绌虹洏
+ // if (tag == 1)
+ // {
+ // // 鏌ヨ搴撳瓨淇℃伅
+ // DtStockInfo? stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
+ // // 鍒涘缓鏂颁换鍔″疄渚�
+ // var task = new Dt_Task()
+ // {
+ // Grade = 1,
+ // Roadway = stockInfo.LocationInfo.RoadwayNo,
+ // TargetAddress = position,
+ // Dispatchertime = DateTime.Now,
+ // MaterialNo = "",
+ // NextAddress = position,
+ // OrderNo = null,
+ // PalletCode = stockInfo.PalletCode,
+ // SourceAddress = stockInfo.LocationCode,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // TaskType = (int)TaskOutboundTypeEnum.Outbound,
+ // TaskNum = await BaseDal.GetTaskNo(),
+ // Creater = "Systeam"
+ // };
+ // var taskId = await BaseDal.AddDataAsync(task);
+ // bool isResult = taskId > 0;
+ // if (isResult)
+ // {
+ // WMSTaskDTO taskDTO = new WMSTaskDTO()
+ // {
+ // TaskNum = task.TaskNum.Value,
+ // Grade = 1,
+ // PalletCode = DateTime.Now.ToString("MMddHHmmss"),
+ // RoadWay = task.Roadway,
+ // SourceAddress = stockInfo.LocationCode,
+ // TargetAddress = task.Roadway,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // Id = 0,
+ // TaskType = (int)TaskOutboundTypeEnum.OutTray
+ // };
+ // stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
+ // _locationRepository.UpdateData(stockInfo.LocationInfo);
+ // content.OK(data: taskDTO);
+ // }
+ // }
+ // else
+ // {
+ // var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == areaCdoe && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo)).OrderBy(x => x.CreateDate).FirstOrDefault();
+ // // 鍒涘缓鏂颁换鍔″疄渚�
+ // var task = new Dt_Task
+ // {
+ // CurrentAddress = stockInfo.LocationCode,
+ // Grade = 1,
+ // Roadway = stockInfo.LocationInfo.RoadwayNo,
+ // TargetAddress = position,
+ // Dispatchertime = DateTime.Now,
+ // MaterialNo = "",
+ // NextAddress = position,
+ // OrderNo = null,
+ // PalletCode = stockInfo.PalletCode,
+ // SourceAddress = stockInfo.LocationCode,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // TaskType = (int)TaskOutboundTypeEnum.OutTray,
+ // TaskNum = await BaseDal.GetTaskNo(),
+ // Creater = "Systeam"
+ // };
+
+ // var taskId = await BaseDal.AddDataAsync(task);
+ // bool isResult = taskId > 0;
+ // if (isResult)
+ // {
+ // WMSTaskDTO taskDTO = new WMSTaskDTO()
+ // {
+ // TaskNum = task.TaskNum.Value,
+ // Grade = 1,
+ // PalletCode = DateTime.Now.ToString("MMddHHmmss"),
+ // RoadWay = task.Roadway,
+ // SourceAddress = stockInfo.LocationCode,
+ // TargetAddress = task.Roadway,
+ // TaskState = (int)TaskOutStatusEnum.OutNew,
+ // Id = 0,
+ // TaskType = (int)TaskOutboundTypeEnum.OutTray
+ // };
+ // content.OK(data: taskDTO);
+ // }
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // throw;
+ // }
+ // return content;
+ //}
+
+ /// <summary>
+ /// 璇锋眰鎵樼洏浠诲姟
+ /// </summary>
+ /// <param name="position">鐩爣浣嶇疆</param>
+ /// <param name="tag">鎵樼洏绫诲瀷锛�1锛氬疄鐩橈紝2锛氱┖鐩橈級</param>
+ /// <param name="areaCode">鍖哄煙缂栫爜</param>
+ /// <param name="roadways">宸烽亾缂栫爜闆嗗悎</param>
+ /// <returns>杩斿洖缁撴灉闆�</returns>
+ public async Task<WebResponseContent> RequestTrayTaskAsync(string position, int tag, string areaCode, List<string> roadways)
{
WebResponseContent content = new WebResponseContent();
try
{
- var area = _areaInfoRepository.QueryFirst(x => x.AreaCode == "CH");
+ // 鏍规嵁鎵樼洏绫诲瀷鏌ヨ搴撳瓨淇℃伅
+ DtStockInfo stockInfo = tag == 1
+ ? QueryStockInfoForRealTray(areaCode, roadways)
+ : QueryStockInfoForEmptyTray(areaCode, roadways);
- var stockInfo = _stockInfoRepository.QueryData(x => x.LocationInfo.AreaId == area.AreaID && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�")).OrderBy(x => x.CreateDate).FirstOrDefault();
- // 鍒涘缓鏂颁换鍔″疄渚�
- var task = new Dt_Task
+ if (stockInfo == null)
{
- CurrentAddress = stockInfo.LocationCode,
- Grade = 1,
- Roadway = stockInfo.LocationInfo.RoadwayNo,
- TargetAddress = position,
- Dispatchertime = DateTime.Now,
- MaterialNo = "",
- NextAddress = position,
- OrderNo = null,
- PalletCode = stockInfo.PalletCode,
- SourceAddress = stockInfo.LocationCode,
- TaskState = (int)TaskOutStatusEnum.OutNew,
- TaskType = (int)TaskOutboundTypeEnum.OutTray,
- TaskNum = await BaseDal.GetTaskNo(),
- Creater = "Systeam"
- };
+ return content.Error("搴撳瓨淇℃伅涓嶅瓨鍦�");
+ }
+ // 鍒涘缓鏂颁换鍔″疄渚�
+ var task = CreateTask(stockInfo, position, tag);
var taskId = await BaseDal.AddDataAsync(task);
bool isResult = taskId > 0;
- if (isResult)
+ if (!isResult)
{
- WMSTaskDTO taskDTO = new WMSTaskDTO()
- {
- TaskNum = task.TaskNum.Value,
- Grade = 1,
- PalletCode = DateTime.Now.ToString("MMddHHmmss"),
- RoadWay = task.Roadway,
- SourceAddress = stockInfo.LocationCode,
- TargetAddress = task.Roadway,
- TaskState = (int)TaskOutStatusEnum.OutNew,
- Id = 0,
- TaskType = (int)TaskOutboundTypeEnum.OutTray
- };
- content.OK(data: taskDTO);
+ return content.Error("浠诲姟鍒涘缓澶辫触");
}
+
+ // 鍒涘缓浠诲姟DTO
+ WMSTaskDTO taskDTO = CreateTaskDTO(task);
+ if (tag == 1)
+ {
+ // 鏇存柊搴撳瓨浣嶇疆鐘舵�佷负涓嶅彲鐢�
+ stockInfo.LocationInfo.LocationStatus = (int)LocationEnum.InStockDisable;
+ await _locationRepository.UpdateDataAsync(stockInfo.LocationInfo);
+ }
+
+ // 杩斿洖鎴愬姛鍝嶅簲
+ return content.OK(data: taskDTO);
}
catch (Exception ex)
{
+ // 璁板綍寮傚父淇℃伅骞舵姏鍑�
+ LogFactory.GetLog("璇锋眰鎵樼洏浠诲姟").Error(true, ex);
throw;
}
- return content;
}
- #endregion 璇锋眰绌烘墭鐩�
+ /// <summary>
+ /// 鏌ヨ瀹炵洏搴撳瓨淇℃伅
+ /// </summary>
+ private DtStockInfo QueryStockInfoForRealTray(string areaCode, List<string> roadways)
+ {
+ return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && roadways.Contains(x.LocationInfo.RoadwayNo))
+ .OrderBy(x => x.CreateDate)
+ .FirstOrDefault();
+ }
+
+ /// <summary>
+ /// 鏌ヨ绌虹洏搴撳瓨淇℃伅
+ /// </summary>
+ private DtStockInfo QueryStockInfoForEmptyTray(string areaCode, List<string> roadways)
+ {
+ return _stockInfoRepository.QueryData(x => x.AreaCode == areaCode && x.StockInfoDetails.Any(z => z.MaterielCode == "绌烘墭鐩�") && roadways.Contains(x.LocationInfo.RoadwayNo))
+ .OrderBy(x => x.CreateDate)
+ .FirstOrDefault();
+ }
+
+ /// <summary>
+ /// 鍒涘缓浠诲姟瀹炰緥
+ /// </summary>
+ private Dt_Task CreateTask(DtStockInfo stockInfo, string position, int tag)
+ {
+ return new Dt_Task
+ {
+ Grade = 1,
+ Roadway = stockInfo.LocationInfo.RoadwayNo,
+ TargetAddress = position,
+ Dispatchertime = DateTime.Now,
+ MaterialNo = "",
+ NextAddress = position,
+ OrderNo = null,
+ PalletCode = stockInfo.PalletCode,
+ SourceAddress = stockInfo.LocationCode,
+ TaskState = (int)TaskOutStatusEnum.OutNew,
+ TaskType = tag == 1 ? (int)TaskOutboundTypeEnum.Outbound : (int)TaskOutboundTypeEnum.OutTray,
+ TaskNum = BaseDal.GetTaskNo().Result,
+ Creater = "System" // 淇鎷煎啓閿欒
+ };
+ }
+
+ /// <summary>
+ /// 鍒涘缓浠诲姟DTO
+ /// </summary>
+ private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+ {
+ return new WMSTaskDTO
+ {
+ TaskNum = task.TaskNum.Value,
+ Grade = 1,
+ PalletCode = task.PalletCode,
+ RoadWay = task.Roadway,
+ SourceAddress = task.SourceAddress,
+ TargetAddress = task.TargetAddress,
+ TaskState = task.TaskState.Value,
+ Id = 0,
+ TaskType = task.TaskType,
+ };
+ }
+
+ #endregion 璇锋眰鍑哄簱
#region 闄堝寲璇锋眰鍑哄簱
@@ -573,8 +937,8 @@
try
{
var area = _areaInfoRepository.QueryFirst(x => x.AreaName == "闄堝寲鍖�");
- // 鏌ヨ搴撳瓨淇℃伅
+ // 鏌ヨ搴撳瓨淇℃伅
var stockInfo = _stockInfoRepository.QueryData(x => x.AreaCode == area.AreaCode && Convert.ToDateTime(x.Remark) < DateTime.Now && x.LocationInfo.LocationStatus == (int)LocationEnum.InStock).OrderBy(x => x.CreateDate).FirstOrDefault();
// 鍒涘缓鏂颁换鍔″疄渚�
var task = new Dt_Task()
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
index e8ceb08..7583011 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/TaskController.cs
@@ -61,8 +61,8 @@
/// <param name="input">璇锋眰鏁版嵁</param>
/// <returns></returns>
[HttpPost, AllowAnonymous, Route("RequestTrayTaskAsync")]
- public async Task<WebResponseContent> RequestTrayTaskAsync([FromBody] string position)
+ public async Task<WebResponseContent> RequestTrayTaskAsync([FromBody] string position, int tag, string areaCdoe, List<string> roadways)
{
- return await Service.RequestTrayTaskAsync(position);
+ return await Service.RequestTrayTaskAsync(position, tag, areaCdoe, roadways);
}
}
\ No newline at end of file
--
Gitblit v1.9.3