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 { /// /// 自动出库空托 /// public class AutoTransportTask { private static object locko2 = new object(); /// /// 自动出库空托 /// public static void CheckCamera() { try { lock (locko2) { var chi = new SqlHelper().GetInstance(); var newDb = chi.CopyNew(); var Kklock = chi.Queryable().Where(e => e.Autoindex == "空托自动出库到接驳位")?.First(); if (Kklock != null && Kklock.TransportLock == "Y") { var transportTask = chi.Queryable().Where(e => e.Autoindex == "空托自动出库到接驳位")?.First(); var TaryJb = JsonConvert.DeserializeObject>(transportTask.TypeJson); LogHelper.DanInfo("出库到接驳位", $"配置 {JsonConvert.SerializeObject(TaryJb)}"); var State = new List { "完成", "取消" }; var TaskList = newDb.Queryable().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().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 outWorkAreaList = new List(); 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().OutWorkArea(outWorkAreaList); } var bg2 = chi.Queryable().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().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().TaskNo("CK"); //unbin.JbLocation = t.S_LOC_CODE; //var re = BLLCreator.CreateSingleton().WcsCvstate(unbin); //if (re.Success) //{ // try // { // newDb.BeginTran(); // var I = newDb.Deleteable().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); } } } }