using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using HH.WCS.JingyuNongfu.wms;
|
using Newtonsoft.Json;
|
|
namespace HH.WCS.JingyuNongfu.process
|
{
|
/// <summary>
|
/// 流程通用代码
|
/// </summary>
|
internal class ProcessHelper
|
{
|
/// <summary>
|
/// 瓶盖机满托下线设置物料信息和托盘状态
|
/// </summary>
|
/// <param name="workOrder"></param>
|
/// <param name="start"></param>
|
internal static bool SetTrayInfoFull(WorkOrder workOrder, Container cntr, bool isPg = false)
|
{
|
//托盘信息已存在,将托盘物料表更新
|
//设置容器用途
|
|
var dest = workOrder.S_LinkLineNO.Trim();
|
if (workOrder.S_Area != null && workOrder.S_Area.Trim() == "v8")
|
{
|
dest = "v8";
|
//Console.WriteLine(workOrder.SQL_Area);
|
}
|
//if (workOrder.S_Out != null && workOrder.S_Out.Trim() == "Y") {
|
// dest = "外调";
|
// //Console.WriteLine(workOrder.SQL_Out);
|
//}
|
cntr.S_DEST = dest;
|
cntr.S_SRC = workOrder.S_PLineNo.Trim();
|
var num = workOrder.S_PCNumber;
|
if (isPg && cntr.S_TYPE == "塑料托盘")
|
{
|
num = workOrder.S_PCNumber1;
|
}
|
Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}来源{cntr.S_SRC}");
|
Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}目的地{cntr.S_DEST}");
|
//itemcode 要改成itemname
|
return ContainerHelper.BindCntrItem(cntr, workOrder.S_ItemName, $"{DateTime.Now.ToString("yyMMdd")}{workOrder.S_PLineNo.Trim()}", num, workOrder.S_WorkNo);
|
|
}
|
|
internal static bool SetTrayInfoZone(Container cntr, string start, string end)
|
{
|
//托盘信息已存在,将托盘物料表更新
|
//设置容器用途
|
|
|
cntr.S_DEST = end;
|
cntr.S_SRC = start;
|
|
Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}来源{cntr.S_SRC}");
|
Console.WriteLine($"绑定容器{cntr.S_CNTR_CODE}目的地{cntr.S_DEST}");
|
LogHelper.Info($"绑定容器:{cntr.S_CNTR_CODE}绑定目的地:{cntr.S_DEST}", "托盘绑定");
|
|
//itemcode 要改成itemname
|
return ContainerHelper.BindCntr(cntr);
|
|
}
|
|
|
|
|
private static List<FreeLineInfo> freeLineInfos = new List<FreeLineInfo>();
|
internal static freeLineBit GetFreeLineBit(string area, int row, int col)
|
{
|
|
if (freeLineInfos.Count == 0)
|
{
|
freeLineInfos = LocationHelper.GetAllFreeLineInfo();
|
}
|
|
var size = freeLineInfos.Count;
|
Console.WriteLine($"freeLineInfos.Count:{size}");
|
var res = freeLineInfos.Where(a => a.S_AREA_CODE == area && a.N_ROW == row && col >= a.S_START_COL && col <= a.S_END_COL).FirstOrDefault();
|
LogHelper.Info("自由线段信息:" + JsonConvert.SerializeObject(res), "HosttoagvTask");
|
if (res != null)
|
{
|
return new freeLineBit { S_AREA_CODE = area, N_ROW = row, S_START_COL = res.S_START_COL, S_END_COL = res.S_END_COL, S_First_Bit = res.S_First_Bit, S_Second_Bit = res.S_Second_Bit, S_Three_Bit = res.S_Three_Bit };
|
}
|
return null;
|
}
|
public class freeLineBit
|
{
|
public string S_AREA_CODE { get; set; }
|
public int N_ROW { get; set; }
|
public int S_START_COL { get; set; }
|
public int S_END_COL { get; set; }
|
public int S_First_Bit { get; set; }
|
public int S_Second_Bit { get; set; }
|
public int S_Three_Bit { get; set; }
|
}
|
}
|
}
|