| | |
| | | using HH.WCS.JiaTong.wms; |
| | | using Microsoft.Owin.BuilderProperties; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using SqlSugar; |
| | | using System; |
| | | using System.Collections.Generic; |
| | |
| | | else |
| | | { |
| | | LogHelper.Info($"任务{mst.S_CODE} 托盘为空 ,只解锁货位"); |
| | | LocationHelper.UnlockLoc(mst.S_START_LOC); |
| | | LocationHelper.UnlockLocDeleteCntrs(mst.S_START_LOC); |
| | | } |
| | | } |
| | | else |
| | |
| | | } |
| | | else |
| | | { |
| | | |
| | | //起点终点解锁 |
| | | LocationHelper.UnLockLoc(mst.S_START_LOC); |
| | | LocationHelper.UnLockLoc(mst.S_END_LOC); |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | if (Device != null) |
| | | { |
| | | //写入失败重新写入 |
| | | while (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | if (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | Task.Run(() => |
| | | { |
| | | while (!S7Helper.WriteDpj(Device.address, 1001, 1)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | } |
| | | while (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | if (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | Task.Run(() => |
| | | { |
| | | while (!S7Helper.WriteDpj(Device.address, 1002, 0)) |
| | | { |
| | | Thread.Sleep(1000); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | else |
| | |
| | | else if (mst.S_TYPE == "电梯2") |
| | | { |
| | | var mst2 = mstbyEqno.Where(a => a.S_TYPE == "电梯1").First(); |
| | | if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成") |
| | | if (mst2 == null) |
| | | { |
| | | return result; |
| | | } |
| | | else |
| | | { |
| | | if (mst2.S_B_STATE == "卸货完成" || mst2.S_B_STATE == "完成") |
| | | { |
| | | return result; |
| | | } |
| | | result = false; |
| | | } |
| | | } |
| | |
| | | internal static bool SendTask(WCSTask mst) |
| | | { |
| | | |
| | | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = false; |
| | | var start = "0"; var end = "0"; |
| | | var taskType = mst.S_TYPE.Trim(); |
| | | var list = db.Queryable<Location>().ToList().Count; |
| | | |
| | | // if (mst.N_B_STATE == 0) { |
| | | if (mst.N_SCHEDULE_TYPE == 1) |
| | | { |
| | | LogHelper.Info($"任务推送数据:{JsonConvert.SerializeObject(mst)}"); |
| | | if (string.IsNullOrEmpty(mst.S_START_LOC) || string.IsNullOrEmpty(mst.S_END_LOC)) |
| | | { |
| | | LogHelper.Info($"任务{mst.S_CODE},起点终点有空参数,不推送任务"); |
| | | } |
| | | |
| | | |
| | | start = LocationHelper.GetAgvSite(mst.S_START_LOC); |
| | | end = LocationHelper.GetAgvSite(mst.S_END_LOC); |
| | | //if (mst.N_START_LAYER > 1) |
| | |
| | | //获取时间戳 |
| | | var time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); |
| | | statusarrive.RequestId = "杭叉AGV" + time; |
| | | |
| | | string info = ""; |
| | | switch (status) |
| | | { |
| | | case 1: |
| | | info = "agv已接受原料库下发的任务"; |
| | | break; |
| | | case 4: |
| | | info = "agv已取货完成"; |
| | | break; |
| | | case 6: |
| | | info = "agv已卸货到指定位置"; |
| | | break; |
| | | case 2: |
| | | info = "agv已完成送料任务"; |
| | | break; |
| | | } |
| | | string message = "1"; |
| | | if (status == 7) { message = "agv任务已取消"; } |
| | | int flag = 0; |
| | | if (mst.S_NOTE == "粉料") |
| | | { |
| | |
| | | statusArrive.Status = status.ToString(); |
| | | statusArrive.Rfid = mst.S_CNTR_CODE; |
| | | statusArrive.Flag = flag; |
| | | statusArrive.Info = info; |
| | | statusArrive.Message = message; |
| | | |
| | | //statusArrives.Add(statusArrive); |
| | | statusarrive.data = statusArrive; |
| | |
| | | |
| | | if (cntritem != null) |
| | | { |
| | | string curBagNum = null; |
| | | string weightBag = null; |
| | | if (cntritem.F_QTY > 0) |
| | | { |
| | | curBagNum = cntritem.F_QTY.ToString(); |
| | | } |
| | | if (!string.IsNullOrEmpty(cntritem.F_WEIGHT1) && int.Parse(cntritem.F_WEIGHT1) > 0) |
| | | { |
| | | weightBag = cntritem.F_WEIGHT1; |
| | | } |
| | | list.Add(new MesItemBackInfoModel() |
| | | { |
| | | |
| | | LotNumber = cntritem.S_BATCH_NO, |
| | | PartNumber = cntritem.S_ITEM_CODE, |
| | | Subpool = cntritem.Subpool, |
| | |
| | | Rfid = cntritem.S_CNTR_CODE, |
| | | Qty = cntritem.F_WEIGHT, |
| | | PartLevel = cntritem.LEV, |
| | | WmsLot = cntritem.WmsLot |
| | | WmsLot = cntritem.WmsLot, |
| | | WeightBag = weightBag, |
| | | CurBagNum = curBagNum, |
| | | InitBagNum = cntritem.F_QTY1 |
| | | }); |
| | | |
| | | |