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
|
{
|
|
/// <summary>
|
/// 淳安-查询托盘信息(单体)
|
/// </summary>
|
/// <param name="lineNo"></param>
|
/// <returns></returns>
|
public static ChunAnTrayInfo GetChunAnTrayInfo(string trayCode, string trayNum)
|
{
|
//var order = new SqlHelper<ChunAnTrayInfo>().Get(a => a.trayCode == trayCode && a.trayNum == trayNum, a => a.dateTime, true);
|
var order = new SqlHelper<ChunAnTrayInfo>().Get(a => a.trayCode == trayCode, a => a.dateTime, true);
|
return order;
|
}
|
|
/// <summary>
|
/// 靖宇-查询托盘信息(单体)
|
/// </summary>
|
/// <param name="lineNo"></param>
|
/// <returns></returns>
|
public static ThirdPartTrayInfo GetJingYuTrayInfo(string trayCode, string trayNum)
|
{
|
//var order = new SqlHelper<ChunAnTrayInfo>().Get(a => a.trayCode == trayCode && a.trayNum == trayNum, a => a.dateTime, true);
|
var order = new SqlHelper<ThirdPartTrayInfo>().Get(a => a.trayCode == trayCode, a => a.dateTime, true);
|
return order;
|
}
|
/// <summary>
|
/// 淳安-插入托盘信息
|
/// </summary>
|
/// <param name="wmsTask"></param>
|
/// <returns></returns>
|
internal static bool ChunAnInsertTrayInfo(ChunAnTrayInfo trayInfo)
|
{
|
//插入屏幕表托盘信息
|
var db1 = new SqlHelper<ChunAnScreenData>().GetInstance();
|
ChunAnScreenData ChunAnScreenInfo = new ChunAnScreenData()
|
{
|
DeviceNameNo = trayInfo.deviceName,
|
DataTypeNo = "托盘数据",
|
TrayCode = trayInfo.trayCode,
|
TrayCodeTime = trayInfo.dateTime
|
};
|
db1.Insertable(ChunAnScreenInfo).ExecuteCommand();
|
//插入托盘表托盘信息
|
var db = new SqlHelper<ChunAnTrayInfo>().GetInstance();
|
return db.Insertable(trayInfo).ExecuteCommand() > 0;
|
}
|
|
/// <summary>
|
/// 淳安-插入托盘信息
|
/// </summary>
|
/// <param name="wmsTask"></param>
|
/// <returns></returns>
|
internal static bool JingyuInsertTrayInfo(ThirdPartTrayInfo trayInfo)
|
{
|
////插入屏幕表托盘信息
|
//var db1 = new SqlHelper<ChunAnScreenData>().GetInstance();
|
//ChunAnScreenData ChunAnScreenInfo = new ChunAnScreenData()
|
//{
|
// DeviceNameNo = trayInfo.deviceName,
|
// DataTypeNo = "托盘数据",
|
// TrayCode = trayInfo.trayCode,
|
// TrayCodeTime = trayInfo.dateTime
|
//};
|
//db1.Insertable(ChunAnScreenInfo).ExecuteCommand();
|
//插入托盘表托盘信息
|
var db = new SqlHelper<ThirdPartTrayInfo>().GetInstance();
|
return db.Insertable(trayInfo).ExecuteCommand() > 0;
|
}
|
|
/// <summary>
|
/// 淳安-插入工单信息
|
/// </summary>
|
/// <param name="wmsTask"></param>
|
/// <returns></returns>
|
internal static bool ChunAnInsertWork(ChunAnWorkOrder wmsTask)
|
{
|
var db = new SqlHelper<ChunAnWorkOrder>().GetInstance();
|
return db.Insertable(wmsTask).ExecuteCommand() > 0;
|
}
|
|
/// <summary>
|
/// 靖宇-插入工单信息
|
/// </summary>
|
/// <param name="wmsTask"></param>
|
/// <returns></returns>
|
internal static bool JingYuInsertWork(WorkOrder1 wmsTask)
|
{
|
var db = new SqlHelper<WorkOrder1>().GetInstance();
|
return db.Insertable(wmsTask).ExecuteCommand() > 0;
|
}
|
/// <summary>
|
/// 淳安-更改工单状态
|
/// </summary>
|
/// <param name="task"></param>
|
/// <param name="status"></param>
|
/// <returns></returns>
|
internal static bool UpdateStatus(ChunAnWorkOrder task, string status, string dateTime, string extData = "")
|
{
|
var res = false;
|
var db = new SqlHelper<ChunAnWorkOrder>().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;
|
}
|
/// <summary>
|
/// 靖宇-更改工单状态
|
/// </summary>
|
/// <param name="task"></param>
|
/// <param name="status"></param>
|
/// <returns></returns>
|
internal static bool UpdateStatus1(WorkOrder1 task, string status, string dateTime, string extData = "")
|
{
|
var res = false;
|
var db = new SqlHelper<WorkOrder1>().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;
|
}
|
|
/// <summary>
|
/// 锁定或解锁库位(排)
|
/// </summary>
|
/// <param name="db"></param>
|
/// <param name="Row"></param>
|
/// <param name="AreaCode"></param>
|
/// <param name="UnType">true-解锁 false-锁定</param>
|
/// <param name="IsSend">true-传输富勒库位解锁锁定信息 false-不传输富勒库位锁定解锁信息</param>
|
public static void YiKuUnLockRow(SqlSugar.SqlSugarClient db, string Row, string AreaCode, bool UnType = true, bool IsSend = true, bool FuleDel = false)
|
{
|
//正式环境 无需传输库区编码,排号唯一(传输空值也行)
|
//var Srow = db.Queryable<RowLock>().Where(a => a.N_ROW == rowNo).First();
|
|
var Srow = db.Queryable<RowLock>().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<ChunAnAnalysisMoveLib>().Where(a => a.AreaCode == AreaCode && a.RowNo == Row).First();
|
if (moveLib != null) db.Deleteable<ChunAnAnalysisMoveLib>(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<ChunAnAnalysisMoveLib>().Where(a => a.AreaCode == AreaCode && a.RowNo == Row).First();
|
if (moveLib != null) db.Deleteable<ChunAnAnalysisMoveLib>(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<Location>().GetInstance();
|
loc.S_LOCK_STATE = stock;
|
res = db.Updateable(loc).UpdateColumns(it => new { it.S_LOCK_STATE }).ExecuteCommand() > 0;
|
return res;
|
|
}
|
|
/// <summary>
|
/// 更新屏幕表数据
|
/// </summary>
|
/// <param name="a"></param>
|
/// <param name="db"></param>
|
public static void UpdateScreenTable(TrayInfo a, SqlSugar.SqlSugarClient db)
|
{
|
var screen = db.Queryable<ChunAnScreenData>().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();
|
}
|
}
|
|
/// <summary>
|
/// 插入 富勒托盘数据中间表 托盘数据 靖宇
|
/// 20230918新增优化项-判断当前产线是否存在对应执行中的有码工单,如果存在,则插入,反之,不插入
|
/// </summary>
|
/// <param name="a"></param>
|
/// <param name="TrayCode"></param>
|
public static bool InsertTrayCodeJy(TrayInfo a, string TrayCode, string deviceName, SqlSugar.SqlSugarClient db, ref string msg)
|
{
|
bool result = false;
|
var workInfo = db.Queryable<WorkOrder1>().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;
|
}
|
|
/// <summary>
|
/// 插入 富勒托盘数据中间表 托盘数据
|
/// 20230918新增优化项-判断当前产线是否存在对应执行中的有码工单,如果存在,则插入,反之,不插入
|
/// </summary>
|
/// <param name="a"></param>
|
/// <param name="TrayCode"></param>
|
public static bool InsertTrayCode(TrayInfo a, string TrayCode, string deviceName, SqlSugar.SqlSugarClient db, ref string msg)
|
{
|
bool result = false;
|
var workInfo = db.Queryable<ChunAnWorkOrder>().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;
|
}
|
|
/// <summary>
|
/// 中间数据缓存表
|
/// </summary>
|
/// <param name="row"></param>
|
/// <param name="state"></param>
|
private static void InsertCacheTable(string row, bool state = true)
|
{
|
string ext2 = state ? "0" : "1";
|
var db = new SqlHelper<ChunAnCacheData>().GetInstance();
|
var cacheData = db.Queryable<ChunAnCacheData>().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();
|
}
|
}
|
}
|
}
|