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