From e719f3e5d5d16ee8a9dece97d9889610507628ac Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期一, 18 八月 2025 08:15:27 +0800 Subject: [PATCH] 1 --- 项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 18 - 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs | 3 项目资料/技术协议/龙利得项目对接记录.xlsx | 0 项目代码/WMS/WMSClient/src/views/stock/stockInfo.vue | 6 项目代码/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs | 34 ++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPD.cs | 23 + 项目代码/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json | 6 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs | 4 项目代码/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs | 5 项目代码/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs | 68 ++-- 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 101 ----- 项目资料/通信协议/原料库输送线通讯协议.xlsx | 0 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs | 2 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs | 106 ++++++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/AGV_CPExtend.cs | 4 项目资料/技术协议/利拓系统对龙利得二期系统的需求.docx | 0 项目资料/通信协议/成品输送线通讯协议_20250707.xlsx | 0 项目代码/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs | 19 + 项目资料/接口协议/MES.xlsx | 0 项目代码/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs | 64 ++- 项目代码/WMS/WMSClient/src/views/basic/agvStationInfo.vue | 1 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/ConveyorLineJob_YL1ndFloor.cs | 19 项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs | 44 +- 项目资料/接口协议/龙利德点位.xlsx | 0 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/原料库/StackerCraneJob_YLSC2.cs | 56 +- 项目代码/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs | 6 项目资料/通信协议/龙利得软件计划表.xlsx | 0 项目代码/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs | 5 项目代码/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs | 2 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs | 233 ++++++++++++++ 项目代码/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 14 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs | 82 +++- 32 files changed, 624 insertions(+), 301 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" index f893828..aa83b00 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs" @@ -29,21 +29,25 @@ /// </summary> [Description("璐ㄦ鍑哄簱")] OutQuality = 130, + /// <summary> /// 绌虹鍑哄簱 /// </summary> [Description("绌虹鍑哄簱")] OutEmpty = 140, + /// <summary> /// 璋冩嫧鍑哄簱 /// </summary> [Description("璋冩嫧鍑哄簱")] OutAllocate = 150, + /// <summary> - /// 鍙犵洏鍑哄簱 + /// 鑰佸巶鍑哄簱 /// </summary> - [Description("鍙犵洏鍑哄簱")] - StackingPlates = 160, + [Description("鑰佸巶鍑哄簱")] + OldOutbound = 160, + /// <summary> /// MES鍑哄簱 /// </summary> @@ -72,7 +76,7 @@ [Description("鎴愬搧瀵勫敭鍑哄簱")] OutSendProduct = 240, /// <summary> - /// 鎴愬搧MES鍑哄簱/鎻愬簱 + /// 鎴愬搧MES鎻愬簱 /// </summary> [Description("鎴愬搧MES鎻愬簱")] OutMesRworkProduct = 250, @@ -110,6 +114,12 @@ MesMatReturn = 560, /// <summary> + /// 璋冩嫧鍏ュ簱 + /// </summary> + [Description("璋冩嫧鍏ュ簱")] + InAllocate = 570, + + /// <summary> /// MES澶х┖鎵橀��鏂� /// </summary> [Description("MES澶х┖鎵橀��鏂�")] @@ -122,27 +132,9 @@ MesPalletSmallReturn = 585, /// <summary> - /// 璋冩嫧鍏ュ簱 + /// 鎵嬪姩鍏ュ簱 /// </summary> - [Description("璋冩嫧鍏ュ簱")] - InAllocate = 570, - - /// <summary> - /// 绾胯竟浠撳叆搴� - /// </summary> - [Description("绾胯竟浠撳叆搴�")] - InboundXB = 580, - - /// <summary> - /// 鏈哄彴鍏ュ簱 - /// </summary> - [Description("鏈哄彴鍏ュ簱")] - InboundJT = 590, - - /// <summary> - /// 绌虹鍏ュ簱 - /// </summary> - [Description("绌虹鍏ュ簱")] + [Description("鎵嬪姩鍏ュ簱")] InEmpty = 600, /// <summary> @@ -157,9 +149,9 @@ [Description("鎴愬搧浣欐枡鍥炲簱")] InProductBack = 620, /// <summary> - /// 鎴愬搧绌烘鍥炲簱 + /// 鎴愬搧绌烘墭鍥炲簱 /// </summary> - [Description("鎴愬搧绌烘鍥炲簱")] + [Description("鎴愬搧绌烘墭鍥炲簱")] EmptyProductBack = 630, /// <summary> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" index 1945e64..0f3aea6 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_DTO/Agv/AgvUpdateDTO.cs" @@ -25,6 +25,6 @@ /// 1鍙栬揣瀹屾垚<br/> /// 2鏀捐揣瀹屾垚<br/> /// </summary> - public int GoodsState { get; set; } + public string GoodsState { get; set; } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" index 4aab91b..2d1bf0a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_ITaskInfoService/ITaskService.cs" @@ -91,16 +91,6 @@ //WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, string roadway); /// <summary> - /// - /// </summary> - /// <param name="sourceAddress"></param> - /// <param name="palletCode"></param> - /// <param name="heightType"></param> - /// <param name="roadways"></param> - /// <returns></returns> - WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways); - - /// <summary> /// 鍚慦MS鐢宠鍒嗛厤璐т綅 /// </summary> /// <param name="taskNum">浠诲姟鍙�</param> @@ -275,10 +265,6 @@ /// </summary> /// <returns></returns> WebResponseContent AgvBoxApplyPass(AgvCTUCancelDTO applyPassDTO, APIEnum SecureReply = APIEnum.AGV_CTUCancelTask); - /// <summary> - /// 鐢熸垚绌烘浠诲姟 - /// </summary> - WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer); /// <summary> /// 棰勮皟搴︽寚浠� /// </summary> diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" index d4daa32..4724199 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" @@ -51,7 +51,7 @@ { var task = _taskRepository.QueryFirst(x => secureApplyModel.ReceiveTaskID.ObjToInt() == x.TaskNum); if (task == null) throw new Exception("鏈壘鍒颁换鍔�"); - if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { var content = TakeRequest(task.CurrentAddress); if (!content.Status) @@ -200,17 +200,18 @@ if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟鍙枫�恵agvUpdateModel.ReceiveTaskID}銆�"); switch (agvUpdateModel.GoodsState) { - //case 1://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚 - // if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) - // { - // var content = TakeFinish(task.CurrentAddress); - // if (!content.Status) throw new Exception(content.Message); - // task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt(); - // var up = _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚); - // _taskService.TaskCompleted(task.TaskNum); - // } - // break; - case 2://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚 + case "1"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚 + if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + var content = TakeFinish(task.CurrentAddress); + if (!content.Status) + { + throw new Exception(content.Message); + }; + return agvResponse.OK("鎴愬姛", "0"); + } + break; + case "2"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) { Dt_StationManger dt_Station = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress); @@ -224,6 +225,11 @@ task.DeviceCode = dt_Station.StationDeviceCode; var up = _taskRepository.UpdateData(task); return agvResponse.OK("鎴愬姛","0"); + } + else if(task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + _taskService.TaskCompleted(task.TaskNum); + return agvResponse.OK("鎴愬姛", "0"); } break; default: @@ -321,45 +327,36 @@ [HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous] public WebResponseContent TakeRequest(string code) { + WebResponseContent content = new WebResponseContent(); try { - Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code); + Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code); if (stationManger == null) { - return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�"); + return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃畕code}"); } IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode); if (device == null) { - return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶�"); + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}"); } OtherDevice otherDevice = (OtherDevice)device; - bool canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode); - if (canPut) + short Command = otherDevice.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode); + if (Command == 2) { - otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode); - return WebResponseContent.Instance.OK(); + content.OK("鍏佽鍙栨枡"); } else { - otherDevice.SetValue(GroundStationDBName.W_TakeRequest, true, stationManger.StationCode); - Thread.Sleep(1000); - canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanTake, stationManger.StationCode); - if (canPut) - { - return WebResponseContent.Instance.OK(); - } - else - { - return WebResponseContent.Instance.Error($"鍙栬揣鐢宠涓�"); - } + return content.Error("绂佹鍙栨枡"); } + return content; } catch (Exception ex) { - return WebResponseContent.Instance.Error(ex.Message); + return content.Error(ex.Message); } } @@ -374,7 +371,7 @@ { try { - Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.AGVStationCode == code); + Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == code); if (stationManger == null) { return WebResponseContent.Instance.Error($"鏈壘鍒扮珯鍙伴厤缃�"); @@ -386,9 +383,10 @@ } OtherDevice otherDevice = (OtherDevice)device; - otherDevice.SetValue(GroundStationDBName.W_TakeFinish, true, stationManger.StationCode); - Thread.Sleep(1000); - otherDevice.SetValue(GroundStationDBName.W_TakeFinish, false, stationManger.StationCode); + if (device.DeviceCode.Contains("CP")) + { + otherDevice.SetValue(W_ConveyorLineCPDB.W_Command, 2, stationManger.StationCode); + } return WebResponseContent.Instance.OK(); } catch (Exception ex) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" index 8e1d69a..35a9f81 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" @@ -80,11 +80,6 @@ { return WebResponseContent.Instance.OK(data: _routerExtension.GetEndPoint(startPoint, routeType)); } - [HttpPost, HttpGet, Route("AgvCarrying"), AllowAnonymous] - public WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer) - { - return Service.AgvCarrying(row, startColumn, endColumn, layer, targetLayer); - } /// <summary> /// 娴嬭瘯鍫嗗灈鏈哄嚭搴� /// </summary> @@ -119,19 +114,6 @@ { return Service.RequestWMSTaskSimple(palletCode,sourceAddress, roadWay, taskType); } - //[HttpPost, HttpGet, Route("WebSocketPushMessage"), AllowAnonymous] - //public WebResponseContent WebSocketPushMessage(string message) - //{ - // try - // { - // _webSocketServer.PublishAllClientPayload(message); - // return WebResponseContent.Instance.OK(); - // } - // catch(Exception ex) - // { - // return WebResponseContent.Instance.Error(ex.Message); - // } - //} [HttpPost, HttpGet, Route("RecWMSTaskCompleted"), AllowAnonymous] public WebResponseContent RecWMSTaskCompleted(int taskNum) { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json" index 33aa85e..ceb7f2f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Server/appsettings.json" @@ -13,10 +13,10 @@ "DBType": "SqlServer", //杩炴帴瀛楃涓� //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=", - "ConnectionString": "Data Source=.;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", - //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TestWCS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", + "ConnectionString": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WCSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", + //"ConnectionString": "Data Source=192.168.35.3;Initial Catalog=TestWCS_TC;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=TESTWCSCP_WCS;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", - "WMSConnectionStrings": "Data Source=.;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", + "WMSConnectionStrings": "Data Source=192.168.35.3;Initial Catalog=WIDESEA_WMSLLD;User ID=sa;Password=Sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //"WMSConnectionStrings": "Data Source=10.30.4.92;Initial Catalog=WIDESEAWMS_HUAIAN;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", //璺ㄥ煙 "Cors": { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" index fbca59f..f8398a4 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" @@ -139,53 +139,6 @@ return WebResponseContent.Instance.Error(ex.Message); } } - public WebResponseContent AgvCarrying(int row,int startColumn, int endColumn, int startlayer,int targetLayer) - { - try - { - List<Dt_Task> tasks = new List<Dt_Task>(); - for (int i = startColumn; i <= endColumn; i++) - { - string column = i.ToString(); - if (i<10) - { - column = "0" + i.ToString(); - } - string layer = targetLayer.ToString(); - if (targetLayer<10) - { - layer = "0"+targetLayer.ToString(); - } - Dt_Task task = new Dt_Task() - { - WarehouseId = 7, - TaskNum = DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i, - PalletCode= DateTime.Now.ToString("yyMMddHHmm") +i, - PalletType=0, - DeviceCode="AGV_CP", - Roadway= "AGV_CP", - TaskType =999, - SourceAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"), - CurrentAddress=string.Format($"AGV_CP-00{row}-0{column}-00{startlayer}-01"), - TargetAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"), - NextAddress= string.Format($"AGV_CP-00{row}-0{column}-00{layer}-01"), - Grade=0, - WMSId=0, - AgvTaskNum = "CP" + DateTime.Now.ToString("yyMMddHHmm").ObjToInt() + i, - TaskState = TaskStatusEnum.New.ObjToInt(), - Remark= "娴嬭瘯绌烘" - }; - tasks.Add(task); - } - BaseDal.AddData(tasks); - return WebResponseContent.Instance.OK(""); - } - catch (Exception ex) - { - return WebResponseContent.Instance.Error(ex.Message); - } - - } /// <summary> /// 鎺ユ敹WMS浠诲姟淇℃伅 /// </summary> @@ -211,10 +164,18 @@ task.CurrentAddress = item.SourceAddress; Dt_Router? router; - + if (task.TaskType==TaskTypeEnum.Relocation.ObjToInt()) + { + task.DeviceCode = task.Roadway; + task.NextAddress = task.TargetAddress; + task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); + tasks.Add(task); + break; + } TaskTypeGroup taskTypeGroup = item.TaskType.GetTaskTypeGroup(); if (string.IsNullOrEmpty(item.AGVArea)) { + Dt_StationManger stationManger; //鑾峰彇绔欏彴淇℃伅 if (taskTypeGroup == TaskTypeGroup.InboundGroup) @@ -239,27 +200,30 @@ if (routers.Count == 1) { + //鍏ュ簱 if (taskTypeGroup == TaskTypeGroup.InboundGroup) { task.CurrentAddress = router.StartPosi; task.NextAddress = router.NextPosi; task.DeviceCode = router.ChildPosiDeviceCode; } - else + else //鍑哄簱 { task.DeviceCode = stationManger.StackerCraneCode; task.NextAddress = router.NextPosi; + task.TaskState = (int)TaskStatusEnum.SC_Execute; } } else { + //鎴愬搧鐮佸灈浠诲姟鐢熸垚 if (taskTypeGroup == TaskTypeGroup.InboundGroup && !task.Roadway.Contains("YL")) { task.CurrentAddress = router.StartPosi; task.NextAddress = ""; task.DeviceCode = router.ChildPosiDeviceCode; } - else + else if(taskTypeGroup == TaskTypeGroup.InboundGroup && task.Roadway.Contains("YL")) //鍘熸枡鍏ュ簱 { router = routers.FirstOrDefault(x=>x.ChildPosiDeviceCode==task.Roadway); task.CurrentAddress = router.StartPosi; @@ -270,6 +234,7 @@ } else { + //鎴愬搧鍏ュ簱 List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == item.TaskType && x.StartPosi=="AGV" && x.ChildPosiDeviceCode==item.RoadWay); router = routers.FirstOrDefault(); if (routers.Count == 1) @@ -461,42 +426,6 @@ // return content; //} - /// <summary> - /// - /// </summary> - /// <param name="sourceAddress"></param> - /// <param name="palletCode"></param> - /// <param name="heightType"></param> - /// <param name="roadways"></param> - /// <returns></returns> - public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress, int heightType, List<string> roadways) - { - WebResponseContent content = new WebResponseContent(); - try - { - string address = AppSettings.Get("WMSApiAddress"); - if (string.IsNullOrEmpty(address)) - { - return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); - } - string responseStr = HttpHelper.Post($"{address}/api/Task/DeviceRequestInboundTaskByRoadways?stationCode={sourceAddress}&palletCode={palletCode}&heightType={heightType}", roadways.Serialize()); - WebResponseContent? responseContent = JsonConvert.DeserializeObject<WebResponseContent>(responseStr); - if (responseContent != null && responseContent.Status && responseContent.Data != null) - { - WMSTaskDTO? taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(responseContent.Data.ToString()); - if (taskDTO != null) - { - content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); - } - } - - } - catch (Exception ex) - { - content = WebResponseContent.Instance.Error(ex.Message); - } - return content; - } /// <summary> /// 鍒嗛厤宸烽亾 diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" index e7cd405..2267256 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/ConveyorLineJob_YL1ndFloor.cs" @@ -126,29 +126,18 @@ } } - else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 99 && !string.IsNullOrEmpty(conveyorLineInfoRead.WR_TMID) && conveyorLineInfoRead.WR_Task <= 0) //鍑虹珯鍙板垎閰嶇洰鏍囩偣 + else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt() && conveyorLineInfoRead.WR_ToHode <= 0 && conveyorLineInfoRead.WR_Request == 99 && conveyorLineInfoRead.WR_Task <= 0) //鍑虹珯鍙板垎閰嶇洰鏍囩偣 { Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode == device.DeviceCode); if (task != null) { - List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.CurrentAddress == x.StartPosi); - Dt_Router? router = routers.FirstOrDefault(); - if (routers == null || routers.Count == 0 || router == null) - { - WriteError(item.StationName, $"鏈壘鍒板搴旇矾鐢变俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - if (routers.Count > 1) - { - WriteError(item.StationName, $"璺敱淇℃伅閰嶇疆閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } //鍙戦�佺洰鏍囩偣 device.SetValue(WR_CLineYLDB.WR_Task, task.TaskNum, item.StationCode); + device.SetValue(WR_CLineYLDB.WR_Width, task.TaskLength, item.StationCode); device.SetValue(WR_CLineYLDB.WR_TMID, task.PalletCode, item.StationCode); - device.SetValue(WR_CLineYLDB.WR_ToHode, router.NextPosi, item.StationCode); + device.SetValue(WR_CLineYLDB.WR_ToHode, task.NextAddress, item.StationCode); device.SetValue(WR_CLineYLDB.WR_Reresult, 86, item.StationCode); - _taskService.UpdateTask(task,TaskStatusEnum.Line_Executing,nextAddress: router.NextPosi); + _taskService.UpdateTask(task,TaskStatusEnum.Line_Executing); } } else if (conveyorLineInfoRead != null && item.StationType == StationTypeEnum.StationType_InboundAndOutbound.ObjToInt() && conveyorLineInfoRead.WR_Task > 0 && conveyorLineInfoRead.WR_Request == 98) //涓�妤艰�佸巶鍑哄簱鍙e畬鎴� diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" index 0d28a1b..4c1a6ca 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\345\216\237\346\226\231\345\272\223/StackerCraneJob_YLSC2.cs" @@ -132,16 +132,10 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌矾鐢变俊鎭�,{task.NextAddress}"); } int oldStatus = task.TaskState; - task.DeviceCode = stationManger.StationDeviceCode; - task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt(); - task.CurrentAddress = stationManger.StationCode; - task.NextAddress = router.NextPosi; - task.TargetAddress = router.NextPosi; - _taskRepository.UpdateData(task); //todo 鍫嗗灈鏈哄畬鎴愬畬鎴� - //_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi); + _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi); _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�"); - WriteInfo(deviceCode, $"鍫嗗灈鏈轰换鍔″畬鎴�,浠诲姟鍙�:{taskNum}"); + WriteInfo(deviceCode, $"鍫嗗灈鏈哄嚭搴撲换鍔″畬鎴�,浠诲姟鍙�:{taskNum}"); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup || task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { @@ -203,28 +197,28 @@ } } - //if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) - //{ - // if (OutTaskStationIsOccupied(task) == null) - // { - // bool flag = false; - // List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList(); - // List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); - // foreach (var item in tasks) - // { - // if (OutTaskStationIsOccupied(task) != null) - // { - // flag = true; - // break; - // } - // } - // if (!flag) - // { - // task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); - // } - // } - //} - + if (task != null && task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) + { + if (OutTaskStationIsOccupied(task) == null) + { + bool flag = false; + List<string> otherOutStaionCodes = _routerService.QueryNextRoutes(commonStackerCrane.DeviceCode, task.NextAddress, task.TaskType).Select(x => x.ChildPosi).ToList(); + List<Dt_Task> tasks = _taskService.QueryStackerCraneOutTasks(commonStackerCrane.DeviceCode, otherOutStaionCodes); + foreach (var item in tasks) + { + if (OutTaskStationIsOccupied(task) != null) + { + flag = true; + break; + } + } + if (!flag) + { + task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode); + } + } + } + task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode); return task; } @@ -242,7 +236,7 @@ if (device != null) { OtherDevice client = (OtherDevice)device; - if (client.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode) == 3)//鍑哄簱绔欏彴鏈鍗犵敤 + if (client.GetValue<WR_CLineYLDB, short>(WR_CLineYLDB.WR_Request, stationManger.StationCode) != 99)//鍑哄簱绔欏彴鏈鍗犵敤 { task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" index 85f37d2..06e8917 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/AGV_CPExtend.cs" @@ -90,6 +90,10 @@ { throw new Exception("鏈壘鍒癆GV绔欑偣"); } + if (!stationMangerStart.StationCode.Contains("PNT") && stationMangerEnd.StationCode.Contains("PNT")) + { + agvTaskSend.TaskCode = "DUIGAO2"; + } //鍙戦�丄GV浠诲姟 WebResponseContent content = _taskService.AgvSendTask(agvTaskSend, APIEnum.AgvSendTask); if (!content.Status) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs" index 5f2809f..d36d9ec 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/ConveyorLineJob_CPD.cs" @@ -100,12 +100,31 @@ //鏇存柊浠诲姟淇℃伅 task.CurrentAddress = item.StationCode; task.NextAddress = router.NextPosi; - task.PalletType = 1; - task.PalletCode = conveyorLineInfoRead.PalletCode; _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing); WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�"); } } + else if (conveyorLineInfoRead != null && conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0) + { + Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); + if (task != null) + { + //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁 + List<Dt_Router> routers = _routerRepository.QueryData(x => x.InOutType == task.TaskType && task.NextAddress == x.StartPosi); + Dt_Router router = routers.FirstOrDefault(); + if (router == null) + { + WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}鏈壘鍒拌矾鐢遍厤缃俊鎭�"); + return Task.CompletedTask; + } + //鏇存柊浠诲姟淇℃伅 + task.CurrentAddress = router.StartPosi; + task.NextAddress = task.TargetAddress; + task.DeviceCode = router.NextPosi; + _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute); + WriteInfo(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�"); + } + } } else if (item.StationType == StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProRead != null) { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" index 87c5655..789ddf7 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/\346\210\220\345\223\201\344\273\223/StackerCraneJob_CP.cs" @@ -136,8 +136,7 @@ task.TaskState = TaskStatusEnum.Line_Execute.ObjToInt(); task.CurrentAddress = stationManger.StationCode; task.NextAddress = router.NextPosi; - task.TargetAddress = router.NextPosi; - _taskRepository.UpdateData(task); + _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute); //todo 鍫嗗灈鏈哄畬鎴愬畬鎴� //_taskService.UpdateTask(task, TaskStatusEnum.Line_Execute, deviceCode: stationManger.StationDeviceCode, currentAddress: stationManger.StationCode, nextAddress: router.NextPosi, targetAddress: router.NextPosi); _taskExecuteDetailService.AddTaskExecuteDetail(taskNum, $"绯荤粺鑷姩娴佺▼,浠诲姟鐘舵�佷粠銆恵oldStatus}銆戣浆鍒般�恵task.TaskState}銆�"); diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue" index 8c72388..6d178e4 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/basic/agvStationInfo.vue" @@ -84,6 +84,7 @@ {field:'agvStationHeight',title:'鍙栨斁楂樺害',type:'float',width:110,require:true,align:'left'}, {field:'agvFrontCode',title:'AGV鍓嶇疆鐐�',type:'string',width:110,require:true,align:'left'}, {field:'stationArea',title:'AGV鍖哄煙',type:'string',width:110,require:true,align:'left',bind: { key: "agvStationAreaEnum", data: [] }}, + {field:'isOccupied',title:'鏄惁鍗犵敤',type:'string',width:110,require:true,align:'left',bind: { key: "enable", data: [] }}, {field:'creater',title:'鍒涘缓鑰�',type:'string',width:110,require:true,align:'left'}, {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left'}, {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'}, diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue" index ccc4acd..3ba97af 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSClient/src/views/stock/stockInfo.vue" @@ -48,8 +48,10 @@ }); const searchFormOptions = ref([ [ - { title: "鎵樼洏缂栧彿", field: "palletCode" }, - { title: "璐т綅缂栧彿", field: "locationCode" }, + { title: "鎵樼洏缂栧彿", field: "palletCode",type:"like" }, + { title: "璐т綅缂栧彿", field: "locationCode",type:"like" }, + {title: "搴撳瓨缁勭粐", field:"materielInvOrgId",type:"select",dataKey:"materielInvOrgEnum",data:[]}, + {title: "鐗╂枡缂栧彿", field:"materielCode",type:"like"}, ], ]); const columns = ref([ diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs" index 2f85b79..d68fb1c 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/CommonEnum/AGVStationAreaEnum.cs" @@ -12,49 +12,73 @@ /// <summary> /// 鏈堝彴鍖� /// </summary> - [Description("鏈堝彴鐮佸ご")] - AreaA = 0, - - /// <summary> - /// 鎴愬搧鍖� - /// </summary> - [Description("鎴愬搧搴撳唴")] - AreaB = 1, + [Description("鏈堝彴鍖�")] + AreaA = 1, /// <summary> /// 鍏ュ簱鍖� /// </summary> [Description("鍏ュ簱鍖�")] - AreaC = 2, - - /// <summary> - /// 娣嬭啘鍖� - /// </summary> - [Description("娣嬭啘鍖�")] - AreaD = 3, + AreaB = 2, /// <summary> /// 缁囧竷鍖� /// </summary> [Description("缁囧竷鍖�")] - AreaE = 4, + AreaC = 3, + + /// <summary> + /// 娣嬭啘鍖� + /// </summary> + [Description("娣嬭啘鍖�")] + AreaD = 4, /// <summary> /// 鏆傚瓨鍖� /// </summary> - [Description("缁囧竷鍖�")] - AreaF = 5, + [Description("鏆傚瓨鍖�")] + AreaE = 5, /// <summary> /// 鍗板埛鍖� /// </summary> [Description("鍗板埛鍖�")] - AreaG = 6, + AreaF = 6, /// <summary> /// 鍐插垏鍖� /// </summary> [Description("鍐插垏鍖�")] - AreaH = 7 + AreaG = 7, + + /// <summary> + /// 鍘熸枡鍖� + /// </summary> + [Description("鍘熸枡鍖�")] + AreaH = 8, + + /// <summary> + /// 绾歌鍖� + /// </summary> + [Description("绾歌鍖�")] + AreaI = 9, + + /// <summary> + /// 甯冭鍖� + /// </summary> + [Description("甯冭鍖�")] + AreaJ = 10, + + /// <summary> + /// 绾告澂鍖� + /// </summary> + [Description("绾告澂鍖�")] + AreaK = 11, + + /// <summary> + /// 闆惧寲鍖� + /// </summary> + [Description("闆惧寲鍖�")] + AreaL = 12 } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" index e672fbc..2cd97a0 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/TaskEnum/TaskTypeEnum.cs" @@ -43,6 +43,12 @@ OutAllocate = 150, /// <summary> + /// 鑰佸巶鍑哄簱 + /// </summary> + [Description("鑰佸巶鍑哄簱")] + OldOutbound = 160, + + /// <summary> /// MES鍑哄簱 /// </summary> [Description("MES鍑哄簱")] diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" index c3d90ee..ad755aa 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Common/WareHouseEnum/WarehouseEnum.cs" @@ -77,6 +77,11 @@ /// </summary> [Description("鎴愬搧搴�")] LLDCP, + /// <summary> + /// 鍘熸枡搴� + /// </summary> + [Description("鍘熸枡搴�")] + LLDYL, } public enum WarehouseTypEnum { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" index 01f13f3..2043f3f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_ITaskInfoService/ITaskService.cs" @@ -72,7 +72,7 @@ WebResponseContent RequestYLWMSTaskSimple(string stationCode, string palletCode); /// <summary> - /// 鍒嗛厤宸烽亾 + /// 鍒嗛厤鍘熸枡宸烽亾 /// </summary> /// <returns></returns> string AssignYLRoadwayNo(string palletCode); @@ -166,5 +166,22 @@ /// <param name="startPoint"></param> /// <returns></returns> WebResponseContent EmptyBackTask(string barCode, string startPoint); + + /// <summary> + /// 鎴愬搧鍑哄簱 + /// </summary> + /// <param name="Count"></param> + /// <returns></returns> + WebResponseContent RequestCPWMSTaskOut(int Count); + /// <summary> + /// 鍘熸枡鍑哄簱浠诲姟 + /// </summary> + /// <param name="materielCode">鐗╂枡浠g爜</param> + /// <param name="materielWide">鐗╂枡骞呭</param> + /// <param name="Count">鍗锋暟</param> + /// <returns></returns> + WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count); + + WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay); } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" index 13a0859..ae1dc37 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_Model/Models/Basic/Dt_AGVStationInfo.cs" @@ -40,6 +40,11 @@ [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍖哄煙")] public int StationArea { get; set; } /// <summary> + /// 鏄惁鍗犵敤 + /// </summary> + [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏄惁鍗犵敤")] + public int IsOccupied { get; set; } + /// <summary> /// 澶囨敞 /// </summary> [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "澶囨敞")] diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" index 50f0f44..5ddf32a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService.cs" @@ -72,9 +72,9 @@ {nameof(Dt_Task.CreateDate),OrderByType.Asc}, }; - public List<int> TaskTypes => typeof(TaskTypeEnum).GetEnumIndexList(); + public List<int> TaskInboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 500 && x < 900).ToList(); - public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList(); + public List<int> TaskOutboundTypes => typeof(TaskTypeEnum).GetEnumIndexList().Where(x => x >= 100 && x < 500).ToList(); public TaskService(ITaskRepository BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository, IBasicService basicService, IRecordService recordService, IStockService stockService, IBasicRepository basicRepository, IApiInfoRepository apiInfoRepository, IInvokeERPService invokeERPService, IPalletTypeInfoRepository palletTypeInfoRepository, IAGVStationInfoRepository agvStationInfoRepository) : base(BaseDal) { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" index 4a6f8b5..1ddd8a0 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Completed.cs" @@ -34,7 +34,7 @@ } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { - return await Task.FromResult(RelocationTaskCompleted(task)); + return await Task.FromResult(OutboundTaskCompleted(task)); } else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup) { diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" index bd50d60..bb167ed 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Inbound.cs" @@ -4,6 +4,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; +using System.Reflection.Metadata; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -189,15 +190,15 @@ } string roadwayNo = ""; - if (stockInfo.MaterielWide < 2200 && stockInfo.MaterielThickness > 800) + if (stockInfo.MaterielThickness > 800) { - List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); - roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; - } - else if (stockInfo.MaterielWide>2200 && stockInfo.MaterielThickness>800) - { - List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && !x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); - roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; + List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); + roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; + if (stockInfo.MaterielWide > 2200) + { + locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && !x.RoadwayNo.Contains("SC01_YL")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); + roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; + } } return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾"); } @@ -207,6 +208,80 @@ throw new Exception(ex.Message); } } + /// <summary> + /// 鍏ュ簱瀹屾垚 + /// </summary> + public WebResponseContent InboundTaskCompleted(Dt_Task task) + { + try + { + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); + if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚 + { + Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); + if (locationInfoEnd == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅"); + } + Dt_AGVStationInfo agvstation = _agvStationInfoRepository.QueryFirst(x => x.AGVStationCode == task.SourceAddress && x.StationArea == AGVStationAreaEnum.AreaA.ObjToInt()); + if (agvstation != null) + { + agvstation.IsOccupied = WhetherEnum.False.ObjToInt(); + } + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); + if (proStockInfo != null && proStockInfo.StockStatus == StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt()) + { + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + if (agvstation != null) + { + _agvStationInfoRepository.UpdateData(agvstation); + } + proStockInfo.LocationCode = locationInfoEnd.LocationCode; + proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, proStockInfo.PalletType, LocationStatusEnum.InStock, proStockInfo.WarehouseId); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + } + else + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�"); + } + } + else//鍘熸枡搴撳畬鎴� + { + Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode); + if (stockInfo == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�"); + } + Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); + if (locationInfoEnd == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅"); + } + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + stockInfo.LocationCode = locationInfoEnd.LocationCode; + stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); + _stockService.StockInfoService.Repository.UpdateData(stockInfo); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + } + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> + /// 鍒嗛厤鎴愬搧宸烽亾 + /// </summary> + /// <returns></returns> public string AssignCPRoadwayNo() { try @@ -219,7 +294,20 @@ string roadwayNo = ""; List<LocationCount> locationCounts = Db.Queryable<Dt_LocationInfo>().Where(x => x.WarehouseId == warehouse.WarehouseId && x.LocationType == LocationTypeEnum.Undefined.ObjToInt() && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyIn.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && x.RoadwayNo.Contains("CP")).GroupBy(x => x.RoadwayNo).Select(x => new LocationCount { RoadwayNo = x.RoadwayNo, Count = SqlFunc.AggregateCount(x) }).ToList(); - roadwayNo = locationCounts.OrderBy(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; + + //鑾峰彇褰撳墠鍏ュ簱浠诲姟涓凡鍒嗛厤宸烽亾浠诲姟鏁伴噺 + List<LocationCount> useLocationCounts = Db.Queryable<Dt_Task>().Where(x => x.WarehouseId == warehouse.WarehouseId + && locationCounts.Select(j=>j.RoadwayNo).Contains(x.Roadway) + && TaskInboundTypes.Contains(x.TaskType)).GroupBy(x => x.Roadway).Select(x => new LocationCount { RoadwayNo = x.Roadway, Count = SqlFunc.AggregateCount(x) }).ToList(); + foreach (var item in locationCounts) + { + LocationCount? count = useLocationCounts.FirstOrDefault(x => x.RoadwayNo == item.RoadwayNo); + if (count!=null) + { + item.Count -= count.Count; + } + } + roadwayNo = locationCounts.OrderByDescending(x => x.Count).FirstOrDefault()?.RoadwayNo ?? ""; return !string.IsNullOrEmpty(roadwayNo) ? (roadwayNo) : throw new Exception("鏈壘鍒板彲鍒嗛厤宸烽亾"); } catch (Exception ex) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" index ec5d9d5..fb613e5 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Outbound.cs" @@ -20,6 +20,8 @@ using WIDESEA_Core.CodeConfigEnum; using Microsoft.AspNetCore.Mvc; using WIDESEA_DTO.ERP; +using WIDESEA_Common.MaterielEnum; +using WIDESEA_Common.WareHouseEnum; namespace WIDESEA_TaskInfoService { @@ -78,6 +80,68 @@ return content; } /// <summary> + /// 鍑哄簱浠诲姟瀹屾垚 + /// </summary> + public WebResponseContent OutboundTaskCompleted(Dt_Task task) + { + try + { + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); + if (warehouse.WarehouseCode == WarehouseEnum.LLDCP.ToString()) //鎴愬搧瀹屾垚 + { + Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (locationInfoStart == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅"); + } + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); + if (proStockInfo != null && proStockInfo.StockStatus==StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()) + { + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); + _stockRepository.ProStockInfoRepository.DeleteAndMoveIntoHty(proStockInfo,App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + } + else + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�"); + } + } + else//鍘熸枡搴撳畬鎴� + { + Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (locationInfoStart == null) + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅"); + } + Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == task.PalletCode); + if (stockInfo != null && stockInfo.StockStatus == StockStatusEmun.鍑哄簱閿佸畾.ObjToInt()) + { + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + } + else + { + return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�"); + } + } + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> /// 搴撳瓨鏁版嵁杞嚭搴撲换鍔� /// </summary> /// <param name="stockInfos"></param> @@ -111,9 +175,9 @@ MaterielCode = stockInfo.MaterielCode, Quantity = 0, }; - if (stockInfo.StockLength>0) + if (stockInfo.MaterielWide>0) { - task.TaskLength = stockInfo.StockLength; + task.TaskLength = (int)stockInfo.MaterielWide; } tasks.Add(task); } @@ -121,6 +185,171 @@ } return tasks; } + public List<Dt_Task> GetTasks(List<Dt_ProStockInfo> stockInfos, TaskTypeEnum taskType) + { + List<Dt_Task> tasks = new List<Dt_Task>(); + for (int i = 0; i < stockInfos.Count; i++) + { + Dt_ProStockInfo stockInfo = stockInfos[i]; + if (stockInfo != null) + { + Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode); + if (!tasks.Exists(x => x.PalletCode == stockInfo.PalletCode)) + { + Dt_Task task = new() + { + CurrentAddress = stockInfo.LocationCode, + Grade = 0, + PalletCode = stockInfo.PalletCode, + NextAddress = "", + Roadway = locationInfo.RoadwayNo, + SourceAddress = stockInfo.LocationCode, + TargetAddress = "", + TaskStatus = TaskStatusEnum.New.ObjToInt(), + TaskType = taskType.ObjToInt(), + TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), + PalletType = stockInfo.PalletType, + WarehouseId = stockInfo.WarehouseId, + Quantity = 0, + }; + tasks.Add(task); + } + } + } + return tasks; + } + /// <summary> + /// 鎴愬搧鍑哄簱 + /// </summary> + /// <param name="Count"></param> + /// <returns></returns> + public WebResponseContent RequestCPWMSTaskOut(int Count) + { + WebResponseContent content = new WebResponseContent(); + try + { + List<Dt_AGVStationInfo> aGVStationInfos = _agvStationInfoRepository.QueryData(x=>x.StationArea==AGVStationAreaEnum.AreaA.ObjToInt() && x.IsOccupied==WhetherEnum.False.ObjToInt()); + if (aGVStationInfos.Count< Count) + { + return content.Error($"鍙敤缂撳瓨鏁颁笉瓒�"); + } + List<Dt_ProStockInfo> stockInfos = _stockRepository.ProStockInfoRepository.QueryData(x => x.ProStockAttribute == ProStockAttributeEnum.绌烘墭.ObjToInt() && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); + List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); + if (stockInfos.Count < Count) + { + return content.Error($"搴撳瓨鏁伴噺涓嶈冻"); + } + foreach (var item in stockInfos) + { + Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.LocationCode == item.LocationCode); + if (locationInfo != null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) + { + item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + } + else + { + return content.Error($"璐т綅鐘舵�佷笉姝g‘"); + } + } + List<Dt_Task> tasks = GetTasks(stockInfos, TaskTypeEnum.OutProduct); + if (tasks == null || tasks.Count <= 0) + { + return content.Error($"鐢熸垚浠诲姟澶辫触"); + } + for (int i = 0; i < tasks.Count; i++) + { + aGVStationInfos[i].IsOccupied = WhetherEnum.True.ObjToInt(); + tasks[i].TargetAddress = aGVStationInfos[i].AGVStationCode; + } + //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅 + _unitOfWorkManage.BeginTran(); + //鏇存柊搴撳瓨鐘舵�� + _stockRepository.ProStockInfoRepository.UpdateData(stockInfos); + _agvStationInfoRepository.UpdateData(aGVStationInfos); + //鏇存柊璐т綅鐘舵�� + _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); + //鍔犲叆璐т綅鍙樺姩璁板綍 + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, taskNums: tasks.Select(x => x.TaskNum).ToList()); + //鏂板缓浠诲姟 + BaseDal.AddData(tasks); + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); + content.OK(); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + /// <summary> + /// 鍘熸枡鍑哄簱浠诲姟 + /// </summary> + /// <param name="materielCode">鐗╂枡浠g爜</param> + /// <param name="materielWide">鐗╂枡骞呭</param> + /// <param name="Count">鍗锋暟</param> + /// <returns></returns> + public WebResponseContent RequestYLWMSTaskOut(string materielCode, int materielWide, int Count) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鑾峰彇瀵瑰簲搴撳瓨 + List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.QueryData(x=>x.MaterielCode==materielCode && x.MaterielWide== materielWide && x.StockStatus==StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt()).OrderBy(x=>x.CreateDate).Take(Count).ToList(); + + if (stockInfos.Count< Count) + { + return content.Error($"搴撳瓨{materielCode}鏁伴噺涓嶈冻"); + } + //鑾峰彇璐т綅 + List<Dt_LocationInfo> locationInfos = _basicRepository.LocationInfoRepository.QueryData(x => stockInfos.Select(x => x.LocationCode).Contains(x.LocationCode)); + foreach (var item in stockInfos) + { + Dt_LocationInfo? locationInfo = locationInfos.FirstOrDefault(x=>x.LocationCode==item.LocationCode); + if (locationInfo!=null && (locationInfo.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || locationInfo.EnableStatus == EnableStatusEnum.Normal.ObjToInt()) && locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) + { + item.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt(); + } + else + { + return content.Error($"璐т綅鐘舵�佷笉姝g‘"); + } + } + TaskTypeEnum taskTypeEnum = new(); + if (stockInfos.FirstOrDefault()?.MaterielInvOrgId==MaterielInvOrgEnum.鑰佸巶.ObjToInt()) + { + taskTypeEnum = TaskTypeEnum.OldOutbound; + } + else + { + taskTypeEnum = TaskTypeEnum.Outbound; + } + List<Dt_Task> tasks = GetTasks(stockInfos, taskTypeEnum); + if (tasks == null || tasks.Count <= 0) + { + return content.Error($"鐢熸垚浠诲姟澶辫触"); + } + //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅 + _unitOfWorkManage.BeginTran(); + //鏇存柊搴撳瓨鐘舵�� + _stockRepository.StockInfoRepository.UpdateData(stockInfos); + //鏇存柊璐т綅鐘舵�� + _basicRepository.LocationInfoRepository.UpdateLocationStatus(locationInfos, LocationStatusEnum.Lock); + //鍔犲叆璐т綅鍙樺姩璁板綍 + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfos, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation,taskNums:tasks.Select(x=>x.TaskNum).ToList()); + + //鏂板缓浠诲姟 + BaseDal.AddData(tasks); + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(tasks); + content.OK(); + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } } } \ No newline at end of file diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" index 6bbdb17..7e3464f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/TaskService_Reloaction.cs" @@ -8,8 +8,10 @@ using WIDESEA_Common.OtherEnum; using WIDESEA_Common.StockEnum; using WIDESEA_Common.TaskEnum; +using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.Helper; +using WIDESEA_DTO.Basic; using WIDESEA_DTO.Task; using WIDESEA_Model.Models; @@ -126,37 +128,6 @@ return WebResponseContent.Instance.Error(ex.Message); } } - public WebResponseContent InboundTaskCompleted(Dt_Task task) - { - try - { - Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.PalletCode == task.PalletCode); - if (stockInfo == null) - { - return WebResponseContent.Instance.Error($"鏈壘鍒板搴斿簱瀛樹俊鎭�"); - } - Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); - if (locationInfoEnd == null) - { - return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅"); - } - task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); - FeedBackWCSTaskCompleted(task.TaskNum); - _unitOfWorkManage.BeginTran(); - stockInfo.LocationCode = locationInfoEnd.LocationCode; - stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); - _stockService.StockInfoService.Repository.UpdateData(stockInfo); - _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId); - BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐瀹屾垚 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩瀹屾垚); - _unitOfWorkManage.CommitTran(); - return WebResponseContent.Instance.OK(); - } - catch (Exception ex) - { - _unitOfWorkManage.RollbackTran(); - return WebResponseContent.Instance.Error(ex.Message); - } - } public WebResponseContent RelocationTaskCompleted(Dt_Task task) { try @@ -196,5 +167,54 @@ return WebResponseContent.Instance.Error(ex.Message); } } + public WebResponseContent IsRelocation(string startAddress,string endAddress,string roadWay) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鑾峰彇璐т綅 + Dt_LocationInfo startLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == startAddress); + Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.LocationCode == startAddress); + Dt_LocationInfo endLocationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == endAddress); + if (startLocationInfo != null && endLocationInfo != null && stockInfo!=null) + { + Dt_Task newTask = new Dt_Task() + { + Roadway = roadWay, + WarehouseId = stockInfo.WarehouseId, + CurrentAddress = startLocationInfo.LocationCode, + Grade = 99, + NextAddress = endLocationInfo.LocationCode, + OrderNo = "", + PalletCode = stockInfo.PalletCode, + PalletType = stockInfo.PalletType, + SourceAddress = startLocationInfo.LocationCode, + TargetAddress = endLocationInfo.LocationCode, + TaskNum = Repository.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)), + TaskStatus = 0, + TaskType = TaskTypeEnum.Relocation.ObjToInt() + }; + stockInfo.StockStatus = StockStatusEmun.绉诲簱閿佸畾.ObjToInt(); + _unitOfWorkManage.BeginTran(); + Repository.AddData(newTask); + _basicService.LocationInfoService.UpdateLocationStatus(startLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); + _basicService.LocationInfoService.UpdateLocationStatus(endLocationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId); + _stockService.StockInfoService.Repository.UpdateData(stockInfo); + _unitOfWorkManage.CommitTran(); + PushTasksToWCS(new List<Dt_Task> { newTask }); + content.OK("鎴愬姛"); + } + else + { + content.Error("搴撳瓨璐т綅淇℃伅涓虹┖"); + } + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" index 2c8be3d..24cc3df 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_WMSServer/Controllers/TaskInfo/TaskController.cs" @@ -182,5 +182,39 @@ { return Service.RequestYLWMSTaskSimple(stationCode,palletCode); } + + /// <summary> + /// 鎴愬搧鍑哄簱浠诲姟璇锋眰 + /// </summary> + /// <returns></returns> + [HttpPost, HttpGet, Route("RequestCPWMSTaskOut"), AllowAnonymous] + public WebResponseContent RequestCPWMSTaskOut(int Count) + { + return Service.RequestCPWMSTaskOut(Count); + } + /// <summary> + /// 鍘熸枡鍑哄簱浠诲姟 + /// </summary> + /// <param name="materielCode">鐗╂枡浠g爜</param> + /// <param name="materielWide">鐗╂枡骞呭</param> + /// <param name="Count">鍗锋暟</param> + /// <returns></returns> + [HttpPost, HttpGet, Route("RequestYLWMSTaskOut"), AllowAnonymous] + public WebResponseContent RequestYLWMSTaskOut(string materielCode,int materielWide, int Count) + { + return Service.RequestYLWMSTaskOut(materielCode, materielWide, Count); + } + /// <summary> + /// 鍘熸枡绉诲簱浠诲姟 + /// </summary> + /// <param name="startAddress"></param> + /// <param name="endAddress"></param> + /// <param name="roadWay"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("Relocation"), AllowAnonymous] + public WebResponseContent IsRelocation(string startAddress, string endAddress, string roadWay) + { + return Service.IsRelocation(startAddress, endAddress, roadWay); + } } } diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx" index 73b7081..9b63aad 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\345\210\251\346\213\223\347\263\273\347\273\237\345\257\271\351\276\231\345\210\251\345\276\227\344\272\214\346\234\237\347\263\273\347\273\237\347\232\204\351\234\200\346\261\202.docx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx" index f6ca304..f094204 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\212\200\346\234\257\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\351\241\271\347\233\256\345\257\271\346\216\245\350\256\260\345\275\225.xlsx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx" new file mode 100644 index 0000000..d537c49 --- /dev/null +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/MES.xlsx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx" index 77ff942..6ff358f 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\346\216\245\345\217\243\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\267\347\202\271\344\275\215.xlsx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" index 7000985..a1adcea 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\345\216\237\346\226\231\345\272\223\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256.xlsx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" index e873504..a745a85 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\210\220\345\223\201\350\276\223\351\200\201\347\272\277\351\200\232\350\256\257\345\215\217\350\256\256_20250707.xlsx" Binary files differ diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx" index 61acd3f..4a86236 100644 --- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx" +++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\351\276\231\345\210\251\345\276\227\350\275\257\344\273\266\350\256\241\345\210\222\350\241\250.xlsx" Binary files differ -- Gitblit v1.9.3