| | |
| | | public static class PLCService |
| | | { |
| | | private static readonly object OLock = new object(); |
| | | private static readonly object RuKuLock = new object(); |
| | | private static readonly object OutLock = new object(); |
| | | |
| | | private static readonly ISqlSugarClient _db = SqlSugarSetup.ITenant.GetConnectionScope(SqlSugarConst.MainConfigId); |
| | | private static decimal weight94 = 0; |
| | |
| | | { |
| | | #region 跨跺机任务处理 ########### |
| | | // 判断目标位置是否是跨跺机出库工位 |
| | | if (modTask.EndLocate == "266" && modTask.StartRoadway != "R05") |
| | | if (modTask.EndLocate == "266")// && modTask.StartRoadway != "R05" |
| | | { |
| | | // 判断入库工位是否存在未完成的入库任务 |
| | | var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc) |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 获取1楼中专工位号 |
| | | taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; |
| | | taskInfo.EndPai = "2"; |
| | | taskInfo.EndLie = "60"; |
| | | taskInfo.EndCeng = "1"; |
| | | taskInfo.EndStation = aaa; |
| | | if (modTask.StartRoadway != "R05") |
| | | { |
| | | string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 获取1楼中专工位号 |
| | | taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; |
| | | taskInfo.EndPai = "2"; |
| | | taskInfo.EndLie = "60"; |
| | | taskInfo.EndCeng = "1"; |
| | | taskInfo.EndStation = aaa; |
| | | } |
| | | |
| | | } |
| | | |
| | | if (modTask.EndLocate == "265" && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06") |
| | | if (modTask.EndLocate == "265") // && modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06" |
| | | { |
| | | // 判断入库工位是否存在未完成的入库任务 |
| | | var modInTask = _db.Queryable<WcsTask>().OrderBy(m => m.Levels, OrderByType.Asc).OrderBy(m => m.CreateTime, OrderByType.Asc) |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 获取1楼中专工位号 |
| | | taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; |
| | | taskInfo.EndPai = "2"; |
| | | taskInfo.EndLie = "60"; |
| | | taskInfo.EndCeng = "1"; |
| | | taskInfo.EndStation = aaa; |
| | | if (modTask.StartRoadway != "R05" && modTask.StartRoadway != "R06") |
| | | { |
| | | string aaa = PLCCommon.RoadwayToOutStationNum(modTask.StartRoadway, "1"); // 获取1楼中专工位号 |
| | | taskInfo.Ip = PLCCommon.GetPlcIp(aaa).PlcIP; |
| | | taskInfo.EndPai = "2"; |
| | | taskInfo.EndLie = "60"; |
| | | taskInfo.EndCeng = "1"; |
| | | taskInfo.EndStation = aaa; |
| | | } |
| | | } |
| | | |
| | | // 写入放货工位固定地址 |
| | |
| | | #endregion |
| | | |
| | | var http = new HttpService(); |
| | | string TaskNo = ""; |
| | | // 向WMS申请储位信息 |
| | | strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); |
| | | string TaskNo = ""; |
| | | lock (RuKuLock) |
| | | { |
| | | // 向WMS申请储位信息 |
| | | strMsg = http.RequestLocate(palletVal, modDevice.StationNum, taskModel, roadway, ref TaskNo, (int)taskInfo2.PalletQty); |
| | | } |
| | | |
| | | // 根据任务号获取起始工位地址,根据起始工位地址获取LEDIP 推送到LED屏幕。 |
| | | var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == TaskNo); |
| | |
| | | TaskType = ((int)TaskTypeEnum.Out).ToString(), |
| | | TaskStatus = ((int)TaskStatusEnum.Complete).ToString() |
| | | }; |
| | | HttpService httpService = new HttpService(); |
| | | var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | if (modResponseTask.StatusCode == 0) |
| | | { |
| | | modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成"; |
| | | } |
| | | else |
| | | { |
| | | Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg)); |
| | | lock(OutLock) |
| | | { |
| | | HttpService httpService = new HttpService(); |
| | | var modResponseTask = httpService.RequestTask(requestMode).Result; |
| | | if (modResponseTask.StatusCode == 0) |
| | | { |
| | | modInsertTaskMonitor.InteractiveMsg += ",返回给WMS任务完成"; |
| | | } |
| | | else |
| | | { |
| | | Log.Error(string.Format("任务反馈失败:StatusCode:{0};Msg:{1}", modResponseTask.StatusCode, modResponseTask.Msg)); |
| | | } |
| | | } |
| | | } |
| | | |