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
{
///
/// 流程通用代码
///
internal class ProcessHelper
{
///
/// 瓶盖机满托下线设置物料信息和托盘状态
///
///
///
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 freeLineInfos = new List();
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; }
}
}
}