| | |
| | | using HH.WCS.ZhongCeJinTan.device; |
| | | using HH.WCS.ZhongCeJinTan.api; |
| | | using HH.WCS.ZhongCeJinTan.core; |
| | | using HH.WCS.ZhongCeJinTan.device; |
| | | using HH.WCS.ZhongCeJinTan.dispatch; |
| | | using HH.WCS.ZhongCeJinTan.util; |
| | | using ICSharpCode.SharpZipLib.Zip; |
| | | using Newtonsoft.Json; |
| | | using SqlSugar; |
| | | using System; |
| | |
| | | using System.Xml.Linq; |
| | | using static HH.WCS.ZhongCeJinTan.util.Settings; |
| | | using static HH.WCS.ZhongCeJinTan.wms.WcsModel; |
| | | |
| | | |
| | | |
| | | namespace HH.WCS.ZhongCeJinTan.wms |
| | | { |
| | |
| | | var task = db.Queryable<WMSTask>().Where(a => a.S_CODE.Trim() == no).First(); |
| | | return task; |
| | | } |
| | | |
| | | //查找WCS立库任务 参数作业编码,调度类型 agv/wcs |
| | | internal static WMSTask GetTaskByWorkNo(string no,string type) |
| | | { |
| | | var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | var task = db.Queryable<WMSTask>().Where(a => a.S_OP_CODE == no && a.S_SCHEDULE_TYPE== type).First(); |
| | | return task; |
| | | } |
| | | |
| | | |
| | | internal static WmsWork GetWmsWork(string no) { |
| | | var db = new SqlHelper<WmsWork>().GetInstance(); |
| | | return db.Queryable<WmsWork>().Where(it => it.S_CODE == no).First(); |
| | | } |
| | | |
| | | |
| | | |
| | | internal static WMSTask GetTaskByCntrCode(string cntrCode) |
| | |
| | | CreateOneTask(operation); |
| | | break; |
| | | case 7: |
| | | //出库两段任务 |
| | | CreateOutTowTask(operation); |
| | | break; |
| | | case 9: |
| | |
| | | { |
| | | var tasks = new List<Task>(); |
| | | |
| | | |
| | | |
| | | // 任务1 |
| | | var task1 = new WMSTask() |
| | | { |
| | | // 作业编码 |
| | | S_OP_CODE = operation.S_CODE, |
| | | // 任务号 |
| | | S_CODE = GenerateTaskNo(), |
| | | S_CODE = operation.S_CODE + "_1", |
| | | // 任务类型 |
| | | N_TYPE = operation.N_TYPE, |
| | | // 任务类型 |
| | |
| | | S_START_LOC = operation.S_START_LOC, |
| | | // 起点库区 |
| | | S_START_AREA = operation.S_START_AREA, |
| | | //起点库区名称 |
| | | S_START_AREA_NAME = operation.S_START_AREA_NAME, |
| | | //终点库区名称 |
| | | S_END_AREA_NAME = operation.S_END_AREA_NAME, |
| | | // 终点货位 |
| | | S_END_LOC = operation.S_END_LOC, |
| | | // 终点库区 |
| | |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | |
| | | |
| | | |
| | | |
| | | }; |
| | | |
| | | try |
| | |
| | | { |
| | | LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | LogHelper.Info($"任务{task1.S_OP_CODE}创建成功", "任务"); |
| | | LogHelper.Info($"任务{task1.S_CODE}创建成功", "任务"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); |
| | | |
| | | TaskHelper.opMesTask(task1, 0); |
| | | } |
| | | else { |
| | | LogHelper.Info($"任务{task1.S_OP_CODE}创建失败", "任务"); |
| | | LogHelper.Info($"任务{task1.S_CODE}创建失败", "任务"); |
| | | } |
| | | |
| | | } |
| | |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | //起点库区名称 |
| | | S_START_AREA_NAME = operation.S_START_AREA_NAME, |
| | | //终点库区名称 |
| | | S_END_AREA_NAME = operation.CONNECTION_AREA, |
| | | |
| | | }; |
| | | |
| | |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | //起点库区名称 |
| | | S_START_AREA_NAME = operation.CONNECTION_AREA, |
| | | //终点库区名称 |
| | | S_END_AREA_NAME = operation.S_END_AREA_NAME, |
| | | }; |
| | | |
| | | try |
| | |
| | | |
| | | if (CreateTask(task1) && CreateTask(task2)) |
| | | { |
| | | LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | LocationHelper.LockLoc(operation.CONNECTION, "其他锁", 3); |
| | | //LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | //LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | //LocationHelper.LockLoc(operation.CONNECTION, "其他锁", 3); |
| | | LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建成功", "任务"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); |
| | | LogHelper.Info($"回报{task1.S_OP_CODE}", "回报Mes任务"); |
| | | TaskHelper.opMesTask(task1, 0); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | var ConnectionLoc = LocationHelper.GetLocOne(operation.CONNECTION); |
| | | |
| | | |
| | | // 任务1 |
| | | var task1 = new WMSTask() |
| | | var count = LocationHelper.GetConnectionTaskCount(operation.CONNECTION); |
| | | LogHelper.Info($"CreateOneTask 作业:{operation.S_CODE},接驳位:{operation.CONNECTION},任务数量:{count}", "任务"); |
| | | if (count<=2) |
| | | { |
| | | // 作业编码 |
| | | S_OP_CODE = operation.S_CODE, |
| | | // 任务号 |
| | | S_CODE = operation.S_CODE + "_2", |
| | | // 任务类型 |
| | | N_TYPE = operation.N_TYPE, |
| | | // 任务类型 |
| | | S_TYPE = operation.S_TYPE, |
| | | // 起点货位 |
| | | S_START_LOC = operation.S_START_LOC, |
| | | // 起点库区 |
| | | S_START_AREA = operation.S_START_AREA, |
| | | // 终点货位 |
| | | S_END_LOC = operation.CONNECTION, |
| | | // 终点库区 |
| | | S_END_AREA = ConnectionLoc.S_AREA_CODE, |
| | | // 设备类型 |
| | | N_SCHEDULE_TYPE = 2, |
| | | // 设备类型 |
| | | S_SCHEDULE_TYPE = "wcs", |
| | | // 容器编码 |
| | | S_CNTR_CODE = operation.S_CNTR_CODE, |
| | | //任务状态 |
| | | S_B_STATE = "未执行", |
| | | // 优先级 |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | }; |
| | | |
| | | // 任务2 |
| | | var task2 = new WMSTask() |
| | | { |
| | | // 作业编码 |
| | | S_OP_CODE = operation.S_CODE, |
| | | // 任务号 |
| | | S_CODE = operation.S_CODE + "_1", |
| | | // 任务类型 |
| | | N_TYPE = operation.N_TYPE, |
| | | // 任务类型 |
| | | S_TYPE = operation.S_TYPE, |
| | | // 起点货位 |
| | | S_START_LOC = operation.CONNECTION, |
| | | // 起点库区 |
| | | S_START_AREA = ConnectionLoc.S_AREA_CODE, |
| | | // 终点货位 |
| | | S_END_LOC = operation.S_END_LOC, |
| | | // 终点库区 |
| | | S_END_AREA = operation.S_END_AREA, |
| | | // 设备类型 |
| | | N_SCHEDULE_TYPE = 3, |
| | | // 设备类型 |
| | | S_SCHEDULE_TYPE = "agv", |
| | | // 容器编码 |
| | | S_CNTR_CODE = operation.S_CNTR_CODE, |
| | | //任务状态 |
| | | S_B_STATE = "未执行", |
| | | // 优先级 |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | }; |
| | | |
| | | try |
| | | { |
| | | // 修改作业状态为执行中 |
| | | operation.N_B_STATE = 1; |
| | | operation.S_B_STATE = "执行"; |
| | | |
| | | if (CreateTask(task1) && CreateTask(task2)) |
| | | // 任务1 |
| | | var task1 = new WMSTask() |
| | | { |
| | | LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | LocationHelper.LockLoc(operation.CONNECTION, "入库锁", 1); |
| | | LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建成功", "任务"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建失败", "任务"); |
| | | } |
| | | // 作业编码 |
| | | S_OP_CODE = operation.S_CODE, |
| | | // 任务号 |
| | | S_CODE = operation.S_CODE + "_1", |
| | | // 任务类型 |
| | | N_TYPE = operation.N_TYPE, |
| | | // 任务类型 |
| | | S_TYPE = operation.S_TYPE, |
| | | // 起点货位 |
| | | S_START_LOC = operation.S_START_LOC, |
| | | // 起点库区 |
| | | S_START_AREA = operation.S_START_AREA, |
| | | // 终点货位 |
| | | S_END_LOC = operation.CONNECTION, |
| | | // 终点库区 |
| | | S_END_AREA = ConnectionLoc.S_AREA_CODE, |
| | | // 设备类型 |
| | | N_SCHEDULE_TYPE = 2, |
| | | // 设备类型 |
| | | S_SCHEDULE_TYPE = "wcs", |
| | | // 容器编码 |
| | | S_CNTR_CODE = operation.S_CNTR_CODE, |
| | | //任务状态 |
| | | S_B_STATE = "未执行", |
| | | // 优先级 |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | //起点库区名称 |
| | | S_START_AREA_NAME = operation.S_START_AREA_NAME, |
| | | //终点库区名称 |
| | | S_END_AREA_NAME = operation.CONNECTION_AREA, |
| | | }; |
| | | |
| | | // 任务2 |
| | | var task2 = new WMSTask() |
| | | { |
| | | // 作业编码 |
| | | S_OP_CODE = operation.S_CODE, |
| | | // 任务号 |
| | | S_CODE = operation.S_CODE + "_2", |
| | | // 任务类型 |
| | | N_TYPE = operation.N_TYPE, |
| | | // 任务类型 |
| | | S_TYPE = operation.S_TYPE, |
| | | // 起点货位 |
| | | S_START_LOC = operation.CONNECTION, |
| | | // 起点库区 |
| | | S_START_AREA = ConnectionLoc.S_AREA_CODE, |
| | | // 终点货位 |
| | | S_END_LOC = operation.S_END_LOC, |
| | | // 终点库区 |
| | | S_END_AREA = operation.S_END_AREA, |
| | | // 设备类型 |
| | | N_SCHEDULE_TYPE = 3, |
| | | // 设备类型 |
| | | S_SCHEDULE_TYPE = "agv", |
| | | // 容器编码 |
| | | S_CNTR_CODE = operation.S_CNTR_CODE, |
| | | //任务状态 |
| | | S_B_STATE = "未执行", |
| | | // 优先级 |
| | | N_PRIORITY = operation.N_PRIORITY, |
| | | //工装类型 |
| | | TOOLSTYPE = operation.TOOLSTYPE, |
| | | //起点库区名称 |
| | | S_START_AREA_NAME = operation.CONNECTION_AREA, |
| | | //终点库区名称 |
| | | S_END_AREA_NAME = operation.S_END_AREA_NAME, |
| | | }; |
| | | |
| | | try |
| | | { |
| | | // 修改作业状态为执行中 |
| | | operation.N_B_STATE = 1; |
| | | operation.S_B_STATE = "执行"; |
| | | |
| | | if (CreateTask(task1) && CreateTask(task2)) |
| | | { |
| | | //LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | //LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | //LocationHelper.LockLoc(operation.CONNECTION, "入库锁", 1); |
| | | LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建成功", "任务"); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | db.Updateable(operation).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); |
| | | |
| | | TaskHelper.opMesTask(task2, 0); |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"任务{task1.S_CODE},{task2.S_CODE}创建失败", "任务"); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogHelper.Info("CreateOneTask异常信息" + e.Message, "任务"); |
| | | throw; |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogHelper.Info("CreateOneTask异常信息" + e.Message, "任务"); |
| | | throw; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | var db = new SqlHelper<WmsTaskAction>().GetInstance(); |
| | | var action = new WmsTaskAction() { |
| | | S_ACTION = state.ToString(), |
| | | N_ACTION_CODE = state, |
| | | S_TASK_CODE = no, |
| | | S_EQ_CODE = forkliftNo, |
| | | S_EQ_TYPE = "agv", |
| | |
| | | }; |
| | | return db.Insertable(action).ExecuteCommand() > 0; |
| | | } |
| | | internal static WmsTaskAction GetActionRecord(string taskNo,string action) |
| | | |
| | | internal static bool opMesTask(WMSTask task, int state) |
| | | { |
| | | |
| | | HttpHelper apiHelper = new HttpHelper(); |
| | | string baseUrl = Settings.MesApiAddres; |
| | | try |
| | | { |
| | | var cntrItem = ContainerHelper.GetCntrItem(task.S_CNTR_CODE); |
| | | if (cntrItem == null) |
| | | { |
| | | LogHelper.Info($"任务{task.S_CODE}没查到容器物料{task.S_CNTR_CODE}", "回报Mes任务"); |
| | | return false; |
| | | } |
| | | |
| | | var work = TaskHelper.GetWmsWork(task.S_OP_CODE); |
| | | |
| | | if (work == null) { |
| | | LogHelper.Info($"任务{task.S_CODE}没查到作业{task.S_OP_CODE}", "回报Mes任务"); |
| | | return false; |
| | | } |
| | | var endArea = ""; |
| | | |
| | | if (LocationHelper.GetErroArea(task.S_END_AREA)) |
| | | { |
| | | if (task.S_TYPE.Contains("出库")) |
| | | { |
| | | endArea = task.S_END_LOC; |
| | | } |
| | | else { |
| | | endArea = task.S_END_AREA; |
| | | } |
| | | |
| | | |
| | | } |
| | | else { |
| | | if (task.S_TYPE.Contains("出库")) |
| | | { |
| | | endArea = task.S_END_LOC; |
| | | } |
| | | else { |
| | | endArea = work.S_END_AREA; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | var interact = new |
| | | { |
| | | taskNo = task.S_OP_CODE,//任务号 |
| | | updater = "WMS",// 操作人 如WMS/MES等 |
| | | endStock = endArea,//终点 |
| | | taskStatus = state,//0:初始状态,1:进行中,2:完成,3:任务取消 |
| | | updateTime = DateTime.Now.ToString(),//操作时间 |
| | | TurnCardNum = cntrItem.TurnCardNum,//周转卡号 |
| | | TOOLS_NO = task.S_CNTR_CODE//工装编号 |
| | | |
| | | }; |
| | | LogHelper.Info("Mes更新任务状态 地址信息:" + baseUrl + "updateTask", "回报Mes任务"); |
| | | LogHelper.Info("Mes更新任务状态 参数信息:" + JsonConvert.SerializeObject(interact), "回报Mes任务"); |
| | | var result = apiHelper.Post(baseUrl + "updateTask", JsonConvert.SerializeObject(interact)); |
| | | LogHelper.Info("Mes更新任务状态 返回信息:" + JsonConvert.SerializeObject(result), "回报Mes任务"); |
| | | if (!string.IsNullOrEmpty(result)) |
| | | { |
| | | var res = JsonConvert.DeserializeObject<MesTaskReturn>(result); |
| | | if (res.success && res.code == "0") |
| | | { |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | return false; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info("Mes更新任务状态 返回信息为空", "回报Mes任务"); |
| | | return false; |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Info("Mes更新任务状态异常"+ex.Message, "回报Mes任务"); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | internal static WmsTaskAction GetActionRecord(string taskNo,string action) |
| | | { |
| | | var db = new SqlHelper<WmsTaskAction>().GetInstance(); |
| | | |
| | |
| | | return ac; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 任务拦截 |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | internal static bool Intercept() |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | var model = db.Queryable<ManualTaskSwitch>().First(); |
| | | if (model != null && model.State == "Y") |
| | | { |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | internal static bool WcsAddActionRecord(string no, string state, string forkliftNo, string extData = "0") |
| | |
| | | var action = new WmsTaskAction() |
| | | { |
| | | S_ACTION = state.ToString(), |
| | | N_ACTION_CODE = int.Parse(state), |
| | | S_TASK_CODE = no, |
| | | S_EQ_CODE = forkliftNo, |
| | | S_EQ_TYPE = "wcs", |
| | |
| | | var db = new SqlHelper<WmsTaskAction>().GetInstance(); |
| | | return db.Queryable<WmsTaskAction>().Count(a => a.S_TASK_CODE.Trim() == no.Trim() && a.S_ACTION == code) > 0; |
| | | } |
| | | internal static void Begin(WMSTask task,string avgNo) { |
| | | var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | if (task != null) { |
| | | if (task.S_B_STATE.Trim() == "已推送") { |
| | | task.S_B_STATE = "执行中"; |
| | | task.T_START_TIME = DateTime.Now; |
| | | task.S_EQ_NO = avgNo; |
| | | db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand(); |
| | | } |
| | | //internal static void Begin(WMSTask task,string avgNo) { |
| | | // var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | // if (task != null) { |
| | | // if (task.S_B_STATE.Trim() == "已推送") { |
| | | // task.S_B_STATE = "执行中"; |
| | | // task.T_START_TIME = DateTime.Now; |
| | | // task.S_EQ_NO = avgNo; |
| | | // db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand(); |
| | | // } |
| | | |
| | | } |
| | | } |
| | | // } |
| | | //} |
| | | |
| | | |
| | | internal static WcsRfidCheckoutEntitys GetRfid(string TaskCode) { |
| | |
| | | |
| | | |
| | | |
| | | internal static void Begin(WMSTask task) |
| | | internal static void Begin(WMSTask task, string avgNo="") |
| | | { |
| | | var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | if (task != null) |
| | |
| | | { |
| | | task.N_B_STATE = 2; |
| | | task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE); |
| | | task.S_EQ_NO = avgNo; |
| | | 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(); |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_START_TIME,it.S_EQ_NO }).ExecuteCommand(); |
| | | } |
| | | } |
| | | } |
| | |
| | | if (task.S_TYPE.Contains("出库") && task.S_SCHEDULE_TYPE.Contains("wcs")) { |
| | | LocationHelper.LockLoc(task.S_END_LOC, "出库锁", 2); |
| | | } |
| | | |
| | | if (task.S_TYPE.Contains("出库")&&task.S_SCHEDULE_TYPE.Contains("agv") ) |
| | | |
| | | if (task.S_SCHEDULE_TYPE.Contains("agv")) |
| | | { |
| | | |
| | | if (LocationHelper.GetErroArea(task.S_END_AREA)) |
| | | { |
| | | db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | | db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | | db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | | } |
| | | else |
| | | { |
| | | TaskHelper.opMesTask(task, 2); |
| | | } |
| | | } |
| | | |
| | | |
| | | if (task.S_TYPE.Contains("出库") && task.S_SCHEDULE_TYPE.Contains("agv")) |
| | | { |
| | | var location = db.Queryable<Location>().Where(a => a.S_CODE == task.S_END_LOC).First(); |
| | | location.N_CURRENT_NUM = 0; |
| | | db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM}).ExecuteCommand(); |
| | | db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM }).ExecuteCommand(); |
| | | db.Deleteable<Container>().Where(it => it.S_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | | db.Deleteable<LocCntrRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | | db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == task.S_CNTR_CODE).ExecuteCommand(); |
| | |
| | | { |
| | | task.N_B_STATE = 5; |
| | | task.S_B_STATE = WMSTask.GetStateStr(task.N_B_STATE); |
| | | db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand(); |
| | | 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 bool CreateTask(WMSTask wmsTask) { |
| | | var db = new SqlHelper<WMSTask>().GetInstance(); |
| | | |
| | | var task = db.Queryable<WMSTask>().Where(a => a.S_CODE == wmsTask.S_CODE).First(); |
| | | |
| | | if (task!=null) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | return db.Insertable(wmsTask).ExecuteCommand() > 0; |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 根据任务状态和起点和类型查找任务 |
| | | /// </summary> |
| | | /// <param name="state"></param> |
| | | /// <returns></returns> |
| | | internal static WMSTask GetTaskByType(string start,string type,string state) |
| | | { |
| | | try |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | return db.Queryable<WMSTask>().Where(a => a.S_B_STATE.Trim() == state && a.S_TYPE.Contains(type) && a.S_START_LOC.Contains(start)).First(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | return new WMSTask(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 根据作业编码和设备类型获取单个任务 |
| | | /// </summary> |
| | | /// <param name="state"></param> |
| | | /// <returns></returns> |
| | | internal static WMSTask GetTaskByWork(string eq, string opCode) |
| | | { |
| | | try |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | return db.Queryable<WMSTask>().Where(a => a.S_SCHEDULE_TYPE.Contains(eq) && a.S_OP_CODE.Contains(opCode)).First(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.Message, ex); |
| | | return new WMSTask(); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 返回当前接驳位执行中任务数量 |
| | | /// </summary> |
| | | internal static int GetConnectionTask(string Connection) |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | |
| | | var ConnectionList = 0; |
| | | ConnectionList = db.Queryable<WMSTask>().Where(a => a.S_END_LOC.Contains(Connection) && a.S_TYPE.Contains("出库") && a.S_B_STATE != "完成" && a.S_B_STATE != "取消" && a.S_B_STATE != "未执行").ToList().Count(); |
| | | |
| | | return ConnectionList; |
| | | } |
| | | |
| | | |
| | | //internal static bool CreateAgvState(AgvState agvState) |
| | | //{ |
| | | // try |
| | | // { |
| | | // var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | // return db.Insertable<AgvState>(agvState).ExecuteCommand() > 0; |
| | | // } |
| | | // catch (Exception ex) |
| | | // { |
| | | // LogHelper.Info($"添加Agv动作缓存异常" + ex.Message, "NDC"); |
| | | // throw; |
| | | // } |
| | | //} |
| | | |
| | | |
| | | internal static bool CreateMesKtTask(MesKtTask cntr) |
| | | { |
| | | try |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(ex.Message); |
| | | LogHelper.Info($"添加Mes空托缓存异常" + ex.Message, "Mes任务下发"); |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | |
| | | internal static MesKtTask GetMesKtTask(string end) |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<MesKtTask>().Where(a => a.Location_To==end && a.Status=="N").First(); |
| | | } |
| | | |
| | | internal static bool ChangeMesKtTask(MesKtTask kt) |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | kt.Status = "Y"; |
| | | return db.Updateable(kt).UpdateColumns(it => new { |
| | | it.Status |
| | | }).ExecuteCommand()>0; |
| | | |
| | | |
| | | } |
| | | |
| | | internal static List<UnlimitedLoc> GetMesKtLoc() |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<UnlimitedLoc>().Where(a=>a.Enable=="Y").ToList(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取入库优先级表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | internal static List<InPri> GetInPri() |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<InPri>().Where(a=>a.Enable=="Y") .ToList(); |
| | | } |
| | | /// <summary> |
| | | /// 获取出库提高优先级表 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | internal static OutMinutePriority GetOutMinutePriority() |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<OutMinutePriority>().Where(a => a.Enable == "Y").First(); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 添加agv动作缓存 |
| | | /// </summary> |
| | | /// <param name="agv"></param> |
| | | /// <returns></returns> |
| | | internal static bool CreateAgvActionState(AgvActionState agv) |
| | | { |
| | | try |
| | | { |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | return db.Insertable<AgvActionState>(agv).ExecuteCommand() > 0; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(ex.Message); |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 获取agv动作 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | internal static List<AgvActionState> GetAgvActionState( string taskNo) |
| | | { |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<AgvActionState>().Where(a => a.task_no==taskNo).ToList(); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |