From 0187d7d752ee493b3691432a24cf97ededda2530 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 24 三月 2026 08:48:40 +0800
Subject: [PATCH] 辊分下空筒、涂布上空筒,涂布缓存架存放空筒
---
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_TBSB_DownTask.cs | 294 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 180 insertions(+), 114 deletions(-)
diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_TBSB_DownTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_TBSB_DownTask.cs
index 7349025..cb624a6 100644
--- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_TBSB_DownTask.cs
+++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_TBSB_DownTask.cs
@@ -3,6 +3,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading;
+using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.LoctionEnum;
using WIDESEA_Common.Tools;
@@ -27,139 +28,204 @@
{
if (Interlocked.Exchange(ref _readFTBSignalsoZ_Down, 1) == 0)
{
-
- try
+ Task.Run(() =>
{
- VOLContext Context = new VOLContext();
- Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
- Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
- Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
- List<string> TBSBS = new List<string> { "娑傚竷鏈鸿礋鏋�1", "娑傚竷鏈鸿礋鏋�2", "娑傚竷鏈鸿礋鏋�3", "娑傚竷鏈鸿礋鏋�4" };
-
- //寰幆澶勭悊娑傚竷璁惧涓嬫枡璇锋眰
- foreach (var TBSB in TBSBS)
+ try
{
- if (WCSService.Clients == null)
- {
- return;
- }
- PLCClient plc = WCSService.Clients.Find(v => v.PLCName == TBSB);
- if (plc == null)
- {
- continue;
- }
- string SB_Up_Location = "FJXL-TBSB" + TBSB.Replace("娑傚竷鏈鸿礋鏋�", "");//鎷兼帴娑傚竷涓嬫枡鍙�
- //鏌ョ湅褰撳墠娑傚竷鏈鸿澶囨槸鍚︽湁AGV浠诲姟
- var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == SB_Up_Location);
- //鏈夌粨鏉熸湰娆″惊鐜�
- if (SBtask != null) { continue; }
- //褰撳墠璁惧鏈夋病鏈変笂鏂欒姹�
- bool GYR_RFX = plc.OmronPLCClient.OmronFinsNetClient.ReadBool("D11293.00").Content;
- //Convert.ToBoolean(plc.ReadValue("R_Feedingrequest".ToString(), SB_Up_Location));
- if (GYR_RFX)
- {
+ VOLContext Context = new VOLContext();
+ Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context);
+ Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context);
+ Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
+ List<string> TBSBS = new List<string> { "娑傚竷鏈鸿礋鏋�1", "娑傚竷鏈鸿礋鏋�2", "娑傚竷鏈鸿礋鏋�3", "娑傚竷鏈鸿礋鏋�4" };
- //鎵惧埌璺敱瑙勫垯(浠ヨ澶囦负璧风偣鐨勮矾鐢辫鍒�)
- List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == SB_Up_Location);
- base_ware_location location_TB = new base_ware_location();
-
- if (Routing_Table.Count > 0)
+ //寰幆澶勭悊娑傚竷璁惧涓嬫枡璇锋眰
+ foreach (var TBSB in TBSBS)
+ {
+ if (WCSService.Clients == null)
{
- foreach (var item in Routing_Table)
+ return;
+ }
+ PLCClient plc = WCSService.Clients.Find(v => v.PLCName == TBSB);
+ if (plc == null)
+ {
+ continue;
+ }
+ string SB_Up_Location = "FJXL-TBSB" + TBSB.Replace("娑傚竷鏈鸿礋鏋�", "");//鎷兼帴娑傚竷涓嬫枡鍙�
+ //褰撳墠璁惧鏈夋病鏈変笂鏂欒姹�
+ bool GYR_RFX = plc.OmronPLCClient.OmronFinsNetClient.ReadBool("D11293.00").Content;
+ Int16 R_Type = plc.OmronPLCClient.OmronFinsNetClient.ReadInt16("D11224").Content;
+ //Convert.ToBoolean(plc.ReadValue("R_Feedingrequest".ToString(), SB_Up_Location));
+ if (GYR_RFX && R_Type == Convert.ToInt16(1))
+ {
+ var SBtask = agvRepository.FindFirst(f => f.agv_toaddress == SB_Up_Location);
+ //鏈夌粨鏉熸湰娆″惊鐜�
+ if (SBtask != null) { continue; }
+ #region 璁板綍涓婄┖绛掕姹備俊鍙�
+ WriteLog.GetLog().Write($"{plc.PLCName}涓婄┖绛掕姹傦細{GYR_RFX}锛寋R_Type}---{DateTime.Now}", $"璐熸瀬娑傚竷涓婄┖绛掕姹�");
+ #endregion
+ //鎵惧埌璺敱瑙勫垯(浠ヨ澶囦负璧风偣鐨勮矾鐢辫鍒�)
+ List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == SB_Up_Location);
+ List<string> ends = Routing_Table.Select(x => x.route_end).ToList();
+ if (Routing_Table.Count > 0)
{
- //鎵惧厛鎵炬秱甯冨尯鍩熺紦瀛樻灦
- location_TB = locRepository.FindFirst(t => t.upper_code == item.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.area == "FJ-TBHCJ" && t.status == 1 && t.task == 2);
+ //鍙敤绌虹瓛缂撳瓨鏋�
+ base_ware_location location_TB = locRepository.Find(t => ends.Contains(t.upper_code) && t.location_state == LoctionStateEnum.LocationState_Stored.ToString() && t.tpgd == 1 && t.area == "FJ-TBHCJ" && t.status == 1 && t.task == 2 && t.geartype == "C").OrderBy(d => d.update_time).FirstOrDefault();
if (location_TB != null)
{
- // location = location_TB.FirstOrDefault();//濡傛灉鎵惧埌锛岃祴鍊煎悗閫�鍑哄惊鐜�
- break;
- }
- }
- //浠ヤ笂寰幆鏈壘鍒板悎閫傝揣浣嶏紝鍐嶆壘绠旀潗搴撲笁鍙蜂綅缂撳瓨鏋�
- if (location_TB == null)
- {
- //瀹氫綅閾傛潗搴撹矾鐢憋紝鎵惧埌閾傛潗搴撹揣浣嶅彿
- string Loc_BCK = Routing_Table.FirstOrDefault(t => t.route_end.Contains("FJ-BCHCJ")).route_end.ToString();
- if (Loc_BCK != null)
- {
- //鏍规嵁鏍规嵁璐т綅鍙锋壘鍒伴搨鏉愬簱浣嶇疆骞剁‘璁ゆ槸鍚︽湁鏂�
- location_TB = locRepository.FindFirst(t => t.upper_code == Loc_BCK && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.status == 1 && t.task == 2);
- if (location_TB == null)
+ WebResponseContent content = new WebResponseContent();
+ locRepository.DbContextBeginTransaction(() =>
{
+ //鐢熸垚娑傚竷鏈轰笅鏂欎换鍔�
+ dt_agvtask agvtask = new dt_agvtask()
+ {
+ agv_id = Guid.NewGuid(),
+ agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+ agv_fromaddress = location_TB.upper_code,//浠ヨ澶囨湭璧风偣
+ agv_toaddress = SB_Up_Location,
+ agv_code = "璐熸瀬AGV璋冨害",
+ agv_remark = "娑傚竷涓婄┖绛掍换鍔�",
+ agv_taskstate = AGVTaskStateEnum.Create.ToString(),
+ agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
+ agv_worktype = 1,//宸ヤ綔绫诲瀷
+ agv_materielid = "",
+ agv_qty = 1,
+ agv_createtime = DateTime.Now,
+ agv_grade = 0,//浠诲姟浼樺厛绾�
+ agv_userid = "WCS",
+ agv_barcode = "",
+ };
- return;
+ location_TB.update_time = DateTime.Now;
+ location_TB.task = 1;
+ var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+ if (entry != null)
+ {
+ entry.State = EntityState.Detached;
+ }
+ int x = locRepository.Update(location_TB, d => new { d.update_time, d.task }, true);
+ if (x == 1)
+ {
+ agvRepository.Add(agvtask, true);
+ //WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵location_TB.upper_code}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{location_TB.tpgd},鐘舵�侊細{location_TB.location_state},鏇存柊鏃堕棿锛歿location_TB.wireless_time}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�");
+ //WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�");
+ return content.OK();
+ }
+ else
+ {
+ return content.Error();
+ }
+ });
+ }
+
+ }
+ }
+ else if (GYR_RFX)
+ {
+ var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == SB_Up_Location);
+ //鏈夌粨鏉熸湰娆″惊鐜�
+ if (SBtask != null) { continue; }
+ #region 璁板綍涓嬫枡璇锋眰淇″彿
+ WriteLog.GetLog().Write($"{plc.PLCName}涓嬫枡璇锋眰锛歿GYR_RFX}---{DateTime.Now}", $"璐熸瀬娑傚竷涓嬫枡璇锋眰");
+ #endregion
+ //鎵惧埌璺敱瑙勫垯(浠ヨ澶囦负璧风偣鐨勮矾鐢辫鍒�)
+ List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == SB_Up_Location);
+ base_ware_location location_TB = new base_ware_location();
+
+ if (Routing_Table.Count > 0)
+ {
+ foreach (var item in Routing_Table)
+ {
+ //鎵惧厛鎵炬秱甯冨尯鍩熺紦瀛樻灦
+ location_TB = locRepository.FindFirst(t => t.upper_code == item.route_end && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.area == "FJ-TBHCJ" && t.status == 1 && t.task == 2 && t.geartype == "鏆傛棤");
+ if (location_TB != null)
+ {
+ // location = location_TB.FirstOrDefault();//濡傛灉鎵惧埌锛岃祴鍊煎悗閫�鍑哄惊鐜�
+ break;
+ }
+ }
+ //浠ヤ笂寰幆鏈壘鍒板悎閫傝揣浣嶏紝鍐嶆壘绠旀潗搴撲笁鍙蜂綅缂撳瓨鏋�
+ if (location_TB == null)
+ {
+ //瀹氫綅閾傛潗搴撹矾鐢憋紝鎵惧埌閾傛潗搴撹揣浣嶅彿
+ string Loc_BCK = Routing_Table.FirstOrDefault(t => t.route_end.Contains("FJ-BCHCJ")).route_end.ToString();
+ if (Loc_BCK != null)
+ {
+ //鏍规嵁鏍规嵁璐т綅鍙锋壘鍒伴搨鏉愬簱浣嶇疆骞剁‘璁ゆ槸鍚︽湁鏂�
+ location_TB = locRepository.FindFirst(t => t.upper_code == Loc_BCK && t.location_state == LoctionStateEnum.LocationState_Empty.ToString() && t.status == 1 && t.task == 2);
+ if (location_TB == null)
+ {
+
+ return;
+ }
}
}
}
- }
- if (location_TB != null)
- {
-
- WebResponseContent content = new WebResponseContent();
- locRepository.DbContextBeginTransaction(() =>
+ if (location_TB != null)
{
- //鐢熸垚娑傚竷鏈轰笅鏂欎换鍔�
- dt_agvtask agvtask = new dt_agvtask()
- {
- agv_id = Guid.NewGuid(),
- agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
- agv_fromaddress = SB_Up_Location,//浠ヨ澶囨湭璧风偣
- agv_toaddress = location_TB.upper_code,
- agv_code = "璐熸瀬AGV璋冨害",
- agv_remark = "娑傚竷涓嬫枡浠诲姟",
- agv_taskstate = AGVTaskStateEnum.Create.ToString(),
- agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
- agv_worktype = 1,//宸ヤ綔绫诲瀷
- agv_materielid = "",
- agv_qty = 1,
- agv_createtime = DateTime.Now,
- agv_grade = 0,//浠诲姟浼樺厛绾�
- agv_userid = "WCS",
- agv_barcode = "",
- };
-
- location_TB.update_time = DateTime.Now;
- location_TB.task = 1;
- var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
- if (entry != null)
+ WebResponseContent content = new WebResponseContent();
+ locRepository.DbContextBeginTransaction(() =>
{
- entry.State = EntityState.Detached;
- }
- //location_TB.logic_col = 1;
- int x = locRepository.Update(location_TB, d => new { d.task, d.logic_col, d.update_time }, true);
- if (x == 1)
- {
- agvRepository.Add(agvtask, true);
- WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵location_TB.upper_code}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{location_TB.tpgd},鐘舵�侊細{location_TB.location_state},鏇存柊鏃堕棿锛歿location_TB.wireless_time}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�");
- WriteDBLog.Info($"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵TBSB}銆戜笅鏂欎换鍔$敓鎴�");
- return content.OK();
-
- }
- else
- {
- return content.Error();
- }
-
- });
-
+ //鐢熸垚娑傚竷鏈轰笅鏂欎换鍔�
+ dt_agvtask agvtask = new dt_agvtask()
+ {
+ agv_id = Guid.NewGuid(),
+ agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+ agv_fromaddress = SB_Up_Location,//浠ヨ澶囨湭璧风偣
+ agv_toaddress = location_TB.upper_code,
+ agv_code = "璐熸瀬AGV璋冨害",
+ agv_remark = "娑傚竷涓嬫枡浠诲姟",
+ agv_taskstate = AGVTaskStateEnum.Create.ToString(),
+ agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(),
+ agv_worktype = 1,//宸ヤ綔绫诲瀷
+ agv_materielid = "",
+ agv_qty = 1,
+ agv_createtime = DateTime.Now,
+ agv_grade = 0,//浠诲姟浼樺厛绾�
+ agv_userid = "WCS",
+ agv_barcode = "",
+ };
+
+
+ location_TB.update_time = DateTime.Now;
+ location_TB.task = 1;
+ var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+ if (entry != null)
+ {
+ entry.State = EntityState.Detached;
+ }
+ //location_TB.logic_col = 1;
+ int x = locRepository.Update(location_TB, d => new { d.task, d.logic_col, d.update_time }, true);
+ if (x == 1)
+ {
+ agvRepository.Add(agvtask, true);
+ return content.OK();
+
+ }
+ else
+ {
+ return content.Error();
+ }
+
+ });
+
+ }
+
+
}
-
-
}
}
- }
- catch (Exception ex)
- {
+ catch (Exception ex)
+ {
+ WriteLog.GetLog().Write($"璐熸瀬娑傚竷涓嬫枡锛歿DateTime.Now} --------------{ex}", $"璐熸瀬娑傚竷涓嬫枡璋冨害");
+ }
+ finally
+ {
- //////WriteLog.Info($"浠诲姟鐢熸垚").Write($"缁撴潫鏃堕棿锛� {DateTime.Now} 寮傚父淇℃伅锛歿ex.Message} -------------- {Environment.NewLine}", $"浠诲姟鐢熸垚");
- throw;
- }
- finally
- {
-
- Interlocked.Exchange(ref _readFTBSignalsoZ_Down, 0);
- }
+ Interlocked.Exchange(ref _readFTBSignalsoZ_Down, 0);
+ }
+ });
+
}
}
--
Gitblit v1.9.3