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);
}
}
}
}