using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; using HH.WCS.SJML.Bll; using HH.WCS.SJML.util; using HH.WCS.ZCQTJ.Entitys; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace HH.WCS.Hexafluo.core { /// /// 定时轮询任务 /// public class MonitorDeadckRoll { private static object locko3 = new object(); /// /// 入库 /// public static void CheckCamera() { try { var logPara = LogType.LogPara("完工回报"); var chi = new SqlHelper().GetInstance(); var newDb = chi.CopyNew(); List strings = new List() { "22", "2", "7" }; var tas = newDb.Queryable().Where(e => e.S_READ_LOCK == "N" && strings.Contains(e.S_INTER_STATE)) .ToList(); var TaskList2 = tas.FindAll(e => e.S_INTER_STATE == "22"); if (TaskList2.Any()) { var Tas = newDb.Queryable().Where(e => TaskList2.Select(d => d.S_VALUE_JSON).ToList().Contains(e.S_TASK_NO)) .ToList(); TaskList2 = TaskList2.OrderBy(e => e.T_CREATE).ToList(); foreach (var item in TaskList2) { //查询这个任务的状态 如果是完成则直接标记为Y //查询这个任务的状态 var ttg = Tas.Find(e => e.S_TASK_NO == item.S_VALUE_JSON); if (ttg.S_B_STATE != "完成" && ttg.S_B_STATE != "取消") { var ta = BLLCreator.Create().ExecuteState(item.S_VALUE_JSON, "完成", logPara); if (ta.Success) { try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } else { //修改标记为Y try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } } var TaskList = tas.FindAll(e => e.S_INTER_STATE == "2"); if (TaskList.Any()) { var Tas = newDb.Queryable().Where(e => TaskList.Select(d => d.S_VALUE_JSON).ToList().Contains(e.S_TASK_NO)) .ToList(); TaskList = TaskList.OrderBy(e => e.T_CREATE).ToList(); foreach (var item in TaskList) { //查询这个任务的状态 如果是完成则直接标记为Y //查询这个任务的状态 var ttg = Tas.Find(e => e.S_TASK_NO == item.S_VALUE_JSON); if (ttg.S_B_STATE != "完成" && ttg.S_B_STATE != "取消") { var ta = BLLCreator.Create().ExecuteState(item.S_VALUE_JSON, "完成", logPara); if (ta.Success) { try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } else { //修改标记为Y try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } } var TaskList3 = tas.FindAll(e => e.S_INTER_STATE == "7"); if (TaskList3.Any()) { var Tas = newDb.Queryable().Where(e => TaskList3.Select(d => d.S_VALUE_JSON).ToList().Contains(e.S_TASK_NO)) .ToList(); TaskList3 = TaskList3.OrderBy(e => e.T_CREATE).ToList(); foreach (var item in TaskList3) { //查询这个任务的状态 如果是完成则直接标记为Y //查询这个任务的状态 var ttg = Tas.Find(e => e.S_TASK_NO == item.S_VALUE_JSON); if (ttg.S_B_STATE != "完成" && ttg.S_B_STATE != "取消") { var ta = BLLCreator.Create().ExecuteState(item.S_VALUE_JSON, "取消", logPara); if (ta.Success) { try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } else { //修改标记为Y try { newDb.BeginTran(); var I = newDb.Updateable().SetColumns(it => new deadlockRollEntitys() { S_READ_LOCK = "Y" }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb.CommitTran(); } catch (Exception) { newDb.RollbackTran(); } } } } } catch (System.Exception ex) { LogHelper.DanInfo("完工回报", "死锁回滚报错 " + ex.Message); } } } }