| | |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE); |
| | | task.T_MODIFY = DateTime.Now; |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand(); |
| | | res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand() > 0; |
| | | return res; |
| | | } |
| | | internal static bool UpdateEQNo(TN_Task task) { |
| | |
| | | return task; |
| | | } |
| | | |
| | | public static TN_Task BuildTask(TN_Location startLoc, TN_Location endLoc, string cntId, string type) { |
| | | TN_Task TN_Task = new TN_Task() { |
| | | S_CODE = GenerateTaskNo(), |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_AREA = endLoc.S_AREA_CODE, |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_END_LOC = endLoc.S_CODE, |
| | | S_TYPE = type, |
| | | N_PRIORITY = 3, // 初始优先级默认为:3 |
| | | N_SCHEDULE_TYPE = 1, // NDC |
| | | N_B_STATE = 0, |
| | | S_CNTR_CODE = cntId, |
| | | }; |
| | | |
| | | return TN_Task; |
| | | } |
| | | |
| | | public static TN_Task BuildErpTask(TN_Location startLoc, TN_Location endLoc, string cntId, string type, string erpNo) { |
| | | TN_Task TN_Task = new TN_Task() { |
| | | S_CODE = GenerateTaskNo(), |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_AREA = endLoc.S_AREA_CODE, |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_END_LOC = endLoc.S_CODE, |
| | | S_TYPE = type, |
| | | N_PRIORITY = 3, // 初始优先级默认为:3 |
| | | N_SCHEDULE_TYPE = 1, // NDC |
| | | N_B_STATE = 0, |
| | | S_CNTR_CODE = cntId, |
| | | S_BS_NO = erpNo, |
| | | S_BS_TYPE = "ERP", |
| | | }; |
| | | |
| | | return TN_Task; |
| | | public static string GetAgvSite(string locCode) { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var loc = db.Queryable<TN_Location>().Where(l => l.S_CODE == locCode).First(); |
| | | return loc == null ? "0" : loc.S_AGV_SITE; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 创建搬送任务 |
| | | /// 起点出库锁(强制赋值,不会检查loc!=null,锁状态=无,需要传参前确认) |
| | | /// </summary> |
| | | /// <param name="no">编号</param> |
| | | /// <param name="from">起点</param> |
| | | /// <param name="to">终点</param> |
| | | /// <param name="taskType">任务类型</param> |
| | | /// <param name="pri">优先级</param> |
| | | /// <param name="cntrInfo">容器编码</param> |
| | | /// <returns></returns> |
| | | internal static bool CreateTask(string from, string to, string taskType, int pri, string cntrInfo) { |
| | | var fromLoc = LocationHelper.GetLocation(from); |
| | | var endLoc = LocationHelper.GetLocation(to); |
| | | /// <param name="loc"></param> |
| | | /// <param name="lockSource"></param> |
| | | public static void LockStartLoc(ref TN_Location loc, string lockSource = "") { |
| | | loc.N_LOCK_STATE = 2; // 起点出库锁 |
| | | loc.S_LOCK_STATE = TN_Location.GetLockStateStr(2); // 起点出库锁 |
| | | loc.S_LOCK_OP = lockSource; |
| | | loc.T_MODIFY = System.DateTime.Now; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 终点入库锁(强制赋值,不会检查loc!=null,锁状态=无,需要传参前确认) |
| | | /// </summary> |
| | | /// <param name="loc"></param> |
| | | /// <param name="lockSource"></param> |
| | | public static void LockEndLoc(ref TN_Location loc, string lockSource = "") { |
| | | loc.N_LOCK_STATE = 1; // 终点出库锁 |
| | | loc.S_LOCK_STATE = TN_Location.GetLockStateStr(1); // 终点出库锁 |
| | | loc.S_LOCK_OP = lockSource; |
| | | loc.T_MODIFY = System.DateTime.Now; |
| | | } |
| | | |
| | | public static TN_Task BuildTask(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agvType = 1) { |
| | | TN_Task TN_Task = new TN_Task() { |
| | | S_CODE = GenerateTaskNo(), |
| | | S_START_AREA = fromLoc.S_AREA_CODE, |
| | | S_START_AREA = startLoc.S_AREA_CODE, |
| | | S_END_AREA = endLoc.S_AREA_CODE, |
| | | S_START_LOC = from, |
| | | S_END_LOC = to, |
| | | S_TYPE = taskType, |
| | | S_START_LOC = startLoc.S_CODE, |
| | | S_END_LOC = endLoc.S_CODE, |
| | | S_TYPE = type, |
| | | N_PRIORITY = pri, |
| | | N_SCHEDULE_TYPE = 1, |
| | | N_B_STATE = 0, |
| | | S_CNTR_CODE = cntrInfo, |
| | | N_SCHEDULE_TYPE = agvType, |
| | | N_B_STATE = 0, // 任务创建时,默认等待 |
| | | S_CNTR_CODE = cntId, |
| | | }; |
| | | |
| | | var log = JsonConvert.SerializeObject(TN_Task); |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | var res = db.Insertable(TN_Task).ExecuteCommand() > 0; |
| | | if (res) { |
| | | LogHelper.Info($"插入任务成功,{log}"); |
| | | } |
| | | else { |
| | | LogHelper.Info($"插入任务失败,{log}"); |
| | | } |
| | | return res; |
| | | |
| | | return TN_Task; |
| | | } |
| | | |
| | | public static bool CreateTask(List<CreateTasks> modes) { |
| | | if (modes != null && modes.Count > 0) { |
| | | List<TN_Task> tN_Tasks = new List<TN_Task>(); |
| | | |
| | | foreach (var item in modes) { |
| | | |
| | | var fromLoc = LocationHelper.GetLocation(item.from); |
| | | var endLoc = LocationHelper.GetLocation(item.to); |
| | | |
| | | tN_Tasks.Add(new TN_Task() { |
| | | S_CODE = GenerateTaskNo(), |
| | | S_START_AREA = fromLoc.S_AREA_CODE, |
| | | S_END_AREA = endLoc.S_AREA_CODE, |
| | | S_START_LOC = item.from, |
| | | S_END_LOC = item.to, |
| | | S_TYPE = item.taskType, |
| | | N_PRIORITY = item.pri, |
| | | N_SCHEDULE_TYPE = 1, |
| | | N_B_STATE = 0, |
| | | S_CNTR_CODE = item.cntrInfo, |
| | | }); |
| | | } |
| | | var log = JsonConvert.SerializeObject(tN_Tasks); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var res = db.Insertable<TN_Task>(tN_Tasks).ExecuteCommand() > 0; |
| | | if (res) { |
| | | LogHelper.Info($"插入任务成功,{log}"); |
| | | } |
| | | else { |
| | | LogHelper.Info($"插入任务失败,{log}"); |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | |
| | | internal static bool CheckActionRecordExist(string no, int code) { |
| | | var db = new SqlHelper<TN_Task_Action>().GetInstance(); |
| | |
| | | internal static void Begin(TN_Task task, string forklift_no) { |
| | | var db = new SqlHelper<TN_Task>().GetInstance(); |
| | | if (task != null) { |
| | | if (task.N_B_STATE == 1) { |
| | | if (task.N_B_STATE == 1 || task.N_B_STATE == 0) { // 添加当task状态为0时也可以触发 |
| | | 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 class CreateTasks { |
| | | public string from { set; get; } |
| | | public string to { set; get; } |
| | | public string taskType { set; get; } |
| | | public int pri { set; get; } |
| | | public string cntrInfo { set; get; } |
| | | } |
| | | } |