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
|
{
|
/// <summary>
|
/// 定时轮询任务
|
/// </summary>
|
public class MonitorDeadckRoll
|
{
|
private static object locko3 = new object();
|
/// <summary>
|
/// 入库
|
/// </summary>
|
public static void CheckCamera()
|
{
|
try
|
{
|
var logPara = LogType.LogPara("完工回报");
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb = chi.CopyNew();
|
List<string> strings = new List<string>() { "22", "2", "7" };
|
var tas = newDb.Queryable<deadlockRollEntitys>().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<WMSTask>().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<StateTaskBLL>().ExecuteState(item.S_VALUE_JSON, "完成", logPara);
|
if (ta.Success)
|
{
|
try
|
{
|
newDb.BeginTran();
|
var I = newDb.Updateable<deadlockRollEntitys>().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<deadlockRollEntitys>().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<WMSTask>().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<StateTaskBLL>().ExecuteState(item.S_VALUE_JSON, "完成", logPara);
|
if (ta.Success)
|
{
|
try
|
{
|
newDb.BeginTran();
|
var I = newDb.Updateable<deadlockRollEntitys>().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<deadlockRollEntitys>().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<WMSTask>().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<StateTaskBLL>().ExecuteState(item.S_VALUE_JSON, "取消", logPara);
|
if (ta.Success)
|
{
|
try
|
{
|
newDb.BeginTran();
|
var I = newDb.Updateable<deadlockRollEntitys>().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<deadlockRollEntitys>().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);
|
}
|
}
|
}
|
}
|