| | |
| | | using HH.WCS.Mobox3.DoubleCoin.util; |
| | | using HH.WCS.Mobox3.DoubleCoin.models; |
| | | using HH.WCS.Mobox3.DoubleCoin.process; |
| | | using HH.WCS.Mobox3.DoubleCoin.util; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | var date = DateTime.Now.ToString("yyMMdd"); |
| | | return $"TN{date}{id.ToString().PadLeft(4, '0')}"; |
| | | } |
| | | internal static bool UpdateStatus(TN_Task task, string status) |
| | | internal static bool UpdateStatus(TN_Task task, string status) |
| | | { |
| | | var res = false; |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | task.S_B_STATE = status; |
| | | res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand()>0; |
| | | res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0; |
| | | return res; |
| | | } |
| | | internal static bool UpdateStatus(TN_Task task) { |
| | |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand(); |
| | | return res; |
| | | } |
| | | |
| | | |
| | | internal static TN_Task GetTask(string no) { |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == no).First(); |
| | |
| | | /// <param name="cntrInfo">容器编码</param> |
| | | /// <param name="spec">物料规格</param> |
| | | /// <returns></returns> |
| | | internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo,string spec = "") |
| | | internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, string spec = "") |
| | | { |
| | | var fromLoc = LocationHelper.GetLocation(from); |
| | | var endLoc = LocationHelper.GetLocation(to); |
| | |
| | | |
| | | } |
| | | |
| | | internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, out string taskNo, string spec = "" ) |
| | | internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo, out string taskNo, string spec = "") |
| | | { |
| | | var fromLoc = LocationHelper.GetLocation(from); |
| | | var endLoc = LocationHelper.GetLocation(to); |
| | |
| | | return db.Queryable<TN_Task_Action>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0; |
| | | } |
| | | |
| | | internal static void Begin(TN_Task task, string forklift_no) |
| | | internal static void Begin(TN_Task task, string forklift_no) |
| | | { |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | if (task != null) |
| | | if (task != null) |
| | | { |
| | | if (task.N_B_STATE == 1) |
| | | { |
| | | task.N_B_STATE = 2; |
| | | task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); |
| | | task.T_START_TIME = System.DateTime.Now; |
| | | task.S_EQ_NO = forklift_no; |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); |
| | | } |
| | | |
| | | task.N_B_STATE = 2; |
| | | task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); |
| | | task.T_START_TIME = System.DateTime.Now; |
| | | task.S_EQ_NO = forklift_no; |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME, it.S_EQ_NO }).ExecuteCommand(); |
| | | } |
| | | } |
| | | internal static void End(TN_Task task) { |
| | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | return db.Queryable<TN_Task>().Where(a => a.N_B_STATE == 0 && (a.S_B_STATE == "等待" || a.S_B_STATE == "待推送")).ToList(); |
| | | } |
| | | |
| | | |
| | | public static void CancleTaskInfo(TN_Task tN_Task) |
| | | { |
| | | var HJ = Settings.Areas[1]; |
| | | if (tN_Task.S_END_AREA == HJ || tN_Task.S_TYPE.Contains("满托下线入库"))//终点是满托缓存库区 |
| | | { |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 终点是满托缓存库区: {tN_Task.S_END_AREA}"); |
| | | |
| | | TaskProcess.CacheBitCancelUpdate(tN_Task);//异常处理 |
| | | } |
| | | else if (tN_Task.S_START_AREA == HJ || tN_Task.S_TYPE.Contains("满托出库上线"))//起点是满托缓存库区 |
| | | { |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 起点是满托缓存库区: {tN_Task.S_START_AREA}"); |
| | | |
| | | if (!WCSHelper.CheckActionRecordExist(tN_Task.S_CODE, 4))//未取货完成 |
| | | { |
| | | WCSHelper.Fail(tN_Task);//任务状态改成错误 |
| | | |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成错误"); |
| | | } |
| | | else |
| | | { |
| | | WCSHelper.End(tN_Task);//任务状态改成结束 |
| | | LocationHelper.BindingLoc(tN_Task.S_END_LOC, tN_Task.S_CNTR_CODE.Split(',').ToList());// 绑定终点容器货位 |
| | | |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 取货完成,任务状态改成结束,绑定终点容器货位"); |
| | | } |
| | | LocationHelper.UnLockLoc(tN_Task.S_END_LOC); |
| | | LocationHelper.UnLockLoc(tN_Task.S_START_LOC);//解锁起点终点 |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 起点终点都不是满托缓存库区: {tN_Task.S_START_AREA} {tN_Task.S_END_AREA}"); |
| | | |
| | | if (!WCSHelper.CheckActionRecordExist(tN_Task.S_CODE, 4))//未取货完成 |
| | | { |
| | | WCSHelper.Fail(tN_Task);//任务状态改成错误 |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var cginfo = db.Queryable<TN_CG_Detail>().First(a => a.S_CNTR_CODE == tN_Task.S_CNTR_CODE); |
| | | if (cginfo != null) |
| | | { |
| | | db.Deleteable<TN_InventoryM>().Where(it => it.S_ID == cginfo.S_ID || it.RFID == tN_Task.S_CNTR_CODE).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | db.Deleteable<TN_InventoryM>().Where(it => it.RFID == tN_Task.S_CNTR_CODE).ExecuteCommand(); |
| | | } |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成错误,删除改容器号的所有库存{tN_Task.S_CNTR_CODE}"); |
| | | } |
| | | else |
| | | { |
| | | WCSHelper.End(tN_Task);//任务状态改成结束 |
| | | LocationHelper.BindingLoc(tN_Task.S_END_LOC, tN_Task.S_CNTR_CODE.Split(',').ToList()); |
| | | |
| | | LogHelper.Info($"取消任务: {tN_Task.S_CODE} 未取货完成,任务状态改成结束,绑定终点容器货位"); |
| | | } |
| | | LocationHelper.UnLockLoc(tN_Task.S_END_LOC); |
| | | LocationHelper.UnLockLoc(tN_Task.S_START_LOC);//解锁起点终点 |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class CreateTasks |