From 8f392cc88b0768b74efca3b68785cf5aa1c38e70 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期三, 06 十一月 2024 14:28:20 +0800
Subject: [PATCH] 代码更新
---
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_GFSB_DownTask.cs | 660 +++++++++++++++++++++++++++++------------------------------
1 files changed, 328 insertions(+), 332 deletions(-)
diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_GFSB_DownTask.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_GFSB_DownTask.cs
index ef7208f..a583b9b 100644
--- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_GFSB_DownTask.cs
+++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/Equipment/F_GFSB_DownTask.cs
@@ -5,6 +5,7 @@
using System.Linq;
using System.Reflection;
using System.Threading;
+using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Common.LoctionEnum;
using WIDESEA_Common.Tools;
@@ -29,177 +30,80 @@
if (Interlocked.Exchange(ref _readGFBDOWNSignalsoF, 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);
- Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context);
- List<string> GFSBS = new List<string> { "杈婂垎鏈鸿礋鏋�1", "杈婂垎鏈鸿礋鏋�2", "杈婂垎鏈鸿礋鏋�3", "杈婂垎鏈鸿礋鏋�4" };
- foreach (var GFSB in GFSBS)
+ try
{
- //string SBID = GFSB.Replace("杈婂垎鏈烘鏋�", "");//璁惧鍙�
- PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB);
- if (plc == null)
+ 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);
+ Idt_agvtask_htyRepository agvhtyRepository = new dt_agvtask_htyRepository(Context);
+ List<string> GFSBS = new List<string> { "杈婂垎鏈鸿礋鏋�1", "杈婂垎鏈鸿礋鏋�2", "杈婂垎鏈鸿礋鏋�3", "杈婂垎鏈鸿礋鏋�4" };
+ foreach (var GFSB in GFSBS)
{
- //WriteLog.GetLog("GFF涓嬫枡鍛煎彨").Write($"璁惧锛歿GFSB} 鍐呭锛氭湭杩炴帴PLC 鏃堕棿璁板綍:{DateTime.Now}", "GFF涓嬫枡鍛煎彨");
- continue;
- }
- //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//涓嬫枡鍙d竴涓嬫枡淇″彿
- //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//涓嬫枡鍙d簩涓嬫枡淇″彿
- OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0");
- if (!GYC_RFX1.IsSuccess)
- {
- continue;
- }
- if (GYC_RFX1.Content)
- {
- //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
- var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDescroption && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
- //鏈夌粨鏉熸湰娆″惊鐜�
- if (SBtask != null) { }
- else
+ //string SBID = GFSB.Replace("杈婂垎鏈烘鏋�", "");//璁惧鍙�
+ PLCClient plc = WCSService.Clients.Find(v => v.PLCName == GFSB);
+ if (plc == null)
{
- List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption);
-
- base_ware_location Location = null; //缁戝畾璁惧鐨勮揣鏋�
- foreach (var item in Routing_Table)
+ //WriteLog.GetLog("GFF涓嬫枡鍛煎彨").Write($"璁惧锛歿GFSB} 鍐呭锛氭湭杩炴帴PLC 鏃堕棿璁板綍:{DateTime.Now}", "GFF涓嬫枡鍛煎彨");
+ continue;
+ }
+ //bool GYC_RFX1 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest1".ToString(), plc.PLCDescroption));//涓嬫枡鍙d竴涓嬫枡淇″彿
+ //bool GYC_RFX2 = Convert.ToBoolean(plc.ReadValue("R_Feedingrequest2".ToString(), plc.PLCDownLoc));//涓嬫枡鍙d簩涓嬫枡淇″彿
+ OperateResult<bool> GYC_RFX1 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5693.0");
+ if (!GYC_RFX1.IsSuccess)
+ {
+ continue;
+ }
+ if (GYC_RFX1.Content)
+ {
+ //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
+ var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDescroption && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
+ //鏈夌粨鏉熸湰娆″惊鐜�
+ if (SBtask != null) { }
+ else
{
- //缁戝畾璁惧鐨勮揣鏋�
- base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
- if (ware_Locations != null)
- {
- Location = ware_Locations;
- break;
- }
- }
- if (Location != null)
- {
- if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
- {
- var upper_code = Location.upper_code.Split('-');
- string tasknum = upper_code[0] + "-" + upper_code[1];
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
- if (loctionNUM == null)
- {
- Location.light_color = "鏃�";
- locRepository.Update(Location,d=>d.light_color, true);
- }
+ #region 璁板綍涓嬫枡璇锋眰淇″彿
+ WriteLog.GetLog().Write($"涓嬫枡鍙�1璇锋眰锛歿GYC_RFX1.Content}---{DateTime.Now}", $"{plc.PLCName}涓嬫枡璇锋眰");
+ #endregion
+ List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDescroption);
- }
- else if (Location.gd1 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
+ base_ware_location Location = null; //缁戝畾璁惧鐨勮揣鏋�
+ foreach (var item in Routing_Table)
{
- var a = "";
- var upper_code = Location.upper_code.Split('-');
- if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+ //缁戝畾璁惧鐨勮揣鏋�
+ base_ware_location ware_Locations = locRepository.FindFirst(d => d.upper_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
+ if (ware_Locations != null)
{
- //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-1 闃叉寮傚父鎯呭喌锛圓GV鎵ц涓紓甯革紝鎶婂厜鐢垫尅浜嗘垨鎵嬪姩閫佹枡鍦ㄨ繖涓伐浣嶄笂锛屽鑷村渚т换鍔℃湭瀹屾垚锛屽氨涓嬪彂鍐呬晶浠诲姟锛�
- //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc);
- //if (loctionwc == null)
- //{
- string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
- var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
- if (WCloctionNUM == null)
- {
- string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
- if (loctionNUM == null)
- {
- a = tasknum;
- }
- }
- //}
- }
- if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
- {
- string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
- var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
- if (NCloctionNUM == null)
- {
- string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
- if (loctionNUM == null)
- {
- a = tasknum;
- }
- }
-
-
- }
- if (a != "")
- {
- dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a&&d.agv_taskstate== AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
- if (agvtask_Hty != null)
- {
- bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
- if (interval)
- {
- continue;
- }
- }
- //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
- dt_agvtask agvtask = new dt_agvtask()
- {
- agv_id = Guid.NewGuid(),
- agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
- agv_fromaddress = plc.PLCDescroption,
- agv_toaddress = a,
- 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.update_time = DateTime.Now;
- Location.task = 1;
- Location.logic_col = 0;
- var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
- if (entry != null)
- {
- entry.State = EntityState.Detached;
- }
- int fone= locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
- if (fone==1)
- {
- agvRepository.Add(agvtask, true);
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color},鏇存柊鏃堕棿锛歿Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎竴鍙d换鍔$敓鎴�");
- }
+ Location = ware_Locations;
break;
}
}
-
- }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
- else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
- {
- List<base_ware_location> loctionList = new List<base_ware_location>();
- foreach (var item in Routing_Table)
+ if (Location != null)
{
- base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
- if (ware_Locations == null)
+ if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
{
- continue;
- }
- loctionList.Add(ware_Locations);
- }
+ var upper_code = Location.upper_code.Split('-');
+ string tasknum = upper_code[0] + "-" + upper_code[1];
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
+ if (loctionNUM == null)
+ {
+ Location.light_color = "鏃�";
+ locRepository.Update(Location, d => d.light_color, true);
+ }
- if (loctionList.Count != 0)
- {
- List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
- foreach (var xLocation in Locationlist)
+ }
+ else if (Location.gd1 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
{
var a = "";
- var upper_code = xLocation.upper_code.Split('-');
- if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+ var upper_code = Location.upper_code.Split('-');
+ if (Location.gd1 == 0 && Location.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
{
+ //string tasknumwc = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-1 闃叉寮傚父鎯呭喌锛圓GV鎵ц涓紓甯革紝鎶婂厜鐢垫尅浜嗘垨鎵嬪姩閫佹枡鍦ㄨ繖涓伐浣嶄笂锛屽鑷村渚т换鍔℃湭瀹屾垚锛屽氨涓嬪彂鍐呬晶浠诲姟锛�
+ //var loctionwc = agvRepository.FindFirst(f => f.agv_toaddress == tasknumwc);
+ //if (loctionwc == null)
+ //{
string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
if (WCloctionNUM == null)
@@ -211,9 +115,9 @@
a = tasknum;
}
}
-
+ //}
}
- if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
+ if (Location.gd2 == 1 && Location.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
{
string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
@@ -226,6 +130,7 @@
a = tasknum;
}
}
+
}
if (a != "")
@@ -258,184 +163,180 @@
agv_userid = "WCS",
agv_barcode = "",
};
-
+
//Location.update_time = DateTime.Now;
- xLocation.task = 1;
- xLocation.logic_col = 0;
- xLocation.light_color = plc.PLCName;
+ Location.task = 1;
+ Location.logic_col = 0;
var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
if (entry != null)
{
entry.State = EntityState.Detached;
}
- int fone= locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+ int fone = locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
if (fone == 1)
{
agvRepository.Add(agvtask, true);
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
}
-
break;
}
+ }
+
+ }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
+ else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
+ {
+ List<base_ware_location> loctionList = new List<base_ware_location>();
+ foreach (var item in Routing_Table)
+ {
+ base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
+ if (ware_Locations == null)
+ {
+ continue;
+ }
+ loctionList.Add(ware_Locations);
+ }
+
+ if (loctionList.Count != 0)
+ {
+ List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
+ foreach (var xLocation in Locationlist)
+ {
+ var a = "";
+ var upper_code = xLocation.upper_code.Split('-');
+ if (xLocation.gd1 == 0 && xLocation.gd2 == 0 && a == "")//鍐呬晶澶栦晶閮芥病鏈夋枡浼樺厛鏀惧唴渚�
+ {
+ string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
+ var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
+ if (WCloctionNUM == null)
+ {
+ string tasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+ if (loctionNUM == null)
+ {
+ a = tasknum;
+ }
+ }
+
+ }
+ if (xLocation.gd2 == 1 && xLocation.gd1 == 0 && a == "")//鍐呬晶鏈夋枡鏃舵斁澶栦晶
+ {
+ string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-1";//鍐呬晶 1-1
+ var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
+ if (NCloctionNUM == null)
+ {
+ string tasknum = upper_code[0] + "-" + upper_code[1] + "-2";//澶栦晶 1-2
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+ if (loctionNUM == null)
+ {
+ a = tasknum;
+ }
+ }
+
+ }
+ if (a != "")
+ {
+ dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
+ if (agvtask_Hty != null)
+ {
+ bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
+ if (interval)
+ {
+ continue;
+ }
+ }
+ //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
+ dt_agvtask agvtask = new dt_agvtask()
+ {
+ agv_id = Guid.NewGuid(),
+ agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+ agv_fromaddress = plc.PLCDescroption,
+ agv_toaddress = a,
+ 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.update_time = DateTime.Now;
+ xLocation.task = 1;
+ xLocation.logic_col = 0;
+ xLocation.light_color = plc.PLCName;
+ var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+ if (entry != null)
+ {
+ entry.State = EntityState.Detached;
+ }
+ int fone = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+ if (fone == 1)
+ {
+ agvRepository.Add(agvtask, true);
+ }
+
+ break;
+ }
+
+ }
}
}
-
}
}
- }
- OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0");
- if (!GYC_RFX2.IsSuccess)
- {
- continue;
- }
- if (GYC_RFX2.Content)
- {
- //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
- var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
- //鏈夌粨鏉熸湰娆″惊鐜�
- if (SBtask != null) { }
- else
+ OperateResult<bool> GYC_RFX2 = plc.MelsecPLCClient.MelsecMcNetClient.ReadBool("D5893.0");
+ if (!GYC_RFX2.IsSuccess)
{
- List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc);
-
- base_ware_location Location = null; //鎵剧粦瀹氳澶囩殑璐ф灦
- foreach (var item in Routing_Table)
+ continue;
+ }
+ if (GYC_RFX2.Content)
+ {
+ //鏌ョ湅褰撳墠杈婂垎鏈鸿澶囨槸鍚︽湁AGV浠诲姟
+ var SBtask = agvRepository.FindFirst(f => f.agv_fromaddress == plc.PLCDownLoc && (f.agv_taskstate == AGVTaskStateEnum.Create.ToString() || f.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() || f.agv_taskstate == AGVTaskStateEnum.Executing.ToString() || f.agv_taskstate == AGVTaskStateEnum.Complete.ToString()));
+ //鏈夌粨鏉熸湰娆″惊鐜�
+ if (SBtask != null) { }
+ else
{
- //缁戝畾璁惧鐨勮揣鏋�
- base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
- if (ware_Locations != null)
+ #region 璁板綍涓嬫枡璇锋眰淇″彿
+ WriteLog.GetLog().Write($"涓嬫枡鍙�2璇锋眰锛歿GYC_RFX2.Content}---{DateTime.Now}", $"{plc.PLCName}涓嬫枡璇锋眰");
+ #endregion
+ List<base_routing_table> Routing_Table = routingRepository.Find(d => d.route_began == plc.PLCDownLoc);
+
+ base_ware_location Location = null; //鎵剧粦瀹氳澶囩殑璐ф灦
+ foreach (var item in Routing_Table)
{
- Location = ware_Locations;
- break;
- }
- }
- if (Location != null)
- {
- if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
- {
- var upper_code = Location.upper_code.Split('-');
- string tasknum = upper_code[0] + "-" + upper_code[1];
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
- if (loctionNUM == null)
+ //缁戝畾璁惧鐨勮揣鏋�
+ base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.light_color == plc.PLCName.ToString());
+ if (ware_Locations != null)
{
- Location.light_color = "鏃�";
- locRepository.Update(Location,d=>d.light_color, true);
- }
-
- }
- else if (Location.gd4 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
- {
- var a = "";
- var upper_code = Location.upper_code.Split('-');
-
- if (Location.gd4 == 0 && Location.gd3 == 0 && a == "")
- {
- string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
- var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
- if (WCloctionNUM == null)
- {
- string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
- if (loctionNUM == null)
- {
- a = tasknum;
- }
- }
-
- //}
- }
- if (Location.gd3 == 1 && Location.gd4 == 0 && a == "")
- {
- string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
- var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
- if (NCloctionNUM == null)
- {
- string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
- var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
- if (loctionNUM == null)
- {
- a = tasknum;
- }
- }
-
- }
- if (a != "")
- {
- dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
- if (agvtask_Hty != null)
- {
- bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
- if (interval)
- {
- continue;
- }
- }
- //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
- dt_agvtask agvtask = new dt_agvtask()
- {
- agv_id = Guid.NewGuid(),
- agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
- agv_fromaddress = plc.PLCDownLoc,
- agv_toaddress = a,
- 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.update_time = DateTime.Now;
- Location.task = 1;
- Location.logic_col = 0;
- var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
- if (entry != null)
- {
- entry.State = EntityState.Detached;
- }
- int ftwo= locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
- if (ftwo == 1)
- {
- agvRepository.Add(agvtask, true);
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{Location.tpgd},-1鍏夌數锛歿Location.gd2}锛�-2鍏夌數:{Location.gd1},-3鍏夌數锛歿Location.gd4}锛�-4鍏夌數锛歿Location.gd3},鐘舵�侊細{Location.location_state},璁惧缁戝畾锛歿Location.light_color}锛屾洿鏂版椂闂达細{Location.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
- }
+ Location = ware_Locations;
break;
}
}
- else
+ if (Location != null)
{
- //浠h〃杩欎釜璐ф灦鏃犳硶瑁呬笅鏂�1鍙g殑鏂欎簡锛屼絾鏄笅鏂�2鍙h繕鍙互瑁呮枡鍦ㄨ繖涓揣鏋朵笂锛岃揣鏋朵笉鑳藉彇娑堣澶囩粦瀹�
- }
- }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
- else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
- {
- List<base_ware_location> loctionList = new List<base_ware_location>();
- foreach (var item in Routing_Table)
- {
- base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
- if (ware_Locations == null)
+ if (Location.gd1 == 1 && Location.gd4 == 1)//浠h〃涓嬫枡1,2鍙d笅鐨勬枡鏃犳硶鍦ㄨ繖涓揣鏋惰鏂欎簡锛岃揣鏋跺氨鍙栨秷璁惧缁戝畾
{
- continue;
+ var upper_code = Location.upper_code.Split('-');
+ string tasknum = upper_code[0] + "-" + upper_code[1];
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress.Contains(tasknum));
+ if (loctionNUM == null)
+ {
+ Location.light_color = "鏃�";
+ locRepository.Update(Location, d => d.light_color, true);
+ }
+
}
- loctionList.Add(ware_Locations);
- }
- if (loctionList.Count != 0)
- {
- List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
- foreach (var xLocation in Locationlist)
+ else if (Location.gd4 == 0)//浠h〃杩欎釜璐ф灦杩樿兘缁欎笅鏂�1鍙h鏂�
{
var a = "";
- var upper_code = xLocation.upper_code.Split('-');
- if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "")
+ var upper_code = Location.upper_code.Split('-');
+
+ if (Location.gd4 == 0 && Location.gd3 == 0 && a == "")
{
string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
@@ -451,7 +352,7 @@
//}
}
- if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "")
+ if (Location.gd3 == 1 && Location.gd4 == 0 && a == "")
{
string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
@@ -464,6 +365,7 @@
a = tasknum;
}
}
+
}
if (a != "")
{
@@ -495,52 +397,146 @@
agv_userid = "WCS",
agv_barcode = "",
};
-
+
//Location.update_time = DateTime.Now;
- xLocation.task = 1;
- xLocation.logic_col = 0;
- xLocation.light_color = plc.PLCName;
+ Location.task = 1;
+ Location.logic_col = 0;
var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
if (entry != null)
{
entry.State = EntityState.Detached;
}
- int ftwo = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+ int ftwo = locRepository.Update(Location, d => new { d.task, d.logic_col }, true);
if (ftwo == 1)
{
agvRepository.Add(agvtask, true);
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"鐢熸垚浠诲姟:{agvtask.agv_tasknum},缁堢偣璐т綅銆恵a}銆戠姸鎬侊細鎵樼洏鍏夌數妫�娴嬶細{xLocation.tpgd},-1鍏夌數锛歿xLocation.gd2}锛�-2鍏夌數:{xLocation.gd1},-3鍏夌數锛歿xLocation.gd4}锛�-4鍏夌數锛歿xLocation.gd3},鐘舵�侊細{xLocation.location_state},璁惧缁戝畾锛歿xLocation.light_color}锛屾洿鏂版椂闂达細{xLocation.wireless_time}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
-
- //base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == xLocation.upper_code );
- //if (ware_Locations!=null)
- //{
- // WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�").Write($"璐т綅銆恵ware_Locations.upper_code}銆�:璐т綅浠诲姟鐘舵�侊細{ware_Locations.task}", $"銆恵GFSB}銆戜笅鏂欎换鍔$敓鎴�");
- //}
- WriteDBLog.Info($"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�").Write($"----------------浠诲姟鐢熸垚鎴愬姛 {DateTime.Now} -------------- {Environment.NewLine}", $"銆恵GFSB}銆戜笅鏂欎簩鍙d换鍔$敓鎴�");
}
break;
}
-
}
+ else
+ {
+ //浠h〃杩欎釜璐ф灦鏃犳硶瑁呬笅鏂�1鍙g殑鏂欎簡锛屼絾鏄笅鏂�2鍙h繕鍙互瑁呮枡鍦ㄨ繖涓揣鏋朵笂锛岃揣鏋朵笉鑳藉彇娑堣澶囩粦瀹�
+ }
+ }//浠h〃鏈夎繖涓澶囩粦瀹氱殑璐ф灦
+ else //浠h〃娌℃湁杩欎釜璁惧缁戝畾鐨勮揣鏋讹紝杩涜鎵句竴涓病鏈夎澶囩粦瀹氱殑璐ф灦杩涜缁戝畾锛屾潵缁欒繖鍙拌澶囪鏂�
+ {
+ List<base_ware_location> loctionList = new List<base_ware_location>();
+ foreach (var item in Routing_Table)
+ {
+ base_ware_location ware_Locations = locRepository.FindFirst(d => d.down_code == item.route_end && d.location_state == LoctionStateEnum.LocationState_Stored.ToString() && d.tpgd == 1 && d.status == 1 && d.gd1 == 0 && d.gd2 == 0 && d.gd3 == 0 && d.gd4 == 0 && d.light_color == "鏃�");
+ if (ware_Locations == null)
+ {
+ continue;
+ }
+ loctionList.Add(ware_Locations);
+ }
+ if (loctionList.Count != 0)
+ {
+ List<base_ware_location> Locationlist = loctionList.OrderBy(d => d.update_time).ToList();
+ foreach (var xLocation in Locationlist)
+ {
+ var a = "";
+ var upper_code = xLocation.upper_code.Split('-');
+ if (xLocation.gd4 == 0 && xLocation.gd3 == 0 && a == "")
+ {
+ string WCtasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
+ var WCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == WCtasknum);
+ if (WCloctionNUM == null)
+ {
+ string tasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+ if (loctionNUM == null)
+ {
+ a = tasknum;
+ }
+ }
+
+ //}
+ }
+ if (xLocation.gd3 == 1 && xLocation.gd4 == 0 && a == "")
+ {
+ string NCtasknum = upper_code[0] + "-" + upper_code[1] + "-4";//鍐呬晶
+ var NCloctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == NCtasknum);
+ if (NCloctionNUM == null)
+ {
+ string tasknum = upper_code[0] + "-" + upper_code[1] + "-3";//澶栦晶
+ var loctionNUM = agvRepository.FindFirst(f => f.agv_toaddress == tasknum);
+ if (loctionNUM == null)
+ {
+ a = tasknum;
+ }
+ }
+ }
+ if (a != "")
+ {
+ dt_agvtask_hty agvtask_Hty = agvhtyRepository.Find(d => d.agv_toaddress == a && d.agv_taskstate == AGVTaskStateEnum.TaskState_Finished.ToString()).OrderByDescending(d => d.agv_finishedtime).FirstOrDefault();
+ if (agvtask_Hty != null)
+ {
+ bool interval = (DateTime.Now - agvtask_Hty.agv_finishedtime).Value.TotalSeconds < 100;
+ if (interval)
+ {
+ continue;
+ }
+ }
+ //鐢熸垚杈婂垎鏈轰笅鏂欎换鍔�
+ dt_agvtask agvtask = new dt_agvtask()
+ {
+ agv_id = Guid.NewGuid(),
+ agv_tasknum = "KH-" + IdenxManager.GetTaskNo(),
+ agv_fromaddress = plc.PLCDownLoc,
+ agv_toaddress = a,
+ 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.update_time = DateTime.Now;
+ xLocation.task = 1;
+ xLocation.logic_col = 0;
+ xLocation.light_color = plc.PLCName;
+ var entry = locRepository.DbContext.ChangeTracker.Entries<base_ware_location>().FirstOrDefault();
+ if (entry != null)
+ {
+ entry.State = EntityState.Detached;
+ }
+ int ftwo = locRepository.Update(xLocation, d => new { d.task, d.light_color, d.logic_col }, true);
+ if (ftwo == 1)
+ {
+ agvRepository.Add(agvtask, true);
+ }
+ break;
+ }
+
+ }
+ }
+
}
-
}
}
+
}
-
+
}
+ catch (Exception ex)
+ {
+ WriteLog.GetLog().Write($"璐熸瀬妫嶅垎涓嬫枡锛歿DateTime.Now} --------------{ex}", $"璐熸瀬妫嶅垎涓嬫枡璋冨害");
+ }
+ finally
+ {
+ Interlocked.Exchange(ref _readGFBDOWNSignalsoF, 0);
- }
- catch (Exception)
- {
-
- throw;
- }
- finally
- {
- Interlocked.Exchange(ref _readGFBDOWNSignalsoF, 0);
-
- }
+ }
+ });
+
}
}
--
Gitblit v1.9.3