From 1caea0fdc7ed1788d854a2aba8853984b4494e01 Mon Sep 17 00:00:00 2001 From: wankeda <Administrator@DESKTOP-HAU3ST3> Date: 星期二, 24 六月 2025 09:56:28 +0800 Subject: [PATCH] 代码提交 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs | 330 +++++++++++++++--------------------------------------- 1 files changed, 93 insertions(+), 237 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" index 68231f0..be97ed4 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/PartialTaskService_Outbound.cs" @@ -18,9 +18,14 @@ using System.Linq.Expressions; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.Task; - +using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; +using System.Drawing.Printing; +using WIDESEA_Core.DB; +using System.Drawing; +using WIDESEA_ITaskInfoService; namespace WIDESEA_TaskInfoService { + public partial class TaskService { @@ -123,27 +128,6 @@ return (tasks, stockInfos, orderDetail == null ? null : new List<Dt_OutboundOrderDetail> { orderDetail }, outStockLockInfos, locationInfos); } - /// <summary> - /// 鐢熸垚鍑哄簱浠诲姟 - /// </summary> - /// <param name="orderDetailId"></param> - /// <param name="stockSelectViews"></param> - /// <returns></returns> - public WebResponseContent GenerateOutboundTask(int orderDetailId, List<StockSelectViewDTO> stockSelectViews) - { - try - { - (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_OutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = OutboundTaskDataHandle(orderDetailId, stockSelectViews); - - WebResponseContent content = GenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5); - - return content; - } - catch (Exception ex) - { - return WebResponseContent.Instance.Error($"{ex.Message}"); - } - } /// <summary> /// 鐢熸垚鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴� @@ -264,7 +248,7 @@ if (location != null) { Dt_LocationInfo result = _basicService.LocationInfoService.isDepth(location); - if (result != null && result.LocationStatus != LocationStatusEnum.Lock.ObjToInt() && result.LocationStatus != LocationStatusEnum.PalletLock.ObjToInt() && result.LocationStatus != LocationStatusEnum.Free.ObjToInt()) + if (result != null && result.LocationStatus != LocationStatusEnum.Lock.ObjToInt() && result.LocationStatus != StatusEnum.PalletLock.ObjToInt() && result.LocationStatus != LocationStatusEnum.Free.ObjToInt()) { int sum = 0; for (int j = 0; j < task.Count; j++) @@ -297,7 +281,7 @@ tasks.Add(task[i]); content = WebResponseContent.Instance.OK(); } - else if (result != null && (result.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || result.LocationStatus == LocationStatusEnum.PalletLock.ObjToInt())) + else if (result != null && (result.LocationStatus == LocationStatusEnum.Lock.ObjToInt() || result.LocationStatus == StatusEnum.PalletLock.ObjToInt())) { Dt_Task TaskInfo = BaseDal.QueryFirst(x => x.SourceAddress == result.LocationCode); if (TaskInfo == null) @@ -356,7 +340,7 @@ SourceAddress = location.LocationCode, TargetAddress = locationInfos.LocationCode, TaskStatus = InTaskStatusEnum.RelocationNew.ObjToInt(), - TaskType = TaskTypeEnum.Relocation.ObjToInt(), + //TaskType = TaskTypeEnum.Relocation.ObjToInt(), Depth = location.Depth, TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) }; @@ -380,151 +364,7 @@ throw new Exception($"鐢熸垚绉诲簱浠诲姟澶辫触"); ; } } - /// <summary> - /// 鐢熸垚鍑哄簱浠诲姟 - /// </summary> - /// <param name="keys"></param> - /// <returns></returns> - public WebResponseContent GenerateOutboundTask(int[] keys) - { - try - { - List<Dt_Task> tasks = new List<Dt_Task>(); - List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>(); - 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>(); - 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); - } - - - } - - WebResponseContent content = GenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos); - return content; - } - catch (Exception ex) - { - _unitOfWorkManage.RollbackTran(); - return WebResponseContent.Instance.Error(ex.Message); - } - } - - /// <summary> - /// 绌烘墭鐩樺嚭搴撲换鍔� - /// </summary> - /// <param name="inTask"></param> - /// <returns></returns> - public WebResponseContent PalletOutboundTask(string roadwayNo, string endStation) - { - try - { - Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.GetPalletStockInfo(roadwayNo); - if (stockInfo == null) - { - return WebResponseContent.Instance.Error("鏈壘鍒扮┖鎵樼洏搴撳瓨"); - } - Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode && x.RoadwayNo == roadwayNo); - if (locationInfo == null) - { - return WebResponseContent.Instance.Error("鏈壘鍒扮┖鎵樼洏搴撳瓨瀵瑰簲鐨勮揣浣嶄俊鎭�"); - } - Dt_RoadwayInfo roadwayInfo = _basicService.RoadwayInfoService.Repository.QueryFirst(x => x.InStationCode == endStation && x.RoadwayNo == roadwayNo); - if (roadwayInfo == null) - { - return WebResponseContent.Instance.Error("鏈壘鍒扮粓鐐瑰贩閬撲俊鎭�"); - } - List<Dt_Task> tasks = new List<Dt_Task>(); - Dt_Task task = new Dt_Task() - { - CurrentAddress = stockInfo.LocationCode, - Grade = 1, - NextAddress = endStation, - PalletCode = stockInfo.PalletCode, - Roadway = roadwayNo, - SourceAddress = stockInfo.LocationCode, - TargetAddress = endStation, - TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(), - TaskType = TaskTypeEnum.PalletOutbound.ObjToInt(), - Depth = locationInfo.Depth, - TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) - }; - int beforeStatus = locationInfo.LocationStatus; - _unitOfWorkManage.BeginTran(); - stockInfo.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); - locationInfo.LocationStatus = LocationStatusEnum.Lock.ObjToInt(); - tasks.Add(task); - (List<Dt_Task>?, List<Dt_Task>?) result = RelocationTasks(tasks.OrderBy(x => x.Depth).ToList()); - if (result.Item1 != null && result.Item1.Count > 0) - { - for (int i = 0; i < result.Item1.Count; i++) - { - result.Item1[i].Grade = 1; - } - AddData(result.Item1); - var response = HttpHelper.Post<WebResponseContent>(url + "ReceiveTask/", result.Item1, "鍏ュ簱浠诲姟涓嬪彂"); - if (!response.Status) - { - _unitOfWorkManage.RollbackTran(); - return WebResponseContent.Instance.Error($"{response.Message}"); - } - } - if (result.Item2 != null && result.Item2.Count > 0) - { - for (int i = 0; i < result.Item2.Count; i++) - { - Dt_LocationInfo location = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == result.Item2[i].SourceAddress && x.RoadwayNo == result.Item2[i].Roadway); - if (location.Depth == 2) - { - _basicService.LocationInfoService.UpdateLocationLock(location, result.Item2[i].TaskNum, StockChangeType.Outbound.ObjToInt(), false); - } - result.Item2[i].Grade = 1; - } - AddData(result.Item2); - var response = HttpHelper.Post<WebResponseContent>(url + "ReceiveTask/", result.Item2, "鍑哄簱浠诲姟涓嬪彂"); - if (!response.Status) - { - _unitOfWorkManage.RollbackTran(); - return WebResponseContent.Instance.Error($"{response.Message}"); - } - } - _stockService.StockInfoService.UpdateData(stockInfo); - - _basicService.LocationInfoService.UpdateData(locationInfo); - - _basicService.LocationInfoService.UpdateLocationLock(locationInfo, task.TaskNum, StockChangeType.Outbound.ObjToInt(), false); - _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, beforeStatus, StockChangeType.Outbound.ObjToInt(), "", task.TaskNum); - _unitOfWorkManage.CommitTran(); - return WebResponseContent.Instance.OK(); - } - catch (Exception ex) - { - return WebResponseContent.Instance.Error(ex.Message); - } - } /// <summary> /// 鍑哄簱浠诲姟鏌ヨ /// </summary> @@ -544,7 +384,7 @@ int maxPage = Convert.ToInt32(Math.Ceiling(count / 10.0)); if (taskDTO.pageNo <= maxPage) { - var inboundOrder = BaseDal.Db.Queryable<Dt_Task>().Where(expressionOrder).Where(x => x.TaskType == TaskTypeEnum.Outbound.ObjToInt()).OrderByDescending(x => x.CreateDate).Select(x => new Dt_Task { TaskNum = x.TaskNum, TaskId = x.TaskId, CreateDate = x.CreateDate, Creater = x.Creater }).ToList(); + var inboundOrder = BaseDal.Db.Queryable<Dt_Task>().Where(expressionOrder).Where(x => x.TaskType == TaskTypeEnum.Outbound.ObjToInt()).OrderByDescending(x => x.CreateDate).Select(x => new Dt_Task { TaskNum = x.TaskNum, TaskId = x.TaskId, CreateDate = x.CreateDate, Creater = x.Creater, Materialtype = x.Materialtype }).ToList(); content = WebResponseContent.Instance.OK(data: inboundOrder); } @@ -560,101 +400,117 @@ return content; } - + /// <summary> + /// 纭鍑哄簱浠诲姟 + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> public WebResponseContent RequestInbound(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { - int taskname = saveModel.MainData["taskname"].ObjToInt(); - string address = saveModel.MainData["startPoint"].ToString(); - string inboundBarcode = saveModel.MainData["barcode"].ToString(); - Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskname); + string stationcode = saveModel.MainData["stationcode"].ToString(); + //string PalletCode = saveModel.MainData["PalletCode"].ToString(); + Dt_Task task = BaseDal.QueryFirst(x => x.SourceAddress == stationcode); //&& x.Materialtype == PalletCode if (task != null) { - task.SourceAddress = address; - task.TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(); + task.TaskStatus = AGVTaskStatusEnum.AGV_New.ObjToInt(); BaseDal.UpdateData(task); content = WebResponseContent.Instance.OK(); } else { - content = WebResponseContent.Instance.Error("鏈壘鍒版浠诲姟"); + return content = WebResponseContent.Instance.Error("鏈壘鍒版浠诲姟鎴栫墿鏂欑被鍨嬩笉鍖归厤"); } } catch (Exception ex) { - content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟璧风偣寮傚父,閿欒淇℃伅:{ex.Message}"); + content = WebResponseContent.Instance.Error($"浠诲姟璧风偣寮傚父,閿欒淇℃伅:{ex.Message}"); } return content; } - + private static readonly object text = new object(); + /// <summary> + /// 鍑哄簱浠诲姟 + /// </summary> + /// <param name="saveModel"></param> + /// <returns></returns> public WebResponseContent OutboundTasks(SaveModel saveModel) { - WebResponseContent content = new WebResponseContent(); - try + lock (text) { - string stationcode = saveModel.MainData["stationcode"].ToString(); - string PalletCode = saveModel.MainData["PalletCode"].ToString(); - List<Dt_Task> tasks = new List<Dt_Task>(); - Dt_Task task = new Dt_Task() + WebResponseContent content = new WebResponseContent(); + try { - CurrentAddress = "1", - Grade = 1, - NextAddress = "1", - PalletCode = PalletCode, - Roadway = "1", - SourceAddress = "", - TargetAddress = stationcode, - TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(), - TaskType = TaskTypeEnum.Outbound.ObjToInt(), - Depth = 1, - TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) - }; - tasks.Add(task); - Repository.AddData(tasks); - content = WebResponseContent.Instance.OK(); - } - catch (Exception ex) - { - content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{ex.Message}"); - } - return content; - } + string stationcode = saveModel.MainData["stationcode"].ToString(); + string PalletCode = saveModel.MainData["PalletCode"].ToString(); + if (stationcode == "" || PalletCode == "")//寮傚父杩斿洖銆傘�傘�傘�傘�傘�� + { + return content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:鎵爜淇℃伅涓嶈兘涓虹┖"); + } + Dt_CachePoint endCachePoint = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode.Contains("鍘熸潗鏂欏簱") && x.PointStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt().ObjToInt());//&& x.PointStatus == LocationStatusEnum.Free.ObjToInt() + if (endCachePoint == null) + { + return content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{"鏈壘鍒板師鏉愭枡搴撳彲鐢ㄧ紦瀛樹綅"}"); + } + Dt_CachePoint points = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == stationcode && x.PointStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus == EnableStatusEnum.Normal.ObjToInt().ObjToInt()); + if (points == null) + { + return content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{"鎵爜鏁版嵁寮傚父锛屾缂撳瓨鐐瑰凡琚攣瀹氭垨宸茬鐢�"}"); + } + Dt_Task taskcode = BaseDal.QueryFirst(x => x.SourceAddress == stationcode || x.TargetAddress == stationcode); + if (taskcode != null) + { + return content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:璇ョ珯鐐瑰凡瀛樺湪浠诲姟"); + } + var pointname = _basicService.CachePointService.Repository.QueryData(x => x.Remark == points.Remark).ToList(); + foreach (var item in pointname) + { + var a = points.Depth.ObjToInt(); + var b = item.Depth.ObjToInt(); + if (a > b) + { + Dt_CachePoint c = _basicService.CachePointService.Repository.QueryFirst(x => x.PointCode == item.PointCode && x.PointStatus == 0); + if (c != null) + { + + return content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{"璇锋寜浠庨噷鍒板缂撳瓨鐐归『搴忚姹備换鍔�"}"); + } + } + } + List<Dt_Task> tasks = new List<Dt_Task>(); + Dt_Task task = new Dt_Task() + { + CurrentAddress = "1", + Grade = 1, + NextAddress = "1", + PalletCode = "", + Roadway = "1", + SourceAddress = endCachePoint.PointCode, + TargetAddress = stationcode, + TaskStatus = AGVTaskStatusEnum.AGV_Query.ObjToInt(), + TaskType = TaskTypeEnum.Outbound.ObjToInt(), + Materialtype = PalletCode, + Depth = 1, + TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) + }; + tasks.Add(task); + Repository.AddData(tasks); + HCJLock(task); + //Main(); + content = WebResponseContent.Instance.OK(); - public WebResponseContent InboundTask(SaveModel saveModel) - { - WebResponseContent content = new WebResponseContent(); - try - { - string stationcode = saveModel.MainData["stationcode"].ToString(); - string PalletCode = saveModel.MainData["PalletCode"].ToString(); - List<Dt_Task> tasks = new List<Dt_Task>(); - Dt_Task task = new Dt_Task() + } + catch (Exception ex) { - CurrentAddress = "", - Grade = 1, - NextAddress = "", - PalletCode = PalletCode, - Roadway = "", - SourceAddress = stationcode, - TargetAddress = "", - TaskStatus = OutTaskStatusEnum.OutNew.ObjToInt(), - TaskType = TaskTypeEnum.Inbound.ObjToInt(), - Depth = 1, - TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)) - }; - tasks.Add(task); - Repository.AddData(tasks); - content = WebResponseContent.Instance.OK(); + content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{ex.Message}"); + } + return content; } - catch (Exception ex) - { - content = WebResponseContent.Instance.Error($"娣诲姞浠诲姟寮傚父,閿欒淇℃伅:{ex.Message}"); - } - return content; + } } } -- Gitblit v1.9.3