using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.Diagnostics;
|
using System.Threading;
|
using WIDESEA_Common;
|
using WIDESEA_Common.Tools;
|
using WIDESEA_Core.EFDbContext;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services;
|
using WIDESEA_Services.IRepositories;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_Services.Services;
|
using WIDESEA_WCS.WCSClient;
|
|
namespace WIDESEA_WCS.Jobs
|
{
|
public partial class EquipmentExecutor : SchedulerExecuteBase
|
{
|
private static int _readJRSignalso = 0;
|
|
public static void JRSB_UpTask()
|
{
|
if (Interlocked.Exchange(ref _readJRSignalso, 1) == 0)
|
{
|
try
|
{
|
VOLContext Context = new VOLContext();
|
WebResponseContent responseContent = new WebResponseContent();
|
Idt_task_numberRepository tasknumberRep = new dt_task_numberRepository(Context);
|
dt_task_numberService tasknumber = new dt_task_numberService(tasknumberRep);
|
Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
|
IJROutBindRepository jrRepository = new JROutBindRepository(Context);
|
List<string> JRSBS = new List<string> { "格林晟1号卷绕机", "格林晟2号卷绕机", "格林晟3号卷绕机", "格林晟4号卷绕机", "格林晟5号卷绕机", "格林晟6号卷绕机", "格林晟7号卷绕机", "格林晟8号卷绕机", "格林晟9号卷绕机", "格林晟10号卷绕机" };
|
foreach (var JRSB in JRSBS)
|
{
|
WriteLog.Info($"{JRSB}下料").Write($"{JRSB}开始,时间:" + DateTime.Now + " ----------", $"{JRSB}下料");
|
PLCClient plc = WCSService.Clients.Find(v => v.PLCName == JRSB);
|
if (plc == null) { continue; }
|
//当前设备有没有上料请求
|
string isSBWork1 = plc.ReadValue(ConveyorLineInfoDBName.R_GLSJRSB1_UPrequest.ToString(), plc.PLCName).ToString();
|
string isSBWork2 = plc.ReadValue(ConveyorLineInfoDBName.R_GLSJRSB2_UPrequest.ToString(), plc.PLCName).ToString();
|
string isSBWork3 = plc.ReadValue(ConveyorLineInfoDBName.R_GLSJRSB3_UPrequest.ToString(), plc.PLCName).ToString();
|
string isSBWork4 = plc.ReadValue(ConveyorLineInfoDBName.R_GLSJRSB4_UPrequest.ToString(), plc.PLCName).ToString();
|
//读取设备的工单号
|
string batchNo = plc.ReadValue(ConveyorLineInfoDBName.R_JRSB_UPbatchNo.ToString(), plc.PLCName).ToString();
|
if (batchNo == null) { continue; }
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "\t" + "上料口1:" + isSBWork1 + "\t" + "上料口2:" + isSBWork2 + "\t" + "上料口3:" + isSBWork3 + "\t" + "上料口4:" + isSBWork4 + "\t" + batchNo + "\t" + DateTime.Now, "格林晟卷绕上料");
|
dt_agvtask agvtask = new dt_agvtask();
|
if (bool.Parse(isSBWork1) || bool.Parse(isSBWork2) || bool.Parse(isSBWork3) || bool.Parse(isSBWork4))
|
{
|
if (bool.Parse(isSBWork1))
|
{
|
int number = Convert.ToInt32(JRSB.Substring(3, 1));
|
if (JRSB == "格林晟10号卷绕机") { number = 10; }
|
int num = 1 + (number - 1) * 4;
|
string sum = "";
|
if (num >= 10)
|
{
|
sum = "0" + num;
|
}
|
else
|
{
|
sum = "00" + num;
|
}
|
agvtask.agv_toaddress = "FJSL-JRSB" + sum + "-B";
|
agvtask.agv_barcode = "";
|
agvtask.agv_code = "负极2号AGV";
|
agvtask.agv_createtime = DateTime.Now;
|
agvtask.agv_fromaddress = "nou";
|
agvtask.agv_grade = 1;
|
agvtask.agv_materbarcode = "daiding";
|
agvtask.agv_qty = 1;
|
agvtask.agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep);
|
agvtask.agv_taskstate = "WaitStockOut";
|
agvtask.agv_tasktype = "TaskType_Outbound";
|
agvtask.agv_userid = "WCS";
|
agvtask.agv_worktype = 1;
|
agvtask.agv_materielid = batchNo;
|
var task = agvRepository.FindFirst(f => f.agv_toaddress == agvtask.agv_toaddress);
|
if (task == null)
|
{
|
List<string> StockList = new List<string> { "FJXL-FBT001", "FJXL-FBT002" };
|
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, StockList, 4, batchNo, "", agvtask.agv_toaddress);
|
WriteLog.Info($"{JRSB}下料").Write($"isSBWork1:MES返回数据:{JsonConvert.SerializeObject(WMSbackresult)},时间:" + DateTime.Now + " ----------", $"{JRSB}下料");
|
if (WMSbackresult.Code > 0)
|
{
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "要料失败" + WMSbackresult.Message + "\t" + DateTime.Now, "格林晟卷绕上料");
|
break;
|
}
|
agvRepository.Add(agvtask, true);
|
}
|
}
|
if (bool.Parse(isSBWork2))
|
{
|
int number = Convert.ToInt32(JRSB.Substring(3, 1));
|
if (JRSB == "格林晟10号卷绕机") { number = 10; }
|
int num = 2 + (number - 1) * 4;
|
string sum = "";
|
if (num >= 10)
|
{
|
sum = "0" + num;
|
}
|
else
|
{
|
sum = "00" + num;
|
}
|
agvtask.agv_toaddress = "FJSL-JRSB" + sum + "-B";
|
agvtask.agv_barcode = "";
|
agvtask.agv_code = "负极2号AGV";
|
agvtask.agv_createtime = DateTime.Now;
|
agvtask.agv_fromaddress = "nou";
|
agvtask.agv_grade = 1;
|
agvtask.agv_materbarcode = "daiding";
|
agvtask.agv_qty = 1;
|
agvtask.agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep);
|
agvtask.agv_taskstate = "WaitStockOut";
|
agvtask.agv_tasktype = "TaskType_Outbound";
|
agvtask.agv_userid = "WCS";
|
agvtask.agv_worktype = 1;
|
agvtask.agv_materielid = batchNo;
|
var task = agvRepository.FindFirst(f => f.agv_toaddress == agvtask.agv_toaddress);
|
if (task == null)
|
{
|
List<string> StockList = new List<string> { "FJXL-FBT001", "FJXL-FBT002" };
|
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, StockList, 4, batchNo, "", agvtask.agv_toaddress);
|
WriteLog.Info($"{JRSB}下料").Write($"isSBWork2:MES返回数据:{JsonConvert.SerializeObject(WMSbackresult)},时间:" + DateTime.Now + " ----------", $"{JRSB}下料");
|
if (WMSbackresult.Code > 0)
|
{
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "要料失败" + WMSbackresult.Message + "\t" + DateTime.Now, "格林晟卷绕上料");
|
break;
|
}
|
agvRepository.Add(agvtask, true);
|
}
|
}
|
if (bool.Parse(isSBWork3))
|
{
|
int number = Convert.ToInt32(JRSB.Substring(3, 1));
|
if (JRSB == "格林晟10号卷绕机") { number = 10; }
|
int num = 3 + (number - 1) * 4;
|
string sum = "";
|
if (num >= 10)
|
{
|
sum = "0" + num;
|
}
|
else
|
{
|
sum = "00" + num;
|
}
|
agvtask.agv_toaddress = "ZJSL-JRSB" + sum + "-B";
|
agvtask.agv_barcode = "";
|
agvtask.agv_code = "负极2号AGV";
|
agvtask.agv_createtime = DateTime.Now;
|
agvtask.agv_fromaddress = "nou";
|
agvtask.agv_grade = 1;
|
agvtask.agv_materbarcode = "daiding";
|
agvtask.agv_qty = 1;
|
agvtask.agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep);
|
agvtask.agv_taskstate = "WaitStockOut";
|
agvtask.agv_tasktype = "TaskType_Outbound";
|
agvtask.agv_userid = "WCS";
|
agvtask.agv_worktype = 1;
|
agvtask.agv_materielid = batchNo;
|
var task = agvRepository.FindFirst(f => f.agv_toaddress == agvtask.agv_toaddress);
|
if (task == null)
|
{
|
List<string> StockList = new List<string> { "FJXL-FBT001", "FJXL-FBT002" };
|
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, StockList, 4, batchNo, "", agvtask.agv_toaddress);
|
WriteLog.Info($"{JRSB}下料").Write($"isSBWork3:MES返回数据:{JsonConvert.SerializeObject(WMSbackresult)},时间:" + DateTime.Now + " ----------", $"{JRSB}下料");
|
if (WMSbackresult.Code > 0)
|
{
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "要料失败" + WMSbackresult.Message + "\t" + DateTime.Now, "格林晟卷绕上料");
|
break;
|
}
|
agvRepository.Add(agvtask, true);
|
}
|
}
|
if (bool.Parse(isSBWork4))
|
{
|
int number = Convert.ToInt32(JRSB.Substring(3, 1));
|
if (JRSB == "格林晟10号卷绕机") { number = 10; }
|
int num = 4 + (number - 1) * 4;
|
string sum = "";
|
if (num >= 10)
|
{
|
sum = "0" + num;
|
}
|
else
|
{
|
sum = "00" + num;
|
}
|
agvtask.agv_toaddress = "ZJSL-JRSB" + sum + "-B";
|
agvtask.agv_barcode = "";
|
agvtask.agv_code = "负极2号AGV";
|
agvtask.agv_createtime = DateTime.Now;
|
agvtask.agv_fromaddress = "nou";
|
agvtask.agv_grade = 1;
|
agvtask.agv_materbarcode = "daiding";
|
agvtask.agv_qty = 1;
|
agvtask.agv_tasknum = "KH-" + tasknumber.GetTaskNumber(tasknumberRep);
|
agvtask.agv_taskstate = "WaitStockOut";
|
agvtask.agv_tasktype = "TaskType_Outbound";
|
agvtask.agv_userid = "WCS";
|
agvtask.agv_worktype = 1;
|
agvtask.agv_materielid = batchNo;
|
var task = agvRepository.FindFirst(f => f.agv_toaddress == agvtask.agv_toaddress);
|
if (task == null)
|
{
|
List<string> StockList = new List<string> { "FJXL-FBT001", "FJXL-FBT002" };
|
MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, StockList, 4, batchNo, "", agvtask.agv_toaddress);
|
WriteLog.Info($"{JRSB}下料").Write($"isSBWork4:MES返回数据:{JsonConvert.SerializeObject(WMSbackresult)},时间:" + DateTime.Now + " ----------", $"{JRSB}下料");
|
if (WMSbackresult.Code > 0)
|
{
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "要料失败" + WMSbackresult.Message + "\t" + DateTime.Now, "格林晟卷绕上料");
|
break;
|
}
|
agvRepository.Add(agvtask, true);
|
}
|
}
|
#region
|
//var bind = new JROutBind();
|
//if (agvtask.agv_toaddress.Contains("ZJ"))
|
//{
|
// bind = jrRepository.FindFirst(f => f.Devid == "ZJXL-FBT001");
|
//}
|
//else if (agvtask.agv_toaddress.Contains("FJ"))
|
//{
|
// bind = jrRepository.FindFirst(f => f.Devid == "ZJXL-FBT002");
|
//}
|
//if (bind.materialtype != batchNo)
|
//{
|
// bind = new JROutBind()
|
// {
|
// barcode = "",
|
// materialtype = "",
|
// sum = 0,
|
// taskid = ""
|
// };
|
// jrRepository.Update(bind, true);
|
//var task = agvRepository.FindFirst(f => f.agv_toaddress ==agvtask.agv_toaddress);
|
//if (task != null) { continue; }
|
//List<string> StockList = new List<string> { "ZJXL-FBT001", "ZJXL-FBT002" };
|
//MESback WMSbackresult = MESAPIInvoke.OutNeedStosk(agvtask.agv_tasknum, StockList, 4, batchNo, "", agvtask.agv_toaddress);
|
//if (WMSbackresult.Code > 0)
|
//{
|
// WriteLog.Info("格林晟卷绕上料").Write(JRSB + "要料失败" + WMSbackresult.Message + "\t" + DateTime.Now, "格林晟卷绕上料");
|
// break;
|
//}
|
//agvRepository.Add(agvtask, true);
|
#endregion
|
WriteLog.Info("格林晟卷绕上料").Write(JRSB + "\t" + agvtask.agv_tasknum + "\t" + "上料口1:" + isSBWork1 + "\t" + "上料口2:" + isSBWork2 + "\t" + "上料口3:" + isSBWork3 + "\t" + "上料口4:" + isSBWork4 + "\t" + batchNo + "\t" + DateTime.Now, "格林晟卷绕上料");
|
// }
|
break;
|
}
|
else
|
{
|
continue;
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
WriteLog.Info("JRSB_UpTask").Write("JRSB_UpTask" + ex.Message, "JRSB_UpTask");
|
StackTrace stackTrace = new StackTrace();
|
StackFrame[] stackFrames = stackTrace.GetFrames();
|
string str = "";
|
foreach (var item in stackFrames)
|
{
|
str += "方法名:" + item.GetMethod().Name + ",行号:" + item.GetFileLineNumber() + ",文件名:" + item.GetFileName() + Environment.NewLine;
|
}
|
WIDESEA_Common.Tools.WriteLog.GetLog("格林晟卷绕机").Write($"错误信息:{ex.Message},{str}", "格林晟卷绕机");
|
}
|
finally
|
{
|
Interlocked.Exchange(ref _readJRSignalso, 0);
|
}
|
}
|
}
|
}
|
}
|