using System; using System.Collections.Generic; using HH.WCS.Mobox3.RiDong.models; using HH.WCS.Mobox3.RiDong.util; using Task = HH.WCS.Mobox3.RiDong.models.Task; namespace HH.WCS.Mobox3.RiDong.wms; internal class WCSHelper { internal static string GenerateTaskNo() { var id = SYSHelper.GetSerialNumber("任务号", "TN"); var date = DateTime.Now.ToString("yyMMdd"); return $"TN{date}{id.ToString().PadLeft(4, '0')}"; } internal static bool UpdateStatus(Task task, string status) { var res = false; var db = new SqlHelper().GetInstance(); task.S_B_STATE = status; db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand(); return res; } internal static bool UpdateStatus(Task task) { var res = false; var db = new SqlHelper().GetInstance(); task.S_B_STATE = 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(); return res; } // internal static bool UpdateEQNo(Task task) { // var res = false; // var db = new SqlHelper().GetInstance(); // task.T_MODIFY = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand(); // return res; // } internal static bool UpdateInfo(Task task, string sourceNo, string endBit, string status) { var res = false; var db = new SqlHelper().GetInstance(); task.S_B_STATE = status; task.S_OP_CODE = sourceNo; task.S_END_LOC = endBit; db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.S_OP_CODE, it.S_END_LOC }).ExecuteCommand(); return res; } internal static Task GetTask(string no) { var db = new SqlHelper().GetInstance(); var task = db.Queryable().Where(a => a.S_CODE == no).First(); return task; } internal static Task GetTaskBySrcNo(string no) { var db = new SqlHelper().GetInstance(); var task = db.Queryable().Where(a => a.S_OP_CODE == no).First(); return task; } internal static List GetTaskByStart(string bit) { var db = new SqlHelper().GetInstance(); var task = db.Queryable().Where(a => a.S_START_LOC == bit).ToList(); return task; } internal static List GetTaskByEnd(string bit) { var db = new SqlHelper().GetInstance(); var task = db.Queryable().Where(a => a.S_END_LOC == bit).ToList(); return task; } internal static List GetTaskByType(string taskType) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.S_TYPE == taskType).ToList(); } // internal static bool CreateTask(string no, string from, string to, string taskType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1) { // var fromLoc = LocationHelper.GetLocation(from); // var endLoc = LocationHelper.GetLocation(to); // Task TN_Task = new Task() // { // S_CODE = GenerateTaskNo(), // S_START_AREA = fromLoc.S_AREA_CODE, // S_END_AREA = endLoc.S_AREA_CODE, // S_START_LOC = from, // S_END_LOC = to, // S_TYPE = taskType, // S_OP_CODE = no, // N_PRIORITY = pri, // N_SCHEDULE_TYPE = 1, // N_B_STATE = 0, // S_CNTR_CODE = cntrInfo, // N_START_LAYER = startLayer, // N_END_LAYER = endLayer, // N_CNTR_COUNT = cntrCount // // }; // // return CreateTask(TN_Task); // } // internal static bool CreateTask(string no, Location from, Location to, string taskType, int scheduleType, int pri, string cntrInfo, int cntrCount = 1, int startLayer = 1, int endLayer = 1) { // Task TN_Task = new Task() // { // S_CODE = GenerateTaskNo(), // S_START_AREA = from.S_AREA_CODE, // S_END_AREA = to.S_AREA_CODE, // S_START_LOC = from.S_CODE, // S_END_LOC = to.S_CODE, // S_TYPE = taskType, // S_OP_CODE = no, // N_PRIORITY = pri, // N_SCHEDULE_TYPE = scheduleType, // S_B_STATE = Task.GetStateStr(0), // S_SCHEDULE_TYPE = Task.GetSchedule(scheduleType), // S_CNTR_CODE = cntrInfo, // N_START_LAYER = startLayer, // N_END_LAYER = endLayer, // N_CNTR_COUNT = cntrCount // // }; // return CreateTask(TN_Task); // } internal static bool CheckExist(string no) { return GetTask(no) != null; } internal static bool UpdateStatus(string no, int state) { var res = false; var db = new SqlHelper().GetInstance(); var task = db.Queryable().Where(a => a.S_CODE == no).First(); if (task != null) { task.N_B_STATE = state; task.S_B_STATE = Task.GetStateStr(state); //需要判断任务是否失败或者已完成,不允许再修改 res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand() > 0; } return res; } /// /// 添加小车交互步骤 /// /// /// /// /// /// internal static bool AddActionRecord(string no, int state, string forkliftNo, string extData) { var db = new SqlHelper().GetInstance(); var action = new TaskAction() { N_ACTION_CODE = state, S_TASK_CODE = no, S_EQ_CODE = forkliftNo, S_EQ_TYPE = "agv", S_DATA = extData }; return db.Insertable(action).ExecuteCommand() > 0; } internal static bool CheckActionRecordExist(string no, int code) { var db = new SqlHelper().GetInstance(); return db.Queryable().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0; } internal static void Begin(Task task) { var db = new SqlHelper().GetInstance(); if (task != null) { if (task.N_B_STATE == 1) { task.N_B_STATE = 2; task.S_B_STATE = Task.GetStateStr(task.N_B_STATE); task.T_START_TIME = DateTime.Now; db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME }).ExecuteCommand(); } } } internal static void Begin2(Task task) { var db = new SqlHelper().GetInstance(); if (task != null) { if (task.N_B_STATE == 1) { task.T_START_TIME = DateTime.Now; db.Updateable(task).UpdateColumns(it => new { it.T_START_TIME }).ExecuteCommand(); } } } internal static void End(Task task) { var db = new SqlHelper().GetInstance(); if (task != null) { task.N_B_STATE = 3; task.S_B_STATE = Task.GetStateStr(task.N_B_STATE); task.T_END_TIME = DateTime.Now; db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_END_TIME }).ExecuteCommand(); } } internal static void Fail(Task task) { var db = new SqlHelper().GetInstance(); if (task != null) { //判断有没有取货完成,没有就变成失败。有取货完成默认完成了(跟据项目而定,有些项目人工拉走了也没有放到终点)。 task.N_B_STATE = 4; task.S_B_STATE = Task.GetStateStr(task.N_B_STATE); db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); } } internal static bool CreateTask(Task TN_Task) { try { var db = new SqlHelper().GetInstance(); return db.Insertable(TN_Task).ExecuteCommand() > 0; } catch (Exception ex) { Console.WriteLine(ex.Message); throw; } } /// /// 根据任务状态获取任务 /// /// /// internal static List GetTaskListByState(string status) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.S_B_STATE == status).ToList(); } internal static List GetTaskListByState(int state) { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.N_B_STATE == state).ToList(); } internal static List GetWaitingTaskList() { var db = new SqlHelper().GetInstance(); return db.Queryable().Where(a => a.N_B_STATE == 0).ToList(); } }