| | |
| | | { |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | // 写入放货工位固定地址 |
| | |
| | | var retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640"); |
| | | if (retc.IsSucceed) |
| | | { |
| | | // 再次读取wcs控制字,确保写入成功640 |
| | | var (ress2, va1s2) = plcConveyorConn.GetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos); |
| | | if (va1s2.ToString() == "630")//还是等于630说明640没有写入成功,再次写入640 |
| | | { |
| | | retc = plcConveyorConn.SetPlcDBValue(ConveyorMod.PosType, ConveyorMod.DbNumber, ConveyorMod.WcsPos, "640"); |
| | | Log.Information($"840垛机取货完成写入640失败后再次写入,DbNumber:{ConveyorMod.DbNumber}"); |
| | | } |
| | | |
| | | modcTaskMonitor.InteractiveMsg = string.Format("工位:{0},写入取货完成:640", startStationVal); |
| | | // 插入交互日志 |
| | | _db.Insertable(modcTaskMonitor).ExecuteCommand(); |
| | |
| | | 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)); |
| | | } |
| | | } |
| | | } |
| | | |