From 2950220f98f891a64cc452478e2a2ae61b82a8cd Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期日, 13 四月 2025 16:21:52 +0800
Subject: [PATCH] 优化代码、添加大屏
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs | 432 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 366 insertions(+), 66 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
index f88110a..bb09de9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs"
@@ -8,6 +8,12 @@
using WIDESEA_DTO.Stock;
using WIDESEA_Model.Models;
using WIDESEA_Core.Helper;
+using Newtonsoft.Json;
+using WIDESEA_DTO.WCSInfo;
+using WIDESEAWCS_DTO.WCSInfo;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using WIDESEA_Common.TaskEnum;
+using System.Collections;
namespace WIDESEA_TaskInfoService
{
@@ -44,6 +50,7 @@
TaskState = OutTaskStatusEnum.OutNew.ObjToInt(),
TaskType = TaskTypeEnum.Outbound.ObjToInt(),
TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
+ //TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
};
tasks.Add(task);
}
@@ -51,7 +58,6 @@
}
return tasks;
}
-
/// <summary>
/// 鍑哄簱浠诲姟鏁版嵁澶勭悊
/// </summary>
@@ -59,57 +65,186 @@
/// <param name="stockSelectViews"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
- public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) OutboundTaskDataHandle(int orderDetailId, List<StockSelectViewDTO> stockSelectViews)
+ public (List<Dt_Task>?, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, List<Dt_LocationInfo>?, Dt_OutboundOrder?) OutboundTaskDataHandle(int[] keys)
{
- List<Dt_Task> tasks = new List<Dt_Task>();
- Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId);
+ List<Dt_Task>? tasks = new List<Dt_Task>();
+ List<Dt_OutboundOrderDetail> outboundOrderDetails = _outboundService.OutboundOrderDetailService.Repository.QueryData(x => keys.Contains(x.Id));
- if (outboundOrderDetail == null)
+ if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
{
throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
}
-
- if (stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity)
+ if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt()) != null)
{
- throw new Exception("閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
+ throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
}
- List<Dt_StockInfo>? stockInfos = null;
- Dt_OutboundOrderDetail? orderDetail = null;
+ List<Dt_StockInfo>? stockInfos = new List<Dt_StockInfo>();
+ List<Dt_OutboundOrderDetail>? orderDetails = null;
List<Dt_OutStockLockInfo>? outStockLockInfos = null;
List<Dt_LocationInfo>? locationInfos = null;
- if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
- {
- (List<Dt_StockInfo>, Dt_OutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews);
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- tasks = GetTasks(result.Item1);
- result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- result.Item3.ForEach(x =>
- {
- x.Status = OutStockStatus.鍑哄簱涓�.ObjToInt();
- });
+ List<Dt_LocationInfo>? locationInfos1 = null;
+ Dt_OutboundOrder? outboundOrder = null;
- stockInfos = result.Item1;
- orderDetail = result.Item2;
- outStockLockInfos = result.Item3;
- locationInfos = result.Item4;
- }
- else
- {
- throw new Exception("鏃犲簱瀛�");
- }
+ (List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, Dt_OutboundOrder?) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result1 = GetTasks(result.Item1, TaskTypeEnum.Outbound, result.Item4);
+ tasks = result1.Item1;
+ locationInfos1 = result1.Item2;
+ stockInfos.AddRange(result1.Item3);
+
+ stockInfos.AddRange(result.Item1);
+ orderDetails = result.Item2;
+ outStockLockInfos = result.Item3;
+ locationInfos = result.Item4;
+ outboundOrder = result.Item5;
}
else
{
- List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId);
- if (stockLockInfos != null && stockLockInfos.Count > 0)
- {
- List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList());
- tasks = GetTasks(stocks);
- }
+ throw new Exception("鏃犲簱瀛�");
}
- return (tasks, stockInfos, orderDetail == null ? null : new List<Dt_OutboundOrderDetail> { orderDetail }, outStockLockInfos, locationInfos);
+ return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos, locationInfos1, outboundOrder);
+ }
+ /// <summary>
+ /// 搴撳瓨鏁版嵁杞嚭搴撲换鍔�
+ /// </summary>
+ /// <param name="stockInfos"></param>
+ /// <returns></returns>
+ public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetTasks(List<Dt_StockInfo> stockInfos, TaskTypeEnum taskType, List<Dt_LocationInfo>? locationInfos)
+ {
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_LocationInfo> locations = new List<Dt_LocationInfo>();
+ List<Dt_StockInfo> stocks = new List<Dt_StockInfo>();
+ foreach (var item in stockInfos.GroupBy(x => x.LocationCode))
+ {
+ Dt_LocationInfo locationInfo = locationInfos.First(x => x.LocationCode == item.Key);
+ (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result = GetRelocationTask(locationInfo);
+ tasks.AddRange(result.Item1);//绉诲簱浠诲姟
+ locations.AddRange(result.Item2);//绉诲簱璐т綅
+ stocks.AddRange(result.Item3);//绉诲簱搴撳瓨
+ foreach (var stockInfo in item.OrderByDescending(x => x.SerialNumber))
+ {
+ if (!tasks.Exists(x => x.PalletCode == stockInfo.PalletCode))
+ {
+ Dt_Task task = new()
+ {
+ CurrentAddress = stockInfo.LocationCode,
+ Grade = 0,
+ PalletCode = stockInfo.PalletCode,
+ TargetIsPickPlace = false,
+ SourceIsPickPlace = locationInfo.Row == 1 ? false : stockInfo.SerialNumber == locationInfo.MaxQty,
+ NextAddress = "1008",
+ Roadway = locationInfo.RoadwayNo,
+ SourceAddress = stockInfo.LocationCode,
+ TargetAddress = "1008",
+ TaskState = TaskOutStatusEnum.OutNew.ObjToInt(),
+ TaskType = taskType.ObjToInt(),
+ TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
+ };
+ tasks.Add(task);
+ }
+ }
+ }
+ return (tasks, locations, stocks);
+ }
+ /// <summary>
+ /// 鑾峰彇绉诲簱浠诲姟
+ /// </summary>
+ /// <param name="locationInfo"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) GetRelocationTask(Dt_LocationInfo locationInfo)
+ {
+ List<Dt_Task> dt_Tasks = new List<Dt_Task>();
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+ List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
+ if (locationInfo.Row == 1)
+ {
+ var locationInfo1 = _basicService.LocationInfoService.Repository.QueryFirst(x => x.Row == 2 && x.Column == locationInfo.Column && x.Layer == locationInfo.Layer);
+ stockInfos = _stockService.StockInfoService.Repository.QueryData(x => locationInfo1.LocationCode == x.LocationCode).OrderByDescending(x => x.SerialNumber).ToList();
+ if (stockInfos == null || stockInfos.Count < 1)
+ {
+ return (dt_Tasks, locationInfos, stockInfos);
+ }
+ Dt_LocationInfo? locationInfo2 = _basicService.LocationInfoService.AssignLocation();
+ if (locationInfo2 == null) throw new Exception("鏃犲彲绉诲簱璐т綅");
+ locationInfo1.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
+ locationInfo2.LocationStatus = LocationStatusEnum.Relocationing.ObjToInt();
+ locationInfos.Add(locationInfo1);
+ locationInfos.Add(locationInfo2);
+ int i = 1;
+ foreach (var item in stockInfos)
+ {
+ Dt_Task task = new()
+ {
+ CurrentAddress = item.LocationCode,
+ SourceIsPickPlace = item.SerialNumber == 12,
+ TargetIsPickPlace = i == 12 ? locationInfo2.Row != 1 : false,
+ Grade = 0,
+ PalletCode = item.PalletCode,
+ NextAddress = locationInfo2.LocationCode,
+ Roadway = locationInfo.RoadwayNo,
+ SourceAddress = item.LocationCode,
+ TargetAddress = locationInfo2.LocationCode,
+ TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
+ TaskType = TaskRelocationTypeEnum.Relocation.ObjToInt(),
+ TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum))
+ };
+ if (locationInfo2.Row == 1) task.TargetIsPickPlace = false;
+ dt_Tasks.Add(task);
+ i++;
+ item.StockStatus = StockStatusEmun.绉诲簱涓�.ObjToInt();
+ }
+ }
+ return (dt_Tasks, locationInfos, stockInfos);
+ }
+ /// <summary>
+ /// 鍑哄簱浠诲姟鏁版嵁澶勭悊/鎸囧畾鍑哄簱鍗曞嚭搴�
+ /// </summary>
+ /// <param name="orderDetailId"></param>
+ /// <param name="stockSelectViews"></param>
+ /// <returns></returns>
+ /// <exception cref="Exception"></exception>
+ public (List<Dt_Task>?, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, List<Dt_LocationInfo>?, Dt_OutboundOrder?) OutboundTaskDataHandle(int orderDetailId, List<StockSelectViewDTO> stockSelectViews)
+ {
+ List<Dt_Task>? tasks = new List<Dt_Task>();
+ if (stockSelectViews == null || stockSelectViews.Count < 1) throw new Exception("鏈幏鍙栧埌鎸囧畾搴撳瓨淇℃伅");
+ Dt_OutboundOrderDetail outboundOrderDetail = _outboundService.OutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId);
+
+ if (outboundOrderDetail == null) throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
+ if (outboundOrderDetail.OrderDetailStatus != OrderDetailStatusEnum.New.ObjToInt())
+ throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
+
+ Dt_OutboundOrder outboundOrder = _outboundService.OutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId);
+ outboundOrder.Details = new List<Dt_OutboundOrderDetail> { outboundOrderDetail };
+
+ List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
+ List<Dt_OutStockLockInfo>? outStockLockInfos = null;
+ List<Dt_LocationInfo>? locationInfos = null;
+ List<Dt_LocationInfo>? locationInfos1 = null;
+
+ (List<Dt_StockInfo>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.OutboundOrderDetailService.AssignStockOutbound(outboundOrder, stockSelectViews);
+
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ (List<Dt_Task>?, List<Dt_LocationInfo>?, List<Dt_StockInfo>?) result1 = GetTasks(result.Item1, TaskTypeEnum.Outbound, result.Item3);
+ tasks = result1.Item1;
+ locationInfos1 = result1.Item2;
+ stockInfos.AddRange(result1.Item3);
+
+ stockInfos.AddRange(result.Item1);
+ outboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
+ outStockLockInfos = result.Item2;
+ locationInfos = result.Item3;
+ outboundOrder.OrderStatus = OutboundStatusEnum.鍑哄簱涓�.ObjToInt();
+ }
+ else
+ {
+ throw new Exception("鏃犲簱瀛�");
+ }
+
+ return (tasks, stockInfos, new List<Dt_OutboundOrderDetail> { outboundOrderDetail }, outStockLockInfos, locationInfos, locationInfos1, outboundOrder);
}
/// <summary>
@@ -122,9 +257,48 @@
{
try
{
- (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(orderDetailId, stockSelectViews);
+ List<Dt_Task> tasks = new List<Dt_Task>();
+ List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
+ List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
+ List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
+ List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
+ List<Dt_LocationInfo> locationInfos1 = new List<Dt_LocationInfo>();
+ Dt_OutboundOrder order = new Dt_OutboundOrder();
- WebResponseContent content = GenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5);
+ #region 鍑哄簱浠诲姟鏁版嵁澶勭悊
+ (List<Dt_Task>?, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, List<Dt_LocationInfo>?, Dt_OutboundOrder?) result = OutboundTaskDataHandle(orderDetailId, stockSelectViews);
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ tasks.AddRange(result.Item1);
+ }
+ if (result.Item2 != null && result.Item2.Count > 0)
+ {
+ stockInfos.AddRange(result.Item2);
+ }
+ if (result.Item3 != null && result.Item3.Count > 0)
+ {
+ outboundOrderDetails.AddRange(result.Item3);
+ }
+ if (result.Item4 != null && result.Item4.Count > 0)
+ {
+ outStockLockInfos.AddRange(result.Item4);
+ }
+ if (result.Item5 != null && result.Item5.Count > 0)
+ {
+ locationInfos.AddRange(result.Item5);
+ }
+ if (result.Item6 != null && result.Item6.Count > 0)
+ {
+ locationInfos1.AddRange(result.Item6);
+ }
+ if (result.Item7 != null)
+ {
+ order = result.Item7;
+ }
+ #endregion
+
+ //WebResponseContent content = GenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5);
+ WebResponseContent content = GenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, locationInfos1, order);
return content;
}
@@ -134,6 +308,59 @@
}
}
+ public WebResponseContent GenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_OutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null, List<Dt_LocationInfo>? locationInfos1 = null, Dt_OutboundOrder? order = null)
+ {
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ BaseDal.AddData(tasks);
+ if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
+ {
+ List<Dt_OutStockLockInfo> addOutStockLockInfos = outStockLockInfos.Where(x => x.Id == 0).ToList();
+ if (addOutStockLockInfos != null && addOutStockLockInfos.Any())
+ {
+ if (tasks != null)
+ {
+ addOutStockLockInfos.ForEach(x =>
+ {
+ x.TaskNum = tasks.FirstOrDefault(v => v.PalletCode == x.PalletCode)?.TaskNum;
+ });
+ }
+
+ _outboundService.OutboundStockLockInfoService.Repository.AddData(addOutStockLockInfos);
+ }
+ List<Dt_OutStockLockInfo> updateOutStockLockInfos = outStockLockInfos.Where(x => x.Id > 0).ToList();
+ if (updateOutStockLockInfos != null && updateOutStockLockInfos.Any())
+ {
+ _outboundService.OutboundStockLockInfoService.Repository.UpdateData(updateOutStockLockInfos);
+ }
+ _stockService.StockInfoService.Repository.UpdateData(stockInfos);
+ _basicRepository.LocationInfoRepository.UpdateData(locationInfos);
+ _basicRepository.LocationInfoRepository.UpdateData(locationInfos1);
+ _outboundService.OutboundOrderService.Repository.UpdateData(order);
+ _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
+ }
+ else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0)
+ {
+ _outboundService.OutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
+ }
+ #region 涓嬪彂浠诲姟缁橶CS
+ List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks);
+ var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
+ if (ResultData.Result == null) throw new Exception($"鍚慦CS涓嬪彂鍑哄簱浠诲姟瓒呮椂");
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
+ if (content == null) throw new Exception($"涓嬪彂鍑哄簱浠诲姟WCS鏃犲搷搴�");
+ if (!content.Status) throw new Exception(content.Message);
+ #endregion
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
/// <summary>
/// 鐢熸垚鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴�
/// </summary>
@@ -149,10 +376,72 @@
{
_unitOfWorkManage.BeginTran();
+ #region 鐢熸垚绉诲簱浠诲姟
+ List<Dt_Task> taskList = new List<Dt_Task>();
+ List<Dt_StockInfo> dt_StockInfos = _stockService.StockInfoService.Repository.LocationCodesGetStockInfos(tasks.Select(x => x.SourceAddress).ToList());
+ List<Dt_StockInfo> dt_stockInfos = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.鍑哄簱閿佸畾.ObjToInt() || tasks.Select(x => x.PalletCode).ToList().Contains(x.PalletCode)).ToList();//寰呭嚭搴撳簱瀛�
+ dt_StockInfos = dt_StockInfos.Where(x => !dt_stockInfos.Select(x => x.Id).ToList().Contains(x.Id)).ToList();//鎺掗櫎寰呭嚭搴撳簱瀛�
+ if (dt_StockInfos.Count > 0)
+ {
+ foreach (var dt_stockInfo in dt_stockInfos)
+ {
+ foreach (var dt_StockInfo in dt_StockInfos.Where(x => x.LocationCode == dt_stockInfo.LocationCode))
+ {
+ if (dt_StockInfo.InDate > dt_stockInfo.InDate)
+ {
+ dt_StockInfo.StockStatus = StockStatusEmun.绉诲簱涓�.ObjToInt();
+ dt_stockInfo.Details.ForEach(x =>
+ {
+ x.Status = StockStatusEmun.绉诲簱涓�.ObjToInt();
+ });
+ }
+ }
+ }
+ List<Dt_StockInfoDetail> stockInfoDetails = dt_StockInfos.Where(x => x.StockStatus == StockStatusEmun.绉诲簱涓�.ObjToInt()).Select(x => x.Details).ToList().OfType<Dt_StockInfoDetail>().ToList();//寰呯Щ搴撹鎯�
+ foreach (var stockInfoDetail in stockInfoDetails.GroupBy(x => x.MaterielCode))
+ {
+ foreach (var item in stockInfoDetail.GroupBy(x => x.BatchNo))
+ {
+ var locationInfo = _basicService.LocationInfoService.AssignLocation(item.Count());//閲嶆柊鍒嗛厤璐т綅
+ var stockInfo = dt_StockInfos.Where(x => x.Id == item.First().StockId).First();
+ foreach (var infoDetail in item)
+ {
+ Dt_Task task = new Dt_Task()
+ {
+ CurrentAddress = stockInfo.LocationCode,
+ Grade = 2,
+ PalletCode = stockInfo.PalletCode,
+ NextAddress = locationInfo.LocationCode,
+ Roadway = locationInfo.RoadwayNo,
+ SourceAddress = stockInfo.LocationCode,
+ TargetAddress = locationInfo.LocationCode,
+ TaskState = WIDESEA_Common.TaskEnum.TaskRelocationStatusEnum.RelocationNew.ObjToInt(),
+ TaskType = TaskTypeEnum.Relocation.ObjToInt(),
+ TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
+ };
+ taskList.Add(task);
+ }
+ stockInfo.LocationCode = locationInfo.LocationCode;
+ }
+ }
+ }
+ tasks.AddRange(taskList);
+ #endregion
+
BaseDal.AddData(tasks);
+
+ #region 涓嬪彂浠诲姟缁橶CS
+ List<WMSTaskDTO> wMSTaskDTOs = _mapper.Map<List<WMSTaskDTO>>(tasks);
+ var ResultData = HttpHelper.PostAsync(WCSInterfaceAddress.ReceiveTask, wMSTaskDTOs.ToJson(), headers: new Dictionary<string, string>());
+ if (ResultData.Result == null) throw new Exception($"鍚慦CS涓嬪彂鍑哄簱浠诲姟瓒呮椂");
+ WebResponseContent content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
+ if (content == null) throw new Exception($"涓嬪彂鍑哄簱浠诲姟WCS鏃犲搷搴�");
+ if (!content.Status) throw new Exception(content.Message);
+ #endregion
+
if (stockInfos != null && outboundOrderDetails != null && outStockLockInfos != null && locationInfos != null)
{
- WebResponseContent content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
+ content = _outboundService.OutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
if (content.Status)
{
@@ -199,32 +488,43 @@
List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>();
List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
- foreach (int key in keys)
- {
- (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(key, stockSelectViews);
- if (result.Item2 != null && result.Item2.Count > 0)
- {
- stockInfos.AddRange(result.Item2);
- }
- if (result.Item3 != null && result.Item3.Count > 0)
- {
- outboundOrderDetails.AddRange(result.Item3);
- }
- if (result.Item4 != null && result.Item4.Count > 0)
- {
- outStockLockInfos.AddRange(result.Item4);
- }
- if (result.Item5 != null && result.Item5.Count > 0)
- {
- locationInfos.AddRange(result.Item5);
- }
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- tasks.AddRange(result.Item1);
- }
- }
+ List<Dt_LocationInfo> locationInfos1 = new List<Dt_LocationInfo>();
+ Dt_OutboundOrder order = new Dt_OutboundOrder();
- WebResponseContent content = GenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos);
+ #region 鍑哄簱浠诲姟鏁版嵁澶勭悊
+ (List<Dt_Task>?, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, List<Dt_LocationInfo>?, Dt_OutboundOrder?) result = OutboundTaskDataHandle(keys);
+ if (result.Item1 != null && result.Item1.Count > 0)
+ {
+ tasks.AddRange(result.Item1);
+ }
+ if (result.Item2 != null && result.Item2.Count > 0)
+ {
+ stockInfos.AddRange(result.Item2);
+ }
+ if (result.Item3 != null && result.Item3.Count > 0)
+ {
+ outboundOrderDetails.AddRange(result.Item3);
+ }
+ if (result.Item4 != null && result.Item4.Count > 0)
+ {
+ outStockLockInfos.AddRange(result.Item4);
+ }
+ if (result.Item5 != null && result.Item5.Count > 0)
+ {
+ locationInfos.AddRange(result.Item5);
+ }
+ if (result.Item6 != null && result.Item6.Count > 0)
+ {
+ locationInfos1.AddRange(result.Item6);
+ }
+ if (result.Item7 != null)
+ {
+ order = result.Item7;
+ }
+ #endregion
+
+ //WebResponseContent content = GenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos);
+ WebResponseContent content = GenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, locationInfos1, order);
return content;
}
catch (Exception ex)
@@ -273,7 +573,7 @@
_unitOfWorkManage.BeginTran();
stockInfo.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
- locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt();
+ locationInfo.LocationStatus = LocationStatusEnum.OutLock.ObjToInt();
BaseDal.AddData(task);
_unitOfWorkManage.CommitTran();
return WebResponseContent.Instance.OK();
--
Gitblit v1.9.3