| | |
| | | using HH.WCS.ZhongCeJinTan.device; |
| | | using HH.WCS.ZhongCeJinTan.api; |
| | | 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 |
| | | { |
| | |
| | | { |
| | | 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}创建失败", "任务"); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | 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(); |
| | | |
| | | TaskHelper.opMesTask(task1, 0); |
| | | } |
| | | else |
| | | { |
| | |
| | | |
| | | var count = LocationHelper.GetConnectionTaskCount(operation.CONNECTION); |
| | | LogHelper.Info($"CreateOneTask 作业:{operation.S_CODE},接驳位:{operation.CONNECTION},任务数量:{count}", "任务"); |
| | | if (count<4) |
| | | if (count<=2) |
| | | { |
| | | |
| | | // 任务1 |
| | |
| | | |
| | | if (CreateTask(task1) && CreateTask(task2)) |
| | | { |
| | | LocationHelper.LockLoc(operation.S_START_LOC, "出库锁", 2); |
| | | LocationHelper.LockLoc(operation.S_END_LOC, "入库锁", 1); |
| | | LocationHelper.LockLoc(operation.CONNECTION, "入库锁", 1); |
| | | //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 |
| | | { |
| | |
| | | }; |
| | | 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 interact = new |
| | | { |
| | | taskNo = task.S_OP_CODE,//任务号 |
| | | updater = "WMS",// 操作人 如WMS/MES等 |
| | | endStock = task.S_END_LOC,//终点 |
| | | taskStatus = state,//0:初始状态,1:进行中,2:完成,3:任务取消 |
| | | updateTime = DateTime.Now.ToString()//操作时间 |
| | | }; |
| | | 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(); |
| | | |
| | |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | |
| | | return db.Queryable<UnlimitedLoc>().ToList(); |
| | | return db.Queryable<UnlimitedLoc>().Where(a=>a.Enable=="Y").ToList(); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |