using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
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 _readJROutBindSignalso = 0;
|
/// <summary>
|
/// 拆包站逻辑流程
|
/// </summary>
|
/// <param name="client"></param>
|
/// <returns></returns>
|
public static void JROutBind()
|
{
|
if (Interlocked.Exchange(ref _readJROutBindSignalso, 1) == 0)
|
{
|
try
|
{
|
VOLContext Context = new VOLContext();
|
IJROutBindRepository jrRepository = new JROutBindRepository(Context);
|
Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context);
|
var task = agvRepository.Find(v => v.agv_toaddress.Contains("JR") && v.agv_taskstate == "WaitStockOut");
|
if (task != null)
|
{
|
var bind = jrRepository.Find(f => f.sum != 0);
|
if (bind != null)
|
{
|
for (int b = 0; b < bind.Count(); b++)
|
{
|
var tasks = agvRepository.Find(v => v.agv_materielid == bind[b].materialtype && v.agv_toaddress.Contains(bind[b].barcode.Substring(0, 2)) && v.agv_toaddress.Contains("JR") && v.agv_taskstate == "WaitStockOut");
|
if (tasks.Count() > 0)
|
{
|
if (tasks.Count() >= bind[b].sum)
|
{
|
for (int i = 0; i < bind[b].sum; i++)
|
{
|
tasks[i].agv_fromaddress = bind[b].Devid;
|
tasks[i].agv_taskstate = "Create";
|
if (string.IsNullOrEmpty(bind[b].barcodes))
|
{
|
tasks[i].agv_materbarcode = bind[b].barcode;
|
}
|
else
|
{
|
tasks[i].agv_materbarcode = bind[b].barcodes.Split(',')[b];
|
}
|
#region
|
//if (bind[b].Devid == "ZJXL-FBT001")
|
//{
|
// if (BarcodesData.barcodes1.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes1[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "ZJXL-FBT002")
|
//{
|
// if (BarcodesData.barcodes2.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes2[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT001")
|
//{
|
// if (BarcodesData.barcodes3.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes3[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT002")
|
//{
|
// if (BarcodesData.barcodes4.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes4[b];
|
// }
|
//}
|
#endregion
|
tasks[i].agv_materielid = bind[b].materialtype;
|
if (i>0)
|
{
|
int size = int.Parse(tasks[i].size);
|
//总宽度
|
int zwigth = bind[b].sum * size;
|
//已用宽度
|
int nwigth = size * i;
|
//剩余宽度
|
int newwigth = zwigth - nwigth;
|
tasks[i].JRunm = bind[b].sum - 1 + ";" + newwigth;
|
}
|
|
if (i == bind[b].sum - 1) { tasks[i].agv_remark = "true"; tasks[i].agv_qty = tasks.Count(); }
|
agvRepository.Update(tasks[i], true);
|
}
|
bind[b].barcode = "";
|
bind[b].materialtype = "";
|
bind[b].sum = 0;
|
bind[b].taskid = "";
|
bind[b].barcodes = "";
|
jrRepository.Update(bind[b], true);
|
#region
|
//if (bind[b].Devid == "ZJXL-FBT001")
|
//{
|
// BarcodesData.barcodes1=null;
|
//}
|
//else if (bind[b].Devid == "ZJXL-FBT002")
|
//{
|
// BarcodesData.barcodes2= null;
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT001")
|
//{
|
// BarcodesData.barcodes3 = null;
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT002")
|
//{
|
// BarcodesData.barcodes4= null;
|
//}
|
#endregion
|
}
|
else
|
{
|
for (int i = 0; i < tasks.Count(); i++)
|
{
|
tasks[i].agv_fromaddress = bind[b].Devid;
|
tasks[i].agv_taskstate = "Create";
|
if (string.IsNullOrEmpty( bind[b].barcodes))
|
{
|
tasks[i].agv_materbarcode = bind[b].barcode;
|
}
|
else
|
{
|
tasks[i].agv_materbarcode = bind[b].barcodes.Split(',')[b];
|
}
|
#region
|
//if (bind[b].Devid == "ZJXL-FBT001")
|
//{
|
// if (BarcodesData.barcodes1.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes1[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "ZJXL-FBT002")
|
//{
|
// if (BarcodesData.barcodes2.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes2[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT001")
|
//{
|
// if (BarcodesData.barcodes3.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes3[b];
|
// }
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT002")
|
//{
|
// if (BarcodesData.barcodes4.Count() == 0)
|
// {
|
// tasks[i].agv_materbarcode = bind[b].barcode;
|
// }
|
// else
|
// {
|
// tasks[i].agv_materbarcode = BarcodesData.barcodes4[b];
|
// }
|
//}
|
#endregion
|
|
if (i>0)
|
{
|
int size = int.Parse(tasks[i].size);
|
//总宽度
|
int zwigth = bind[b].sum * size;
|
//已用宽度
|
int nwigth = size * i;
|
//剩余宽度
|
int newwigth = zwigth - nwigth;
|
tasks[i].JRunm = bind[b].sum - 1 + ";" + newwigth;
|
}
|
|
tasks[i].agv_materielid = bind[b].materialtype;
|
if (i == tasks.Count() - 1) { tasks[i].agv_remark = "true"; tasks[i].agv_qty = tasks.Count(); }
|
agvRepository.Update(tasks[i], true);
|
}
|
bind[b].barcode = "";
|
bind[b].materialtype = "";
|
bind[b].sum = 0;
|
bind[b].taskid = "";
|
bind[b].barcodes = "";
|
jrRepository.Update(bind[b], true);
|
#region
|
// List<string> newbarcodes = null;
|
//if (bind[b].Devid == "ZJXL-FBT001")
|
//{
|
// for (int j = tasks.Count(); j < BarcodesData.barcodes1.Count(); j++)
|
// {
|
// newbarcodes.Add(BarcodesData.barcodes1[j]);
|
// WriteLog.Info("剩余卷绕绑定条码").Write(bind[b].Devid+"卷绕绑定条码:" + BarcodesData.barcodes1[j] + DateTime.Now, "剩余卷绕绑定条码");
|
// }
|
// BarcodesData.barcodes1 = newbarcodes;
|
//}
|
//else if (bind[b].Devid == "ZJXL-FBT002")
|
//{
|
// for (int j = tasks.Count(); j < BarcodesData.barcodes2.Count(); j++)
|
// {
|
// newbarcodes.Add(BarcodesData.barcodes2[j]);
|
// WriteLog.Info("剩余卷绕绑定条码").Write(bind[b].Devid + "卷绕绑定条码:" + BarcodesData.barcodes1[j] + DateTime.Now, "剩余卷绕绑定条码");
|
// }
|
// BarcodesData.barcodes2 = newbarcodes;
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT001")
|
//{
|
// for (int j = tasks.Count(); j < BarcodesData.barcodes3.Count(); j++)
|
// {
|
// newbarcodes.Add(BarcodesData.barcodes3[j]);
|
// WriteLog.Info("剩余卷绕绑定条码").Write(bind[b].Devid + "卷绕绑定条码:" + BarcodesData.barcodes1[j] + DateTime.Now, "剩余卷绕绑定条码");
|
// }
|
// BarcodesData.barcodes3 = newbarcodes;
|
//}
|
//else if (bind[b].Devid == "FJXL-FBT002")
|
//{
|
// for (int j = tasks.Count(); j < BarcodesData.barcodes4.Count(); j++)
|
// {
|
// newbarcodes.Add(BarcodesData.barcodes4[j]);
|
// WriteLog.Info("剩余卷绕绑定条码").Write(bind[b].Devid + "卷绕绑定条码:" + BarcodesData.barcodes1[j] + DateTime.Now, "剩余卷绕绑定条码");
|
// }
|
// BarcodesData.barcodes4 = newbarcodes;
|
//}
|
#endregion
|
}
|
}
|
}
|
}
|
}
|
}
|
catch (Exception)
|
{
|
|
}
|
finally
|
{
|
Interlocked.Exchange(ref _readJROutBindSignalso, 0);
|
}
|
}
|
}
|
}
|
}
|