using NongFuWebApi.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using static NongFuWebApi.Controllers.AMSModel;
namespace NongFuWebApi.Controllers
{
public class TaskHelper
{
///
/// 淳安-查询托盘信息(单体)
///
///
///
public static ChunAnTrayInfo GetChunAnTrayInfo(string trayCode, string trayNum)
{
//var order = new SqlHelper().Get(a => a.trayCode == trayCode && a.trayNum == trayNum, a => a.dateTime, true);
var order = new SqlHelper().Get(a => a.trayCode == trayCode, a => a.dateTime, true);
return order;
}
///
/// 靖宇-查询托盘信息(单体)
///
///
///
public static ThirdPartTrayInfo GetJingYuTrayInfo(string trayCode, string trayNum)
{
//var order = new SqlHelper().Get(a => a.trayCode == trayCode && a.trayNum == trayNum, a => a.dateTime, true);
var order = new SqlHelper().Get(a => a.trayCode == trayCode, a => a.dateTime, true);
return order;
}
///
/// 淳安-插入托盘信息
///
///
///
internal static bool ChunAnInsertTrayInfo(ChunAnTrayInfo trayInfo)
{
//插入屏幕表托盘信息
var db1 = new SqlHelper().GetInstance();
ChunAnScreenData ChunAnScreenInfo = new ChunAnScreenData()
{
DeviceNameNo = trayInfo.deviceName,
DataTypeNo = "托盘数据",
TrayCode = trayInfo.trayCode,
TrayCodeTime = trayInfo.dateTime
};
db1.Insertable(ChunAnScreenInfo).ExecuteCommand();
//插入托盘表托盘信息
var db = new SqlHelper().GetInstance();
return db.Insertable(trayInfo).ExecuteCommand() > 0;
}
///
/// 淳安-插入托盘信息
///
///
///
internal static bool JingyuInsertTrayInfo(ThirdPartTrayInfo trayInfo)
{
////插入屏幕表托盘信息
//var db1 = new SqlHelper().GetInstance();
//ChunAnScreenData ChunAnScreenInfo = new ChunAnScreenData()
//{
// DeviceNameNo = trayInfo.deviceName,
// DataTypeNo = "托盘数据",
// TrayCode = trayInfo.trayCode,
// TrayCodeTime = trayInfo.dateTime
//};
//db1.Insertable(ChunAnScreenInfo).ExecuteCommand();
//插入托盘表托盘信息
var db = new SqlHelper().GetInstance();
return db.Insertable(trayInfo).ExecuteCommand() > 0;
}
///
/// 淳安-插入工单信息
///
///
///
internal static bool ChunAnInsertWork(ChunAnWorkOrder wmsTask)
{
var db = new SqlHelper().GetInstance();
return db.Insertable(wmsTask).ExecuteCommand() > 0;
}
///
/// 靖宇-插入工单信息
///
///
///
internal static bool JingYuInsertWork(WorkOrder1 wmsTask)
{
var db = new SqlHelper().GetInstance();
return db.Insertable(wmsTask).ExecuteCommand() > 0;
}
///
/// 淳安-更改工单状态
///
///
///
///
internal static bool UpdateStatus(ChunAnWorkOrder task, string status, string dateTime, string extData = "")
{
var res = false;
var db = new SqlHelper().GetInstance();
task.SQL_State = status;
task.SQL_PLAN_END = dateTime;
db.Updateable(task).UpdateColumns(it => new { it.SQL_State, it.SQL_PLAN_END }).ExecuteCommand();
return res;
}
///
/// 靖宇-更改工单状态
///
///
///
///
internal static bool UpdateStatus1(WorkOrder1 task, string status, string dateTime, string extData = "")
{
var res = false;
var db = new SqlHelper().GetInstance();
task.S_WorkState = status;
task.S_PLAN_END = dateTime;
db.Updateable(task).UpdateColumns(it => new { it.S_WorkState, it.S_PLAN_END }).ExecuteCommand();
return res;
}
///
/// 锁定或解锁库位(排)
///
///
///
///
/// true-解锁 false-锁定
/// true-传输富勒库位解锁锁定信息 false-不传输富勒库位锁定解锁信息
public static void YiKuUnLockRow(SqlSugar.SqlSugarClient db, string Row, string AreaCode, bool UnType = true, bool IsSend = true, bool FuleDel = false)
{
//正式环境 无需传输库区编码,排号唯一(传输空值也行)
//var Srow = db.Queryable().Where(a => a.N_ROW == rowNo).First();
var Srow = db.Queryable().Where(a => a.N_ROW == Row && a.S_AREA_CODE == AreaCode).First();
if (UnType)
{
//解锁
if (Srow != null && Srow.S_LOCK_STATE.Trim() != "无")
{
Srow.S_LOCK_STATE = "无";
db.Updateable(Srow).UpdateColumns(a => new { a.S_LOCK_STATE }).ExecuteCommand();
if (!FuleDel)
{
//// ChunAnAnalysisMoveLib 移库库位解锁、分拣出库解锁 同时查询一下输送线下线中间表 删除占用数据
var moveLib = db.Queryable().Where(a => a.AreaCode == AreaCode && a.RowNo == Row).First();
if (moveLib != null) db.Deleteable(a => a.AreaCode == AreaCode && a.RowNo == Row).ExecuteCommand();
}
//插入中间表数据 避免农夫网关对调用IP进行限制
//if (IsSend) TaskProcess.AreaRowLockState(Srow.N_ROW.Trim(), false);
if (IsSend) InsertCacheTable(Srow.N_ROW.Trim(), false);
}
}
else
{
//锁定
if (Srow != null && Srow.S_LOCK_STATE.Trim() == "无")
{
Srow.S_LOCK_STATE = "其他锁";
db.Updateable(Srow).UpdateColumns(a => new { a.S_LOCK_STATE }).ExecuteCommand();
if (FuleDel)
{
// ChunAnAnalysisMoveLib 移库库位解锁、分拣出库解锁 同时查询一下输送线下线中间表 删除占用数据
var moveLib = db.Queryable().Where(a => a.AreaCode == AreaCode && a.RowNo == Row).First();
if (moveLib != null) db.Deleteable(a => a.AreaCode == AreaCode && a.RowNo == Row).ExecuteCommand();
}
//插入中间表数据 避免农夫网关对调用IP进行限制
if (IsSend) InsertCacheTable(Srow.N_ROW.Trim());
}
}
}
public static bool UpdateLocStock(Location loc, string stock)
{
bool res = false;
var db = new SqlHelper().GetInstance();
loc.S_LOCK_STATE = stock;
res = db.Updateable(loc).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
return res;
}
///
/// 更新屏幕表数据
///
///
///
public static void UpdateScreenTable(TrayInfo a, SqlSugar.SqlSugarClient db)
{
var screen = db.Queryable().Where(it => it.DataTypeNo == "托盘数据" && it.TrayCode == a.trayCode).First();
if (screen != null)
{
screen.TrayCode = a.sign;
db.Updateable(screen).UpdateColumns(b => new { b.TrayCode }).ExecuteCommand();
}
}
///
/// 插入 富勒托盘数据中间表 托盘数据 靖宇
/// 20230918新增优化项-判断当前产线是否存在对应执行中的有码工单,如果存在,则插入,反之,不插入
///
///
///
public static bool InsertTrayCodeJy(TrayInfo a, string TrayCode, string deviceName, SqlSugar.SqlSugarClient db, ref string msg)
{
bool result = false;
var workInfo = db.Queryable().Where(b => b.S_PLineNo == deviceName && b.S_WorkNo == a.workNo && b.S_WorkState == "执行中" && b.S_ORDER_TYPE == "产线下线").First();
if (workInfo != null)
{
ThirdPartTrayInfo TrayInfo = new ThirdPartTrayInfo()
{
deviceName = a.deviceName,
workNo = a.workNo,
trayCode = TrayCode,
trayNum = a.trayNum,
dateTime = a.dateTime,
batchNo = a.batchNo,
trayRule = a.trayRule,
itemLayer = a.itemLayer
};
result = JingyuInsertTrayInfo(TrayInfo);
//富勒下发托盘修改工单表托盘层数字段
workInfo.S_ItemLayer = a.itemLayer;
db.Updateable(workInfo).UpdateColumns(b => new { b.S_ItemLayer}).ExecuteCommand();
}
else msg += $"插入托盘数据异常:当前产线:{deviceName},无对应执行中的有码模式工单,故此托盘:{TrayCode}不进行插入动作!";
return result;
}
///
/// 插入 富勒托盘数据中间表 托盘数据
/// 20230918新增优化项-判断当前产线是否存在对应执行中的有码工单,如果存在,则插入,反之,不插入
///
///
///
public static bool InsertTrayCode(TrayInfo a, string TrayCode, string deviceName, SqlSugar.SqlSugarClient db, ref string msg)
{
bool result = false;
var workInfo = db.Queryable().Where(b => b.SQL_PLineNo == deviceName && b.SQL_State == "执行中" && b.SQL_ORDER_TYPE == "产线下线").First();
if (workInfo != null)
{
ChunAnTrayInfo ChunAnTrayInfo = new ChunAnTrayInfo()
{
deviceName = a.deviceName,
workNo = a.workNo,
trayCode = TrayCode,
trayNum = a.trayNum,
dateTime = a.dateTime,
batchNo = a.batchNo,
trayRule = a.trayRule,
itemLayer = a.itemLayer
};
result = ChunAnInsertTrayInfo(ChunAnTrayInfo);
}
else msg += $"插入托盘数据异常:当前产线:{deviceName},无对应执行中的有码模式工单,故此托盘:{TrayCode}不进行插入动作!";
return result;
}
///
/// 中间数据缓存表
///
///
///
private static void InsertCacheTable(string row, bool state = true)
{
string ext2 = state ? "0" : "1";
var db = new SqlHelper().GetInstance();
var cacheData = db.Queryable().Where(a => a.DataSign == "HttpData" && a.Ext1 == row && a.Ext2 == ext2).First();
if (cacheData == null)
{
ChunAnCacheData chunAnCacheData = new ChunAnCacheData
{
DataSign = "HttpData",
Ext1 = row,
Ext2 = ext2
};
db.Insertable(chunAnCacheData).ExecuteCommand();
}
}
}
}