From a6df2a29e7424ce327776fd3880ae514d8ca8c9f Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期一, 07 七月 2025 06:32:24 +0800 Subject: [PATCH] 更新 --- 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs | 32 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/StackerCraneJob_CP.cs | 8 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs | 47 ++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs | 69 +++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPD.cs | 79 +++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPC.cs | 108 ++++ 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs | 295 +----------- 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPA.cs | 109 ++++ 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs | 63 +- 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/ConveyorLineJob_CPB.cs | 127 +++++ /dev/null | 207 --------- 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs | 30 项目代码/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs | 10 项目代码/WCS/WCSServices/WIDESEAWCS_Tasks/成品仓/RGVJob_CP.cs | 129 +++++ 项目代码/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs | 48 + 15 files changed, 803 insertions(+), 558 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" index 64921db..ccd5df8 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs" @@ -43,24 +43,6 @@ SC_Finish = 220, /// <summary> - /// 杈撻�佺嚎寰呮墽琛� - /// </summary> - [Description("杈撻�佺嚎寰呮墽琛�")] - Line_Execute = 400, - - /// <summary> - /// 杈撻�佺嚎鎵ц涓� - /// </summary> - [Description("杈撻�佺嚎鎵ц涓�")] - Line_Executing = 410, - - /// <summary> - /// 杈撻�佺嚎瀹屾垚 - /// </summary> - [Description("杈撻�佺嚎瀹屾垚")] - Line_Finish = 420, - - /// <summary> /// AGV寰呮墽琛� /// </summary> [Description("AGV寰呮墽琛�")] @@ -69,7 +51,7 @@ /// AGV鍙栬揣涓� /// </summary> [Description("AGV鍙栬揣涓�")] - AGV_Takeing =305, + AGV_Takeing = 305, /// <summary> /// AGV鎵ц涓� /// </summary> @@ -92,6 +74,34 @@ /// </summary> [Description("AGV瀹屾垚")] AGV_Finish = 330, + /// <summary> + /// 杈撻�佺嚎寰呮墽琛� + /// </summary> + [Description("杈撻�佺嚎寰呮墽琛�")] + Line_Execute = 400, + + /// <summary> + /// 杈撻�佺嚎鎵ц涓� + /// </summary> + [Description("杈撻�佺嚎鎵ц涓�")] + Line_Executing = 410, + + /// <summary> + /// 杈撻�佺嚎瀹屾垚 + /// </summary> + [Description("杈撻�佺嚎瀹屾垚")] + Line_Finish = 420, + + /// <summary> + /// RGV寰呮墽琛� + /// </summary> + [Description("RGV寰呮墽琛�")] + RGV_Execute = 500, + /// <summary> + /// RGV鎵ц涓� + /// </summary> + [Description("RGV鎵ц涓�")] + RGV_Executing = 510, /// <summary> /// 浠诲姟瀹屾垚 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 5a885e6..d2bb2c1 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" @@ -23,6 +23,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Reflection; @@ -217,14 +218,14 @@ if (taskTypeGroup == TaskTypeGroup.InboundGroup) { stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == item.SourceAddress || x.StationDeviceCode == item.SourceAddress); - if (stationManger==null && task.TaskType==TaskTypeEnum.InProduct.ObjToInt()) - { - stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode==task.SourceAddress); - //杞崲鎴愬搧浠撹捣鐐圭珯鍙� - item.SourceAddress = stationManger.StationCode; - task.CurrentAddress = stationManger.StationCode; - task.SourceAddress = stationManger.StationCode; - } + //if (stationManger==null && task.TaskType==TaskTypeEnum.InProduct.ObjToInt()) + //{ + // stationManger = _stationMangerRepository.QueryFirst(x => x.StackerCraneCode==task.SourceAddress); + // //杞崲鎴愬搧浠撹捣鐐圭珯鍙� + // item.SourceAddress = stationManger.StationCode; + // task.CurrentAddress = stationManger.StationCode; + // task.SourceAddress = stationManger.StationCode; + //} } else { @@ -244,10 +245,11 @@ if (routers.Count == 1) { - if (taskTypeGroup == TaskTypeGroup.InboundGroup && item.TargetAddress == stationManger.StackerCraneCode) + if (taskTypeGroup == TaskTypeGroup.InboundGroup) { + task.CurrentAddress = router.StartPosi; task.NextAddress = router.NextPosi; - task.DeviceCode = stationManger.StationDeviceCode; + task.DeviceCode = router.ChildPosiDeviceCode; } else if (item.TaskType == TaskTypeEnum.MesMatReturn.ObjToInt() && !router.IsEnd) { @@ -439,21 +441,34 @@ WebResponseContent content = new WebResponseContent(); try { - string address = AppSettings.Get("WMSApiAddress"); - if (string.IsNullOrEmpty(address)) + //string address = AppSettings.Get("WMSApiAddress"); + //if (string.IsNullOrEmpty(address)) + //{ + // return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); + //} + //string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}"); + //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) + // { + WMSTaskDTO? taskDTO = new WMSTaskDTO() { - return WebResponseContent.Instance.Error($"鏈壘鍒癢MSApi鍦板潃"); - } - string responseStr = HttpHelper.Get($"{address}/api/Task/DeviceRequestInboundTaskSimple?stationCode={sourceAddress}&palletCode={palletCode}"); - 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 }); - } - } + Id = 1, + TaskNum = DateTime.Now.ToString("mmss").ObjToInt(), + PalletCode="", + RoadWay="", + TaskType=TaskTypeEnum.InProduct.ObjToInt(), + TaskStatus=TaskStatusEnum.New.ObjToInt(), + SourceAddress= sourceAddress, + TargetAddress="", + WarehouseId=1, + Grade=0, + }; + content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO }); + // } + //} } catch (Exception ex) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" index dce33cd..5b813a4 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_TaskInfoService/TaskService_Operate.cs" @@ -99,11 +99,11 @@ BaseDal.UpdateData(task); - string address = AppSettings.Get("WMSApiAddress"); - if (!string.IsNullOrEmpty(address)) - { - HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize()); - } + //string address = AppSettings.Get("WMSApiAddress"); + //if (!string.IsNullOrEmpty(address)) + //{ + // HttpHelper.Post($"{address}/api/Task/UpdateTaskInfo", task.Serialize()); + //} _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskNum, stringBuilder.ToString()); } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" index ac89d7e..39ef4bd 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs" @@ -36,290 +36,71 @@ public int TaskNum { get; set; } } - - - public class R_ConveyorLineInfo : DeviceCommand - { - /// <summary> - /// 绔欏彴缂栧彿 - /// </summary> - public short ConveyorNo { get; set; } - - /// <summary> - /// 鐘舵�� - /// </summary> - public byte Status { get; set; } - - /// <summary> - /// 棰勭暀 - /// </summary> - public byte Undefined { get; set; } - - /// <summary> - /// 浠诲姟鍙� - /// </summary> - public int TaskNum { get; set; } - - /// <summary> - /// 璧峰鍦板潃 - /// </summary> - public short StartPos { get; set; } - - /// <summary> - /// 鐩爣鍦板潃 - /// </summary> - public short EndPos { get; set; } - - /// <summary> - /// 閲嶉噺 - /// </summary> - public short GoodsWeight { get; set; } - - /// <summary> - /// 璐х墿绫诲瀷 - /// </summary> - public short GoodsType { get; set; } - - /// <summary> - /// 0闈欐1鍓嶈繘2鍚庨��3涓婂崌/椤烘椂閽堟棆杞�4涓嬮檷/閫嗘椂閽堟棆杞� - /// </summary> - public short RunStatus { get; set; } - - private string _barcode; - /// <summary> - /// 鏉$爜 - /// </summary> - [DataLength(20)] - public string Barcode - { - get { return _barcode; } - set { _barcode = value.Replace("\0", "").Replace("\\0", ""); } - } - - /// <summary> - /// 棰勭暀 - /// </summary> - public short Spare1 { get; set; } - - /// <summary> - /// 棰勭暀 - /// </summary> - public short Spare2 { get; set; } - - /// <summary> - /// 浜や簰淇″彿 - /// </summary> - public byte Signal { get; set; } - - - /// <summary> - /// 棰勭暀 - /// </summary> - public byte Undefined2 { get; set; } - } public class R_ConveyorLineCPInfo : DeviceCommand { /// <summary> - /// 鍒颁綅鎸囦护 + /// 蹇冭烦 /// </summary> - public short ConveyArrivaled { get; set; } - + public short Heart { get; set; } /// <summary> - /// 璧峰鍦板潃 + /// 棰勭暀 /// </summary> - public short StartPos { get; set; } - + public short Reserve { get; set; } /// <summary> - /// 缁堢偣鍦板潃 + /// 鐘舵�� /// </summary> - public short EndPos { get; set; } - + public short StatusPV { get; set; } + /// <summary> + /// 鍛戒护 + /// </summary> + public short Command { get; set; } + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public int TaskNo { get; set; } /// <summary> /// 鎵樼洏鍙� /// </summary> /// <summary> - - [DataLength(20)] - public string Barcode { get; set; } - - /// <summary> - /// 浠诲姟鍙� - /// </summary> - [DataLength(20)] - public string TaskNum { get; set; } - - /// <summary> - /// 绫诲瀷 - /// </summary> - public short WorkType { get; set; } - - /// <summary> - /// 妯″紡 - /// </summary> - public short WorkMode { get; set; } - - /// <summary> - /// 鏍¢獙浣� - /// </summary> - public short CheckPos { get; set; } + [DataLength(10)] + public string PalletCode { get; set; } } - public class R_ConveyorLineGMInfo : DeviceCommand + public class R_RGVCPInfo : DeviceCommand { /// <summary> - /// 绠卞彿 + /// 妯″紡<br/> + /// 1鎵嬪姩<br/> + /// 2缁翠慨<br/> + /// 3鍗婅嚜鍔�<br/> + /// 4鑷姩<br/> + /// 5鑱旀満鑷姩<br/> /// </summary> + public short Mode { get; set; } /// <summary> - [DataLength(120)] - public string Boxcode { get; set; } - } - public class R_ConveyorLineFLInfo : DeviceCommand - { - /// <summary> - /// 鎵樼洏鍙� + /// 鐘舵��<br/> + /// 0绌洪棽<br/> + /// 1鏈変换鍔�<br/> /// </summary> + public short State { get; set; } /// <summary> - - [DataLength(20)] - public string Barcode { get; set; } - - /// <summary> - /// 浠诲姟鍙� + /// RGV鎺ユ敹浠诲姟鍙�<br/> /// </summary> - [DataLength(20)] - public string TaskNum { get; set; } - } - public class R_ConveyorLineStatus - { + public short RgvTask { get; set; } /// <summary> - /// 鎻℃墜淇″彿 + /// RGV缁撴潫浠诲姟鍙�<br/> /// </summary> - [BoolIndex(0)] - public bool HandShake { get; set; } - + public short RgvEndTask { get; set; } /// <summary> - /// 1鑱旀満 0鑴辨満 + /// RGV涓婃浠诲姟鍙�<br/> /// </summary> - [BoolIndex(1)] - public bool Online { get; set; } - + public short RgvLastTask { get; set; } /// <summary> - /// 1绌洪棽 0绻佸繖 + /// 浠诲姟鐘舵�佸弽棣�<br/> /// </summary> - [BoolIndex(2)] - public bool Free { get; set; } - + public short TaskDone { get; set; } /// <summary> - /// 1鏈夎揣 0鏃犺揣 + /// 蹇冭烦<br/> /// </summary> - [BoolIndex(3)] - public bool Goods { get; set; } - - /// <summary> - /// 1鏁呴殰 0姝e父 - /// </summary> - [BoolIndex(4)] - public bool Alarm { get; set; } - - /// <summary> - /// 1璇锋眰琛ョ洏 0鏃� - /// </summary> - [BoolIndex(5)] - public bool RequestPakcPallet { get; set; } - - /// <summary> - /// 1璇锋眰鎷嗙洏 0鏃� - /// </summary> - [BoolIndex(6)] - public bool RequestUnpackPellet { get; set; } - } - - public class ConveyorLineSignal - { - /// <summary> - /// 璇锋眰淇″彿 - /// </summary> - [BoolIndex(0)] - public bool STB { get; set; } - - /// <summary> - /// 鍝嶅簲淇″彿 - /// </summary> - [BoolIndex(1)] - public bool ACK { get; set; } - } - - public class W_ConveyorLineInfo : DeviceCommand - { - - /// <summary> - /// 绔欏彴缂栧彿 - /// </summary> - public short ConveyorNo { get; set; } - - public byte Operate { get; set; } - - public byte Undefined { get; set; } - - /// <summary> - /// 浠诲姟鍙� - /// </summary> - public int TaskNum { get; set; } - - /// <summary> - /// 璧峰鍦板潃 - /// </summary> - public short StartPos { get; set; } - - /// <summary> - /// 鐩爣鍦板潃 - /// </summary> - public short EndPos { get; set; } - - /// <summary> - /// 璐х墿绫诲瀷 - /// </summary> - public short GoodsType { get; set; } - - /// <summary> - /// 棰勭暀 - /// </summary> - public short Spare1 { get; set; } - - /// <summary> - /// 棰勭暀 - /// </summary> - public short Spare2 { get; set; } - - /// <summary> - /// 浜や簰淇″彿 - /// </summary> - public byte Signal { get; set; } - - - /// <summary> - /// 棰勭暀 - /// </summary> - public byte Undefined2 { get; set; } - } - - public class W_ConveyorLineOperate - { - /// <summary> - /// 鎻℃墜淇″彿 - /// </summary> - [BoolIndex(0)] - public bool HandShake { get; set; } - - /// <summary> - /// 澶嶄綅鎶ヨ - /// </summary> - [BoolIndex(1)] - public bool ClearAlarm { get; set; } - - /// <summary> - /// 閫�鍥� - /// </summary> - [BoolIndex(2)] - public bool Return { get; set; } + public short HeartBeat { get; set; } } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs" index a2c4f64..79211c1 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineCPDBName.cs" @@ -9,38 +9,28 @@ public enum R_ConveyorLineCPDB { /// <summary> - /// 鍒颁綅鎸囦护 + /// 鍛戒护 /// </summary> - ConveyArrivaled, + Command, /// <summary> - /// 璧峰鍦板潃 + /// 鐩爣鍦板潃 /// </summary> - StartPos, - /// <summary> - /// 缁堢偣鍦板潃 - /// </summary> - EndPos, - /// <summary> - /// 鎵樼洏鍙� - /// </summary> - Barcode, + StatusPV, /// <summary> /// 浠诲姟鍙� /// </summary> - TaskNum, + TaskNo, /// <summary> - /// 绫诲瀷 + /// 棰勭暀 /// </summary> - WorkType, + Reserve, /// <summary> - /// 妯″紡 - /// 1鍏ュ簱妯″紡 - /// 2鐢熶骇妯″紡 + /// 蹇冭烦 /// </summary> - WorkMode, + Heart, /// <summary> - /// 鏍¢獙浣� + /// 鎵樼洏鏉$爜 /// </summary> - CheckPos + PalletCode } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs" deleted file mode 100644 index 81453e9..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineDBName.cs" +++ /dev/null @@ -1,132 +0,0 @@ -锘�#region << 鐗� 鏈� 娉� 閲� >> -/*---------------------------------------------------------------- - * 鍛藉悕绌洪棿锛歐IDESEAWCS_Tasks.ConveyorLineJob - * 鍒涘缓鑰咃細鑳$搴� - * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36 - * 鐗堟湰锛歏1.0.0 - * 鎻忚堪锛� - * - * ---------------------------------------------------------------- - * 淇敼浜猴細 - * 淇敼鏃堕棿锛� - * 鐗堟湰锛歏1.0.1 - * 淇敼璇存槑锛� - * - *----------------------------------------------------------------*/ -#endregion << 鐗� 鏈� 娉� 閲� >> - -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.ConveyorLineJob -{ - public enum R_ConveyorLineDB - { - /// <summary> - /// 绔欏彴缂栧彿 - /// </summary> - ConveyorNo, - - /// <summary> - /// 鎻℃墜淇″彿 - /// </summary> - HandShake, - - /// <summary> - /// 1鑱旀満 0鑴辨満 - /// </summary> - Online, - - /// <summary> - /// 1绌洪棽 0绻佸繖 - /// </summary> - Free, - - /// <summary> - /// 1鏈夎揣 0鏃犺揣 - /// </summary> - Goods, - - /// <summary> - /// 1鏁呴殰 0姝e父 - /// </summary> - Alarm, - - /// <summary> - /// 1璇锋眰琛ョ洏 0鏃� - /// </summary> - RequestPakcPallet, - - /// <summary> - /// 1璇锋眰鎷嗙洏 0鏃� - /// </summary> - RequestUnpackPellet, - - /// <summary> - /// 浠诲姟鍙� - /// </summary> - TaskNum, - - /// <summary> - /// 璧峰鍦板潃 - /// </summary> - StartPos, - - /// <summary> - /// 鐩爣鍦板潃 - /// </summary> - EndPos, - - /// <summary> - /// 閲嶉噺 - /// </summary> - GoodsWeight, - - /// <summary> - /// 璐х墿绫诲瀷 - /// </summary> - GoodsType, - - /// <summary> - /// 0闈欐1鍓嶈繘2鍚庨��3涓婂崌/椤烘椂閽堟棆杞�4涓嬮檷/閫嗘椂閽堟棆杞� - /// </summary> - RunStatus, - - /// <summary> - /// 鏉$爜 - /// </summary> - Barcode, - - /// <summary> - /// 棰勭暀 - /// </summary> - Sapre1, - - /// <summary> - /// 棰勭暀 - /// </summary> - Sapre2, - - /// <summary> - /// 璇锋眰淇″彿 - /// </summary> - STB, - - /// <summary> - /// 鍝嶅簲淇″彿 - /// </summary> - ACK, - /// <summary> - /// 鏉$爜 - /// </summary> - Boxcode - } - - public enum R_ConveyorLineWorkType - { - ConveyorLineWorkType - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs" deleted file mode 100644 index e2df51e..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_ConveyorLineFLDB.cs" +++ /dev/null @@ -1,24 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.ConveyorLineJob -{ - public enum R_ConveyorLineFLDB - { - /// <summary> - /// 鍒颁綅淇″彿 - /// </summary> - ConveyArrivaled, - /// <summary> - /// 鎵樼洏鍙� - /// </summary> - Barcode, - /// <summary> - /// 浠诲姟鍙� - /// </summary> - TaskNum - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs" new file mode 100644 index 0000000..00ecdab --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/R_RgvCPDBName.cs" @@ -0,0 +1,47 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks.ConveyorLineJob +{ + public enum R_RgvCPDB + { + /// <summary> + /// 妯″紡<br/> + /// 1鎵嬪姩<br/> + /// 2缁翠慨<br/> + /// 3鍗婅嚜鍔�<br/> + /// 4鑷姩<br/> + /// 5鑱旀満鑷姩<br/> + /// </summary> + Mode, + /// <summary> + /// 鐘舵��<br/> + /// 0绌洪棽<br/> + /// 1鏈変换鍔�<br/> + /// </summary> + State, + /// <summary> + /// RGV鎺ユ敹浠诲姟鍙�<br/> + /// </summary> + RgvTask, + /// <summary> + /// RGV缁撴潫浠诲姟鍙�<br/> + /// </summary> + RgvEndTask, + /// <summary> + /// RGV涓婃浠诲姟鍙�<br/> + /// </summary> + RgvLastTask, + /// <summary> + /// 浠诲姟鐘舵�佸弽棣�<br/> + /// </summary> + TaskDone, + /// <summary> + /// 蹇冭烦<br/> + /// </summary> + HeartBeat + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs" index 32a5554..ec9be2f 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineCPDBName.cs" @@ -9,36 +9,24 @@ public enum W_ConveyorLineCPDB { /// <summary> - /// 绉诲姩鎸囦护 + /// 鍛戒护 /// </summary> - ConveyArrival, + Command, /// <summary> - /// 璧峰鍦板潃 + /// 鐩爣鍦板潃 /// </summary> - StartPos, - /// <summary> - /// 缁堢偣鍦板潃 - /// </summary> - EndPos, - /// <summary> - /// 鎵樼洏鍙� - /// </summary> - Barcode, + TargetAddress, /// <summary> /// 浠诲姟鍙� /// </summary> - TaskNum, + TaskNo, /// <summary> - /// 绫诲瀷 + /// 棰勭暀 /// </summary> - WorkType, + Reserve, /// <summary> - /// 瀛愭墭绫诲瀷 + /// 蹇冭烦 /// </summary> - WorkMode, - /// <summary> - /// 鏍¢獙浣� - /// </summary> - CheckPos + Heart } } diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs" deleted file mode 100644 index 890fd0e..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineDBName.cs" +++ /dev/null @@ -1,72 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.ConveyorLineJob -{ - public enum W_ConveyorLineDB - { - /// <summary> - /// 绔欏彴缂栧彿 - /// </summary> - ConveyorNo, - - /// <summary> - /// 鎻℃墜淇″彿 - /// </summary> - HandShake, - - /// <summary> - /// 澶嶄綅鎶ヨ - /// </summary> - ClearAlarm, - - /// <summary> - /// 閫�鍥� - /// </summary> - Return, - - /// <summary> - /// 浠诲姟鍙� - /// </summary> - TaskNum, - - /// <summary> - /// 璧峰鍦板潃 - /// </summary> - StartPos, - - /// <summary> - /// 鐩爣鍦板潃 - /// </summary> - EndPos, - - /// <summary> - /// 璐х墿绫诲瀷 - /// </summary> - GoodsType, - - /// <summary> - /// 棰勭暀1 - /// </summary> - Spare1, - - /// <summary> - /// 棰勭暀2 - /// </summary> - Spare2, - - /// <summary> - /// 璇锋眰淇″彿 - /// </summary> - STB, - - /// <summary> - /// 鍝嶅簲淇″彿 - /// </summary> - ACK - - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.cs" deleted file mode 100644 index f54f660..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_ConveyorLineFLDB.cs" +++ /dev/null @@ -1,20 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.ConveyorLineJob -{ - public enum W_ConveyorLineFLDB - { - /// <summary> - /// 鎵樼洏鍙� - /// </summary> - Barcode, - /// <summary> - /// 浠诲姟鍙� - /// </summary> - TaskNum - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs" new file mode 100644 index 0000000..4ae561a --- /dev/null +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/ConveyorLineJob/W_RgvCPDBName.cs" @@ -0,0 +1,69 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEAWCS_Tasks.ConveyorLineJob +{ + public enum W_RgvCPDB + { + /// <summary> + /// 浠诲姟鍙�<br/> + /// </summary> + WcsTask, + /// <summary> + /// 浠诲姟绫诲瀷<br/> + /// 1瀹氫綅<br/> + /// 2鍙栬揣<br/> + /// 3鏀捐揣<br/> + /// 4鍙栨斁璐�<br/> + /// </summary> + TaskType, + /// <summary> + /// 鎵ц宸ヤ綅<br/> + /// 1:1宸ヤ綅<br/> + /// 2:2宸ヤ綅<br/> + /// 3:3宸ヤ綅<br/> + /// 4:12宸ヤ綅<br/> + /// 5:13宸ヤ綅<br/> + /// 6:23宸ヤ綅<br/> + /// 7:123宸ヤ綅<br/> + /// </summary> + WorkStation, + /// <summary> + /// 鍙栬揣鍦板潃1<br/> + /// </summary> + Qu1, + /// <summary> + /// 鍙栬揣鍦板潃2<br/> + /// </summary> + Qu2, + /// <summary> + /// 鍙栬揣鍦板潃2<br/> + /// </summary> + Qu3, + /// <summary> + /// 鏀捐揣鍦板潃1<br/> + /// </summary> + Fang1, + /// <summary> + /// 鏀捐揣鍦板潃2<br/> + /// </summary> + Fang2, + /// <summary> + /// 鏀捐揣鍦板潃3<br/> + /// </summary> + Fang3, + /// <summary> + /// 蹇冭烦<br/> + /// </summary> + HearBeat, + /// <summary> + /// 涓嬪彂/瀹屾垚浠诲姟鏍囪瘑<br/> + /// 1纭浠诲姟涓嬪彂<br/> + /// 2纭浠诲姟瀹屾垚<br/> + /// </summary> + TaskReceivedDone, + } +} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs" deleted file mode 100644 index a20543e..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneAutoStatusEnum.cs" +++ /dev/null @@ -1,41 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.StackerCraneJob -{ - /// <summary> - /// 鍫嗗灈鏈哄伐浣滄ā寮� - /// </summary> - public enum StackerCraneAutoStatusEnum - { - /// <summary> - /// 鍗婅嚜鍔� - /// </summary> - [Description("鍗婅嚜鍔�")] - SemiAutomatic = 1, - /// <summary> - /// 鍗曟 - /// </summary> - [Description("鍗曟")] - OnlineAutomatic = 2, - /// <summary> - /// 鑷姩 - /// </summary> - [Description("鑷姩")] - Automatic = 3, - /// <summary> - /// 鎵嬪姩 - /// </summary> - [Description("鎵嬪姩")] - Manual = 4, - /// <summary> - /// 鑴辨満 - /// </summary> - [Description("鑴辨満")] - OffLline = 5 - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs" deleted file mode 100644 index 9059af0..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneStatusEnum.cs" +++ /dev/null @@ -1,27 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using WIDESEAWCS_QuartzJob.StackerCrane.Enum; - -namespace WIDESEAWCS_Tasks.StackerCraneJob -{ - /// <summary> - /// 鍫嗗灈鏈鸿澶囩姸鎬� - /// </summary> - public enum StackerCraneStatusEnum - { - /// <summary> - /// 涓嶅湪绾� - /// </summary> - [Description("涓嶅湪绾�")] - Fault, - /// <summary> - /// 鍦ㄧ嚎 - /// </summary> - [Description("鍦ㄧ嚎")] - Normal - } -} diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs" deleted file mode 100644 index 1f7f8d8..0000000 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WCSServices/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneWorkStatusEnum.cs" +++ /dev/null @@ -1,46 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WIDESEAWCS_Tasks.StackerCraneJob -{ - /// <summary> - /// 鍫嗗灈鏈轰綔涓氱姸鎬� - /// </summary> - public enum StackerCraneWorkStatusEnum - { - /// <summary> - /// 鏃犺揣寰呮満 - /// </summary> - [Description("鏃犺揣寰呮満")] - Standby = 1, - /// <summary> - /// 鍙栬揣瀹屾垚 - /// </summary> - [Description("鍙栬揣瀹屾垚")] - PickUpCompleted = 2, - /// <summary> - /// 绉诲姩浠诲姟 - /// </summary> - [Description("绉诲姩浠诲姟")] - MobileTask = 3, - /// <summary> - /// 鍙栬揣涓� - /// </summary> - [Description("鍙栬揣涓�")] - PickUp = 4, - /// <summary> - /// 鏀捐揣涓� - /// </summary> - [Description("鏀捐揣涓�")] - Putting = 5, - /// <summary> - /// 浠诲姟瀹屾垚寰呭懡 - /// </summary> - [Description("浠诲姟瀹屾垚寰呭懡")] - WorkCompleted = 9 - } -} 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/ConveyorLineEmptyBack_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/ConveyorLineEmptyBack_CP.cs" deleted file mode 100644 index 604b772..0000000 --- "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/ConveyorLineEmptyBack_CP.cs" +++ /dev/null @@ -1,119 +0,0 @@ -锘縰sing Microsoft.AspNetCore.Components.Routing; -using Newtonsoft.Json; -using Quartz; -using SqlSugar.Extensions; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using WIDESEAWCS_Common; -using WIDESEAWCS_Common.TaskEnum; -using WIDESEAWCS_IBasicInfoRepository; -using WIDESEAWCS_ITaskInfoRepository; -using WIDESEAWCS_ITaskInfoService; -using WIDESEAWCS_Model.Models; -using WIDESEAWCS_QuartzJob; -using WIDESEAWCS_QuartzJob.DTO; -using WIDESEAWCS_QuartzJob.Models; -using WIDESEAWCS_QuartzJob.Repository; -using WIDESEAWCS_QuartzJob.Service; -using WIDESEAWCS_Tasks.ConveyorLineJob; -using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; - -namespace WIDESEAWCS_Tasks -{ - [DisallowConcurrentExecution] - public class ConveyorLineEmptyBack_CP : JobBase, IJob - { - private readonly ICacheService _cacheService; - private readonly ITaskService _taskService; - private readonly ITaskExecuteDetailService _taskExecuteDetailService; - private readonly ITaskRepository _taskRepository; - private readonly IStationMangerRepository _stationMangerRepository; - private readonly IRouterRepository _routerRepository; - private readonly IRouterService _routerService; - private readonly IRouterExtension _routerExtension; - private readonly List<Dt_WarehouseDevice> warehouseDevices; - - public ConveyorLineEmptyBack_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) - { - _cacheService = cacheService; - _taskService = taskService; - _taskExecuteDetailService = taskExecuteDetailService; - _taskRepository = taskRepository; - _stationMangerRepository = stationMangerRepository; - _routerRepository = routerRepository; - _routerService = routerService; - _routerExtension = routerExtension; - - string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); - if (!string.IsNullOrEmpty(warehouseDevicesStr)) - { - warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); - } - else - { - warehouseDevices = new List<Dt_WarehouseDevice>(); - } - } - - public Task Execute(IJobExecutionContext context) - { - bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); - if (flag && value != null) - { - OtherDevice device = (OtherDevice)value; - Dt_WarehouseDevice? warehouseDevice = warehouseDevices.FirstOrDefault(x => x.DeviceCode == device.DeviceCode); - if (warehouseDevice == null) - { - WriteError(device.DeviceName, $"璇烽厤缃粨搴撹澶囦俊鎭�"); - return Task.CompletedTask; - } - List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); - Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt()); - if (dt_StationManger != null) - { - List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).OrderBy(x=>x.Id).ToList(); - for (int i = 0; i < ProductBackStations.Count(); i++) - { - short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode); - Dt_StationManger stationManger = ProductBackStations[i]; - string startDb = "DB29."; - short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString()); - short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString()); - bool endStatus = true; - if ((i != 2 && i != 5 && i != 8)) - { - endStatus = (stationEndStatus == 1); - } - //璇诲彇绾夸綋娈电姸鎬� - if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied == 0 && endStatus) - { - device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode); - device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode); - //鍚姩鎸囦护 - device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode); - stationManger.IsOccupied = 1; - _stationMangerRepository.UpdateData(stationManger); - Thread.Sleep(2000); - return Task.CompletedTask; - } - else if (stationManger.IsOccupied == 1 && (stationCurrentStatus == 3)) - { - stationManger.IsOccupied = 0; - _stationMangerRepository.UpdateData(stationManger); - } - } - } - - } - return Task.CompletedTask; - } - } -} 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_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/ConveyorLineJob_CP.cs" deleted file mode 100644 index 3da2ad1..0000000 --- "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_CP.cs" +++ /dev/null @@ -1,207 +0,0 @@ -锘縰sing Microsoft.AspNetCore.Components.Routing; -using Newtonsoft.Json; -using Quartz; -using SqlSugar.Extensions; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using WIDESEAWCS_Common; -using WIDESEAWCS_Common.TaskEnum; -using WIDESEAWCS_Communicator; -using WIDESEAWCS_IBasicInfoRepository; -using WIDESEAWCS_ITaskInfoRepository; -using WIDESEAWCS_ITaskInfoService; -using WIDESEAWCS_Model.Models; -using WIDESEAWCS_QuartzJob; -using WIDESEAWCS_QuartzJob.DTO; -using WIDESEAWCS_QuartzJob.Models; -using WIDESEAWCS_QuartzJob.Repository; -using WIDESEAWCS_QuartzJob.Service; -using WIDESEAWCS_Tasks.ConveyorLineJob; -using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; - -namespace WIDESEAWCS_Tasks -{ - [DisallowConcurrentExecution] - public class ConveyorLineJob_CP : JobBase, IJob - { - private readonly ICacheService _cacheService; - private readonly ITaskService _taskService; - private readonly ITaskExecuteDetailService _taskExecuteDetailService; - private readonly ITaskRepository _taskRepository; - private readonly IStationMangerRepository _stationMangerRepository; - private readonly IRouterRepository _routerRepository; - private readonly IRouterService _routerService; - private readonly IRouterExtension _routerExtension; - private readonly List<Dt_WarehouseDevice> warehouseDevices; - - public ConveyorLineJob_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) - { - _cacheService = cacheService; - _taskService = taskService; - _taskExecuteDetailService = taskExecuteDetailService; - _taskRepository = taskRepository; - _stationMangerRepository = stationMangerRepository; - _routerRepository = routerRepository; - _routerService = routerService; - _routerExtension = routerExtension; - - string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); - if (!string.IsNullOrEmpty(warehouseDevicesStr)) - { - warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); - } - else - { - warehouseDevices = new List<Dt_WarehouseDevice>(); - } - } - - public Task Execute(IJobExecutionContext context) - { - bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); - if (flag && value != null) - { - OtherDevice device = (OtherDevice)value; - Dt_WarehouseDevice? warehouseDevice = warehouseDevices.FirstOrDefault(x => x.DeviceCode == device.DeviceCode); - if (warehouseDevice == null) - { - WriteError(device.DeviceName, $"璇烽厤缃粨搴撹澶囦俊鎭�"); - return Task.CompletedTask; - } - List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList(); - List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); - foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) - { - DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - if (item.StationType==StationTypeEnum.StationType_OnlyInbound.ObjToInt() && deviceProWrite!=null) - { - Dt_Task task = _taskRepository.QueryFirst(x => x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt()) && x.DeviceCode == device.DeviceCode); - if (task!=null) - { - //鑾峰彇绔欏彴 - Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode); - if (stationManger == null) - { - WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - //鏌ヨ璺敱 - Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == task.CurrentAddress); - if (router == null) - { - WriteError(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); - //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) - //{ - // WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - // continue; - //} - device.SetValue(W_ConveyorLineCPDB.StartPos, router.StartPosi, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.EndPos, router.NextPosi, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.Barcode, task.PalletCode, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.TaskNum, task.TaskNum, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.WorkType, task.PalletType, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, item.StationCode); - device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, item.StationCode); - //鍚姩鎸囦护 - device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, item.StationCode); - _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing, nextAddress: router.NextPosi, targetAddress: router.NextPosi); - if (task.TaskType==TaskTypeEnum.EmptyProductBack.ObjToInt()) - { - _taskService.TaskCompleted(task.TaskNum); - } - } - } - else if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null) - { - R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); - if (conveyorLineInfoRead != null && conveyorLineInfoRead.EndPos.ToString() == item.StationCode) - { - short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, item.StationCode); - if (conveyorLineInfoRead.ConveyArrivaled == 1 && isCanTake == 1) - { - //鑾峰彇浠诲姟 - Dt_Task task = _taskRepository.QueryFirst(x => x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt()) && x.DeviceCode == device.DeviceCode && x.TaskNum == conveyorLineInfoRead.TaskNum.ObjToInt()); - //鑾峰彇绔欏彴 - if (task != null) - { - Dt_StationManger? stationManger = stationMangers.FirstOrDefault(x => x.StationCode == item.StationCode); - if (stationManger == null) - { - WriteError(item.StationName, $"鏈壘鍒板搴旂珯鍙颁俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - //鏌ヨ璺敱 - Dt_Router router = _routerRepository.QueryFirst(x => x.InOutType == task.TaskType && x.StartPosi == task.NextAddress); - if (router == null) - { - WriteError(item.StationName, $"鏈壘鍒拌矾鐢遍厤缃俊鎭�,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, stationManger.StackerCraneCode); - if (string.IsNullOrEmpty(locationCode)) - { - WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); - continue; - } - _taskService.UpdateTask(task, TaskStatusEnum.AGV_Execute, deviceCode: router.ChildPosiDeviceCode, currentAddress: router.StartPosi, nextAddress: locationCode, targetAddress: locationCode); - } - } - - } - - } - } - //Dt_StationManger? dt_StationManger = stationMangers.FirstOrDefault(x => x.StationType == StationTypeEnum.StationType_ProductBackTake.ObjToInt()); - //if (dt_StationManger != null) - //{ - // DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == dt_StationManger.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); - // List<Dt_StationManger> ProductBackStations = stationMangers.Where(x => x.StationType == StationTypeEnum.StationType_ProductBack.ObjToInt()).ToList(); - // for (int i = 0; i < ProductBackStations.Count(); i++) - // { - // short isCanTake = device.GetValue<GroundStationDBName, short>(GroundStationDBName.R_IsCanTake, dt_StationManger.StationCode); - // Dt_StationManger stationManger = ProductBackStations[i]; - // string startDb = "DB29."; - // short stationCurrentStatus = device.Communicator.Read<short>(startDb + stationManger.Remark.ToString()); - // short stationEndStatus = device.Communicator.Read<short>(startDb + (stationManger.Remark.ObjToInt() + 2).ToString()); - // bool endStatus = true; - // if ((i != 2 && i != 5 && i != 8)) - // { - // endStatus = (stationEndStatus == 1); - // } - // //璇诲彇绾夸綋娈电姸鎬� - // if (isCanTake == 1 && stationCurrentStatus == 1 && stationManger.IsOccupied==0 && endStatus) - // { - // device.SetValue(W_ConveyorLineCPDB.StartPos, dt_StationManger.StationCode, dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.EndPos, stationManger.AGVStationCode, dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.Barcode, "C00001", dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.TaskNum, DateTime.Now.ToString("yyMMddHHmmss"), dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.WorkType, 1, dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.WorkMode, 1, dt_StationManger.StationCode); - // device.SetValue(W_ConveyorLineCPDB.CheckPos, 1, dt_StationManger.StationCode); - // //鍚姩鎸囦护 - // device.SetValue(W_ConveyorLineCPDB.ConveyArrival, 1, dt_StationManger.StationCode); - // stationManger.IsOccupied = 1; - // _stationMangerRepository.UpdateData(stationManger); - // Thread.Sleep(2000); - // return Task.CompletedTask; - // } - // else if(stationManger.IsOccupied == 1 && (stationCurrentStatus == 3)) - // { - // stationManger.IsOccupied = 0; - // _stationMangerRepository.UpdateData(stationManger); - // } - // } - //} - - } - return Task.CompletedTask; - } - } -} 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_CPA.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_CPA.cs" new file mode 100644 index 0000000..a541310 --- /dev/null +++ "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_CPA.cs" @@ -0,0 +1,109 @@ +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Newtonsoft.Json; +using Quartz; +using SqlSugar.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class ConveyorLineJob_CPA : JobBase, IJob + { + private readonly ICacheService _cacheService; + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + private readonly IRouterRepository _routerRepository; + private readonly IRouterService _routerService; + private readonly IRouterExtension _routerExtension; + private readonly List<Dt_WarehouseDevice> warehouseDevices; + + public ConveyorLineJob_CPA(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) + { + _cacheService = cacheService; + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + _routerRepository = routerRepository; + _routerService = routerService; + _routerExtension = routerExtension; + + string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); + if (!string.IsNullOrEmpty(warehouseDevicesStr)) + { + warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); + } + else + { + warehouseDevices = new List<Dt_WarehouseDevice>(); + } + } + + public Task Execute(IJobExecutionContext context) + { + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList(); + List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); + foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) + { + DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + if (deviceProRead != null) + { + R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); + if (conveyorLineInfoRead.Command == 2 && conveyorLineInfoRead.TaskNo > 0) + { + Dt_Task task = _taskRepository.QueryFirst(x => x.TaskNum == conveyorLineInfoRead.TaskNo && x.NextAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); + if (task != null) + { + //鍒嗛厤璐т綅 + string local = "SC01_CP-001-064-001-01"; + task.CurrentAddress = item.StackerCraneStationCode; + task.TargetAddress= local; + task.NextAddress = local; + task.DeviceCode = item.StackerCraneCode; + _taskService.UpdateTask(task, TaskStatusEnum.SC_Execute); + WriteError(item.StationName, $"浠诲姟鍙�:{task.TaskNum}杩涜鍫嗗灈鏈哄叆搴�"); + //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); + //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) + //{ + // WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + // continue; + //} + + } + } + } + else + { + WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�"); + } + } + } + return Task.CompletedTask; + } + } +} 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_CPB.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_CPB.cs" new file mode 100644 index 0000000..91ec5eb --- /dev/null +++ "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_CPB.cs" @@ -0,0 +1,127 @@ +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Newtonsoft.Json; +using Quartz; +using SqlSugar.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_Core; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class ConveyorLineJob_CPB : JobBase, IJob + { + private readonly ICacheService _cacheService; + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + private readonly IRouterRepository _routerRepository; + private readonly IRouterService _routerService; + private readonly IRouterExtension _routerExtension; + private readonly List<Dt_WarehouseDevice> warehouseDevices; + + public ConveyorLineJob_CPB(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) + { + _cacheService = cacheService; + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + _routerRepository = routerRepository; + _routerService = routerService; + _routerExtension = routerExtension; + + string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); + if (!string.IsNullOrEmpty(warehouseDevicesStr)) + { + warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); + } + else + { + warehouseDevices = new List<Dt_WarehouseDevice>(); + } + } + + public Task Execute(IJobExecutionContext context) + { + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList(); + List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); + foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) + { + DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + if (deviceProRead != null && deviceProWrite!=null) + { + R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); + if (conveyorLineInfoRead.Command == 6 && conveyorLineInfoRead.TaskNo>0 && !string.IsNullOrEmpty(conveyorLineInfoRead.PalletCode)) + { + Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum== conveyorLineInfoRead.TaskNo && x.CurrentAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.Line_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode); + if (task != null) + { + //鍒嗛厤宸烽亾 瀛樺叆鎵樼洏鏁版嵁 + + List<Dt_Router> routers = _routerService.QueryNextRoutes(item.StationCode, "SC01_CP", task.TaskType); + 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(W_ConveyorLineCPDB.TargetAddress, router.NextPosi, item.StationCode); + device.SetValue(W_ConveyorLineCPDB.TaskNo, task.TaskNum, item.StationCode); + device.SetValue(W_ConveyorLineCPDB.Command, 1, item.StationCode); + task.NextAddress=router.NextPosi; + task.PalletType = 1; + task.PalletCode = conveyorLineInfoRead.PalletCode; + task.Roadway = "SC01_CP"; + task.DeviceCode = router.ChildPosiDeviceCode; + _taskService.UpdateTask(task, TaskStatusEnum.Line_Executing); + WriteError(item.StationName, $"浠诲姟鍙穥conveyorLineInfoRead.TaskNo}涓嬩竴姝�"); + //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); + //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) + //{ + // WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + // continue; + //} + + } + } + } + else + { + WriteError(item.StationName, $"鏈壘鍒拌澶囧瓙缂栧彿{item.StationCode}鐨勫崗璁俊鎭�"); + } + } + } + return Task.CompletedTask; + } + } +} 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_CPC.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_CPC.cs" new file mode 100644 index 0000000..68b33fc --- /dev/null +++ "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_CPC.cs" @@ -0,0 +1,108 @@ +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Newtonsoft.Json; +using Quartz; +using SqlSugar.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_Core; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class ConveyorLineJob_CPC : JobBase, IJob + { + private readonly ICacheService _cacheService; + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + private readonly IRouterRepository _routerRepository; + private readonly IRouterService _routerService; + private readonly IRouterExtension _routerExtension; + private readonly List<Dt_WarehouseDevice> warehouseDevices; + + public ConveyorLineJob_CPC(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) + { + _cacheService = cacheService; + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + _routerRepository = routerRepository; + _routerService = routerService; + _routerExtension = routerExtension; + + string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); + if (!string.IsNullOrEmpty(warehouseDevicesStr)) + { + warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); + } + else + { + warehouseDevices = new List<Dt_WarehouseDevice>(); + } + } + + public Task Execute(IJobExecutionContext context) + { + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).Distinct().ToList(); + List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); + foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) + { + DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + if (item.StationType == StationTypeEnum.StationType_InStartAndOutEnd.ObjToInt() && deviceProRead != null) + { + R_ConveyorLineCPInfo conveyorLineInfoRead = device.Communicator.ReadCustomer<R_ConveyorLineCPInfo>(deviceProRead.DeviceProAddress); + if (conveyorLineInfoRead.StatusPV == 3 && conveyorLineInfoRead.Command == 11) + { + Dt_Task task = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() || x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() || x.TaskState == TaskStatusEnum.New.ObjToInt())); + if (task == null) + { + //鑾峰彇绔欏彴 + WebResponseContent content = _taskService.RequestWMSTaskSimple("", item.StationCode); + //string? locationCode = _taskService.RequestAssignLocation(task.TaskNum, "AGV_CP"); + //if (string.IsNullOrEmpty(locationCode) && task.TaskType != TaskTypeEnum.EmptyProductBack.ObjToInt()) + //{ + // WriteError(item.StationName, $"璇锋眰鍒嗛厤璐т綅杩斿洖淇℃伅閿欒,璁惧缂栧彿:{item.StationCode},浠诲姟鍙�:{task.TaskNum}"); + // continue; + //} + if (content.Status) + { + Dt_Task taskNew = _taskRepository.QueryFirst(x => x.SourceAddress == item.StationCode && _taskService.TaskInboundTypes.Contains(x.TaskType) && (x.TaskState == TaskStatusEnum.New.ObjToInt())); + if (taskNew != null) + { + _taskService.UpdateTask(taskNew, TaskStatusEnum.RGV_Execute); + } + } + } + } + } + + } + } + return Task.CompletedTask; + } + } +} 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" new file mode 100644 index 0000000..1328a57 --- /dev/null +++ "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" @@ -0,0 +1,79 @@ +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Newtonsoft.Json; +using Quartz; +using SqlSugar.Extensions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Communicator; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; +using ICacheService = WIDESEAWCS_Core.Caches.ICacheService; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class ConveyorLineJob_CPD : JobBase, IJob + { + private readonly ICacheService _cacheService; + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + private readonly IRouterRepository _routerRepository; + private readonly IRouterService _routerService; + private readonly IRouterExtension _routerExtension; + private readonly List<Dt_WarehouseDevice> warehouseDevices; + + public ConveyorLineJob_CPD(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) + { + _cacheService = cacheService; + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + _routerRepository = routerRepository; + _routerService = routerService; + _routerExtension = routerExtension; + + string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); + if (!string.IsNullOrEmpty(warehouseDevicesStr)) + { + warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); + } + else + { + warehouseDevices = new List<Dt_WarehouseDevice>(); + } + } + + public Task Execute(IJobExecutionContext context) + { + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + List<string> deviceStations = device.DeviceProDTOs.Select(x => x.DeviceChildCode).ToList(); + List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode); + foreach (var item in stationMangers.Where(x => deviceStations.Contains(x.StationCode))) + { + DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(R_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == item.StationCode && x.DeviceProParamType == nameof(W_ConveyorLineCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + } + } + return Task.CompletedTask; + } + } +} 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/RGVJob_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/RGVJob_CP.cs" new file mode 100644 index 0000000..64903f2 --- /dev/null +++ "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/RGVJob_CP.cs" @@ -0,0 +1,129 @@ +锘縰sing Microsoft.AspNetCore.Components.Routing; +using Microsoft.IdentityModel.Tokens; +using Newtonsoft.Json; +using Quartz; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WIDESEAWCS_Common; +using WIDESEAWCS_Common.Helper; +using WIDESEAWCS_Common.TaskEnum; +using WIDESEAWCS_Core; +using WIDESEAWCS_Core.Caches; +using WIDESEAWCS_Core.Helper; +using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; +using WIDESEAWCS_Model.Models; +using WIDESEAWCS_QuartzJob; +using WIDESEAWCS_QuartzJob.DTO; +using WIDESEAWCS_QuartzJob.Models; +using WIDESEAWCS_QuartzJob.Repository; +using WIDESEAWCS_QuartzJob.Service; +using WIDESEAWCS_Tasks.ConveyorLineJob; + +namespace WIDESEAWCS_Tasks +{ + [DisallowConcurrentExecution] + public class RGVJob_CP : JobBase, IJob + { + private readonly ICacheService _cacheService; + private readonly ITaskService _taskService; + private readonly ITaskExecuteDetailService _taskExecuteDetailService; + private readonly ITaskRepository _taskRepository; + private readonly IStationMangerRepository _stationMangerRepository; + private readonly IRouterRepository _routerRepository; + private readonly IRouterService _routerService; + private readonly IRouterExtension _routerExtension; + private readonly List<Dt_WarehouseDevice> warehouseDevices; + + public RGVJob_CP(ICacheService cacheService, ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IStationMangerRepository stationMangerRepository, IRouterRepository routerRepository, IRouterService routerService, IRouterExtension routerExtension) + { + _cacheService = cacheService; + _taskService = taskService; + _taskExecuteDetailService = taskExecuteDetailService; + _taskRepository = taskRepository; + _stationMangerRepository = stationMangerRepository; + _routerRepository = routerRepository; + _routerService = routerService; + _routerExtension = routerExtension; + + string? warehouseDevicesStr = _cacheService.Get<string>(nameof(Dt_WarehouseDevice)); + if (!string.IsNullOrEmpty(warehouseDevicesStr)) + { + warehouseDevices = JsonConvert.DeserializeObject<List<Dt_WarehouseDevice>>(warehouseDevicesStr) ?? new List<Dt_WarehouseDevice>(); + } + else + { + warehouseDevices = new List<Dt_WarehouseDevice>(); + } + } + + public Task Execute(IJobExecutionContext context) + { + bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value); + if (flag && value != null) + { + OtherDevice device = (OtherDevice)value; + + DeviceProDTO? deviceProRead = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(R_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + + DeviceProDTO? deviceProWrite = device.DeviceProDTOs.Where(x => x.DeviceChildCode == device.DeviceCode && x.DeviceProParamType == nameof(W_RgvCPDB)).OrderBy(x => x.DeviceProOffset).FirstOrDefault(); + Console.WriteLine(DateTime.Now.ToString("yyyy-mm-ddd HH:mm:ss")); + if (deviceProRead != null && deviceProWrite != null) + { + R_RGVCPInfo rgvInfoRead = device.Communicator.ReadCustomer<R_RGVCPInfo>(deviceProRead.DeviceProAddress); + if (rgvInfoRead.Mode==4 && rgvInfoRead.State == 0 && rgvInfoRead.TaskDone==1) + { + //鑾峰彇浠诲姟 + Dt_Task task = _taskRepository.QueryFirst(x => _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Execute.ObjToInt() && x.DeviceCode==device.DeviceCode); + if (task != null) + { + device.SetValue(W_RgvCPDB.WcsTask, task.TaskNum); + device.SetValue(W_RgvCPDB.TaskType, 4); + device.SetValue(W_RgvCPDB.WorkStation, 1); + device.SetValue(W_RgvCPDB.Qu1, task.CurrentAddress); + device.SetValue(W_RgvCPDB.Fang1, task.NextAddress); + device.SetValue(W_RgvCPDB.TaskReceivedDone, 1); + Thread.Sleep(1000); + //澶嶄綅淇″彿 + device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); + _taskService.UpdateTask(task, TaskStatusEnum.RGV_Executing); + } + } + else if(rgvInfoRead.Mode == 4 && rgvInfoRead.State == 1 && rgvInfoRead.TaskDone == 3) + { + //鑾峰彇浠诲姟 + Dt_Task task = _taskRepository.QueryFirst(x =>x.TaskNum==rgvInfoRead.RgvEndTask && _taskService.TaskInboundTypes.Contains(x.TaskType) && x.TaskState == TaskStatusEnum.RGV_Executing.ObjToInt() && x.DeviceCode == device.DeviceCode); + if (task != null) + { + //鑾峰彇涓嬩竴涓妭鐐圭殑璺敱 + Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == task.NextAddress); + task.CurrentAddress = task.NextAddress; + task.NextAddress = ""; + task.DeviceCode = stationManger.StationDeviceCode; + device.SetValue(W_RgvCPDB.TaskReceivedDone, 2); + Thread.Sleep(1000); + //澶嶄綅淇″彿 + device.SetValue(W_RgvCPDB.TaskReceivedDone, 0); + _taskService.UpdateTask(task, TaskStatusEnum.Line_Execute); + WriteError(device.DeviceName, $"RGV浠诲姟瀹屾垚,浠诲姟鍙穥rgvInfoRead.RgvEndTask}"); + } + else + { + WriteError(device.DeviceName, $"鏈壘鍒癛GV瀵瑰簲鐨勭粨鏉熶换鍔rgvInfoRead.RgvEndTask}"); + } + } + } + else + { + WriteError(device.DeviceName, $"鏈壘鍒拌澶囧瓙缂栧彿{device.DeviceCode}鐨勫崗璁俊鎭�"); + } + } + + return Task.CompletedTask; + } + } +} 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_CP1.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" similarity index 96% rename from "\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_CP1.cs" rename to "\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 73edfba..067c53d 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_CP1.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" @@ -26,7 +26,7 @@ namespace WIDESEAWCS_Tasks { [DisallowConcurrentExecution] - public class StackerCraneJob_CP1 : JobBase, IJob + public class StackerCraneJob_CP : JobBase, IJob { private readonly ITaskService _taskService; private readonly ITaskExecuteDetailService _taskExecuteDetailService; @@ -34,7 +34,7 @@ private readonly IRouterService _routerService; private readonly IStationMangerRepository _stationMangerRepository; - public StackerCraneJob_CP1(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) + public StackerCraneJob_CP(ITaskService taskService, ITaskExecuteDetailService taskExecuteDetailService, ITaskRepository taskRepository, IRouterService routerService, IStationMangerRepository stationMangerRepository) { _taskService = taskService; _taskExecuteDetailService = taskExecuteDetailService; @@ -81,7 +81,7 @@ } catch (Exception ex) { - WriteError(nameof(StackerCraneJob_CP1), ex.Message, ex); + WriteError(nameof(StackerCraneJob_CP), ex.Message, ex); } return Task.CompletedTask; } @@ -228,7 +228,7 @@ if (device != null) { OtherDevice client = (OtherDevice)device; - if (!client.GetValue<R_ConveyorLineDB, bool>(R_ConveyorLineDB.Goods, stationManger.StationCode))//鍑哄簱绔欏彴鏈鍗犵敤 + if (client.GetValue<R_ConveyorLineCPDB, short>(R_ConveyorLineCPDB.Command, stationManger.StationCode)==3)//鍑哄簱绔欏彴鏈鍗犵敤 { task.NextAddress = stationManger.StackerCraneStationCode; _taskRepository.UpdateData(task); -- Gitblit v1.9.3