using HH.WCS.Hexafluo.util;
|
using HH.WCS.Hexafluo.wms;
|
using HH.WCS.SJML.Bll;
|
using HH.WCS.SJML.Dto;
|
using HH.WCS.SJML.Entitys;
|
using Newtonsoft.Json;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace HH.WCS.Hexafluo.core
|
{
|
/// <summary>
|
/// 自动出库空托
|
/// </summary>
|
public class AutoTransportTask
|
{
|
private static object locko2 = new object();
|
/// <summary>
|
/// 自动出库空托
|
/// </summary>
|
public static void CheckCamera()
|
{
|
try
|
{
|
lock (locko2)
|
{
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb = chi.CopyNew();
|
var Kklock = chi.Queryable<FunctionEntitys>().Where(e => e.Autoindex == "空托自动出库到接驳位")?.First();
|
|
if (Kklock != null && Kklock.TransportLock == "Y")
|
{
|
var transportTask = chi.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "空托自动出库到接驳位")?.First();
|
|
var TaryJb = JsonConvert.DeserializeObject<List<TranyJb>>(transportTask.TypeJson);
|
LogHelper.DanInfo("出库到接驳位", $"配置 {JsonConvert.SerializeObject(TaryJb)}");
|
var State = new List<string> { "完成", "取消" };
|
var TaskList = newDb.Queryable<WMSTask>().Where(e => e.S_NOTE == "立库任务" && TaryJb.Select(c => c.S_LOC_CODE).ToList().Contains(e.S_END_LOC) && e.S_TYPE == "出库" && !State.Contains(e.S_B_STATE))
|
.ToList();
|
if (TaskList.Count() > 0)
|
{
|
TaskList.RemoveAll(e => e.S_TASK_NO.Contains("_"));
|
}
|
foreach (var t in TaryJb)
|
{
|
var bg = chi.Queryable<JbTrayNumberEntitys>().Where(e => e.S_LOC_CODE == t.S_LOC_CODE && e.S_IS_USE == "N").ToList();
|
int fftask = 0;
|
//查询对应的任务数是多少
|
if (TaskList.Count > 0)
|
{
|
fftask = TaskList.FindAll(e => e.S_END_LOC == t.S_LOC_CODE).ToList().Count();
|
}
|
|
if ((bg.Count() + fftask) < 2)
|
{
|
List<OutWorkAreaEntity> outWorkAreaList = new List<OutWorkAreaEntity>();
|
OutWorkAreaEntity outWorkArea = new OutWorkAreaEntity();
|
outWorkArea.endBit = t.S_LOC_CODE;
|
outWorkArea.TaskFlow = t.S_TASK_FLOWNO;
|
outWorkArea.TrayType = t.S_TRAY_TYPE;
|
outWorkAreaList.Add(outWorkArea);
|
BLLCreator.CreateSingleton<OutWorkAreaBll>().OutWorkArea(outWorkAreaList);
|
}
|
var bg2 = chi.Queryable<JbTrayNumberEntitys>().Where(e => e.S_LOC_CODE == t.S_LOC_CODE && e.S_IS_USE == "Y").ToList();
|
if (bg.Count > 2)//查询是否是人工将托盘取走
|
{
|
var ggf = bg2.OrderBy(e => e.T_CREATE).ToList();
|
try
|
{
|
newDb.BeginTran();
|
var I = newDb.Deleteable<JbTrayNumberEntitys>().Where(e => e.S_ID == ggf.FirstOrDefault().S_ID).ExecuteCommand();
|
if (I == 0)
|
{
|
throw new System.Exception("");
|
}
|
newDb.CommitTran();
|
}
|
catch (System.Exception ex)
|
{
|
newDb.RollbackTran();
|
throw;
|
}
|
|
|
// AloneWcsTaskUnbingEntitys unbin = new AloneWcsTaskUnbingEntitys();
|
//unbin.S_TASK_NO = BLLCreator.Create<IdGuid>().TaskNo("CK");
|
//unbin.JbLocation = t.S_LOC_CODE;
|
//var re = BLLCreator.CreateSingleton<WcsTask>().WcsCvstate(unbin);
|
//if (re.Success)
|
//{
|
// try
|
// {
|
// newDb.BeginTran();
|
// var I = newDb.Deleteable<JbTrayNumberEntitys>().Where(e => e.S_ID == ggf.FirstOrDefault().S_ID).ExecuteCommand();
|
// if (I == 0)
|
// {
|
// throw new System.Exception("");
|
// }
|
// newDb.CommitTran();
|
// }
|
// catch (System.Exception ex)
|
// {
|
// newDb.RollbackTran();
|
// throw;
|
// }
|
//}
|
}
|
}
|
}
|
|
if (Kklock == null)
|
{
|
FunctionEntitys function = new FunctionEntitys();
|
function.Autoindex = "空托自动出库到接驳位";
|
function.TransportLock = "N";
|
try
|
{
|
newDb.BeginTran();
|
newDb.Insertable(function).ExecuteCommand();
|
newDb.CommitTran();
|
}
|
catch (System.Exception ex)
|
{
|
newDb.RollbackTran();
|
throw;
|
}
|
}
|
}
|
}
|
catch (System.Exception ex)
|
{
|
LogHelper.DanInfo("出库到接驳位", ex.Message);
|
}
|
}
|
}
|
}
|