| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading;
 
- using WCS.Data;
 
- using WCS.Data.Models;
 
- using WCS.Data.Utils;
 
- using WCS.PLC.Model.Equipment;
 
- using static WCS.PLC.Base_Conv;
 
- namespace WCS.PLC
 
- {
 
-     public class ConveyorHelper
 
-     {
 
-         /// <summary>
 
-         /// 获取输送线信号
 
-         /// </summary>
 
-         /// <param name="plc_name"></param>
 
-         /// <param name="conveyorNo"></param>
 
-         /// <returns></returns>
 
-         public static ConvSignal GetConveyorSignal(string plc_name, string conveyorNo)
 
-         {
 
-             var plc = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == plc_name);
 
-             var conveyor = plc.WCS_EquipmentInfoSet.FirstOrDefault(v => v.Equ_No == conveyorNo);
 
-             if (conveyor == null)
 
-             {
 
-                 Log4netHelper.Logger_Info.InfoFormat("plc:" + plc_name + "输送线:" + conveyorNo);
 
-                 return null;
 
-             }
 
-             return conveyor.EquSignal_Conv;
 
-         }
 
-         private static List<string> QuerySrmList(List<string> srms)
 
-         {
 
-             var result = new List<string>();
 
-             Dictionary<string, int> dicsrm = new Dictionary<string, int>();
 
-             foreach (var item in srms)
 
-             {
 
-                 string srm = string.Format("srm0{0}", item);
 
-                 int taskcount = Current.TaskSet.Where(v => v.TASK_COMTYPE == 1 && v.TASK_WKSTATUS == 2 && v.TASK_SRMNO == srm).Count();
 
-                 dicsrm.Add(srm, taskcount);
 
-             }
 
-             result = dicsrm.OrderBy(v => v.Value).Select(t => t.Key).ToList();
 
-             return result;
 
-         }
 
-         private static Dictionary<string, int> QueryDicList(List<string> srms)
 
-         {
 
-             Dictionary<string, int> dicsrm = new Dictionary<string, int>();
 
-             foreach (var item in srms)
 
-             {
 
-                 string srm = string.Format("srm0{0}", item);
 
-                 int taskcount = Current.TaskSet.Where(v => v.TASK_COMTYPE == 1 && v.TASK_WKSTATUS == 2 && v.TASK_SRMNO == srm).Count();
 
-                 dicsrm.Add(srm, taskcount);
 
-             }
 
-             return dicsrm;
 
-         }
 
-         /// <summary>
 
-         /// 看板提示
 
-         /// </summary>
 
-         /// <param name="equipmentNo"></param>
 
-         /// <param name="alaram"></param>
 
-         /// <param name="writeCount"></param>
 
-         public static void AddLedAlarmsMsg(string equipmentNo, string alaram, int writeCount = 100)
 
-         {
 
-             var time = SugarBase.DB.GetDate();//获取当前时间
 
-             var alarmsmsgSet = SugarBase.DB.Queryable<WCS_LEDALARMSMSG>().Where(v => v.LED_CONVYORNO == equipmentNo).ToList();
 
-             if (alarmsmsgSet.Count() < writeCount)
 
-             {
 
-                 WCS_LEDALARMSMSG updateAlaram = null;
 
-                 var alarams = alarmsmsgSet.OrderByDescending(v => v.LED_UPDATETIME).ToList();
 
-                 if (alarams.Count > 0)
 
-                 {
 
-                     if (alarams[0].LED_ALARMSMSG == alaram)
 
-                     {
 
-                         updateAlaram = alarams[0];
 
-                     }
 
-                 }
 
-                 if (updateAlaram == null)
 
-                 {
 
-                     //添加
 
-                     var alarmsmsg = new WCS_LEDALARMSMSG();
 
-                     alarmsmsg.LED_ID = Guid.NewGuid().ToString();
 
-                     alarmsmsg.LED_ADDRESS = string.Empty;
 
-                     alarmsmsg.LED_CONVYORNO = equipmentNo;
 
-                     alarmsmsg.LED_NO = "1";
 
-                     alarmsmsg.LED_ALARMSMSG = alaram;
 
-                     alarmsmsg.LED_DEFAULTMESSAGE = Current.LED_DEFAULTMESSAGE;
 
-                     alarmsmsg.LED_UPDATETIME = time;
 
-                     alarmsmsg.LED_NOTES = string.Empty;
 
-                     SugarBase.DB.Insertable(alarmsmsg).ExecuteCommand();
 
-                 }
 
-                 else if (updateAlaram.LED_UPDATETIME.AddMilliseconds(3) < time)
 
-                 {
 
-                     //更新时间大于3秒,更新最新提示
 
-                     SugarBase.DB.Updateable<WCS_LEDALARMSMSG>(it => new WCS_LEDALARMSMSG() { LED_UPDATETIME = time })
 
-                              .Where(it => it.LED_ID == updateAlaram.LED_ID)
 
-                              .ExecuteCommand();
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 var alaitem = alarmsmsgSet.OrderByDescending(v => v.LED_UPDATETIME).ToList()[0];
 
-                 if (alaitem.LED_ALARMSMSG != alaram)
 
-                 {
 
-                     var alaramsmsgitem = alarmsmsgSet.OrderBy(v => v.LED_UPDATETIME).ToList()[0];
 
-                     //更新最新提示
 
-                     SugarBase.DB.Updateable<WCS_LEDALARMSMSG>(it => new WCS_LEDALARMSMSG() { LED_ALARMSMSG = alaram, LED_UPDATETIME = time })
 
-                              .Where(it => it.LED_ID == alaramsmsgitem.LED_ID)
 
-                              .ExecuteCommand();
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 入口是否报警
 
-         /// </summary>
 
-         public static bool ConvGoodsAlarms(string convNo, ConvSignal cs)
 
-         {
 
-             var alarmsMsg = new StringBuilder();
 
-             if (cs.DB521_Goods_Err)
 
-             {
 
-                 alarmsMsg.Append(string.Format("外形/条码等故障"));
 
-             }
 
-             if (cs.DB521_F_Outside)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("前超长故障"));
 
-             }
 
-             if (cs.DB521_B_Outside)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("后超长故障"));
 
-             }
 
-             if (cs.DB521_L_Outside)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("左超长故障"));
 
-             }
 
-             if (cs.DB521_R_Outside)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("右超长故障"));
 
-             }
 
-             if (cs.DB521_H_Outside)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("超高故障"));
 
-             }
 
-             if (cs.DB521_BCR_Noread)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("条码未读出"));
 
-             }
 
-             if (cs.DB521_Overload)
 
-             {
 
-                 if (alarmsMsg.Length > 0)
 
-                 {
 
-                     alarmsMsg.Append(";");
 
-                 }
 
-                 alarmsMsg.Append(string.Format("超重"));
 
-             }
 
-             if (alarmsMsg.Length > 0)
 
-             {
 
-                 string result = string.Format("输送线[{0}]货物[{1}]", convNo, alarmsMsg.ToString());
 
-                 Log4netHelper.Logger_Error.ErrorFormat(result);
 
-                 return true;
 
-             }
 
-             else
 
-             {
 
-                 return false;
 
-             }
 
-         }
 
-         internal static string QueryTunnel(string wmstaskno, string tunnelNum,out string srmNo)
 
-         {
 
-             string tunnelNo = string.Empty;
 
-             srmNo = string.Empty;
 
-             var tunnelList = tunnelNum.Split(',').ToList();
 
-             //根据物料缓存状态统计堆垛机入库任务数量
 
-             var SrmCacheInfoSet = QuerySrmInConvCacheInfoList(tunnelList);
 
-             foreach (var item in tunnelList)
 
-             {
 
-                 var srmitem = SrmCacheInfoSet.FirstOrDefault(v => v.SrmTunnel == item);
 
-                 if (srmitem.ConvCacheIsAvailable)
 
-                 {
 
-                     //var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srmitem.SrmNo);
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                     tunnelNo = srmitem.SrmTunnel;
 
-                     srmNo = srmitem.SrmNo;
 
-                     break;
 
-                 }
 
-             }
 
-             if (string.IsNullOrWhiteSpace(tunnelNo))
 
-             {
 
-                 var SrmCacheInfoList = SrmCacheInfoSet.OrderBy(v => v.ConvCacheInTaskCount).ToList();
 
-                 foreach (var tunnelInfo in SrmCacheInfoList)
 
-                 {
 
-                     //var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srm);
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                     tunnelNo = tunnelInfo.SrmTunnel;
 
-                     srmNo = tunnelInfo.SrmNo;
 
-                     break;
 
-                 }
 
-             }
 
-             if (string.IsNullOrWhiteSpace(tunnelNo))
 
-             {
 
-                 throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,WMS返回的巷道[{1}]在WCS系统中未找到。", wmstaskno, tunnelNum));
 
-             }
 
-             return tunnelNo;
 
-         }
 
-         internal static string AssignSrm(string convNo, string tunnelNum)
 
-         {
 
-             string srmno = string.Empty;
 
-             var routeSet = EquRouteHelper.QueryRoute(convNo, "srm");
 
-             var srmList = tunnelNum.Split(',').ToList();
 
-             //根据物料缓存状态统计堆垛机入库任务数量
 
-             //var dicsrm = QueryDicList(srmList);
 
-             var SrmCacheInfoSet = QuerySrmInConvCacheInfoList(srmList);
 
-             foreach (var item in srmList)
 
-             {
 
-                 //if (srm == "srm03" || srm == "srm01" || srm == "srm04")
 
-                 //{
 
-                 var srmitem = SrmCacheInfoSet.FirstOrDefault(v => v.SrmTunnel == item);
 
-                 if (srmitem.ConvCacheIsAvailable)
 
-                 {
 
-                     var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srmitem.SrmNo);
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                     var touteTo = routeSet.FirstOrDefault(v => v.ROUTE_SONPOS == srmitem.SrmNo);
 
-                     if (touteTo == null) continue;
 
-                     srmno = srmitem.SrmNo;
 
-                     break;
 
-                 }
 
-                 //}
 
-             }
 
-             if (string.IsNullOrWhiteSpace(srmno))
 
-             {
 
-                 var result = SrmCacheInfoSet.OrderBy(v => v.ConvCacheInTaskCount).Select(t => t.SrmNo).ToList();
 
-                 foreach (var srm in result)
 
-                 {
 
-                     //if (srm == "srm03" || srm == "srm01" || srm == "srm04")
 
-                     //{
 
-                     var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srm);
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                     //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                     var touteTo = routeSet.FirstOrDefault(v => v.ROUTE_SONPOS == srm);
 
-                     if (touteTo == null) continue;
 
-                     srmno = srm;
 
-                     break;
 
-                     //}
 
-                 }
 
-             }
 
-             return srmno;
 
-         }
 
-         internal static List<SrmInConvCacheInfo> QuerySrmInConvCacheInfoList(List<string> tunnels)
 
-         {
 
-             var srmList = new List<SrmInConvCacheInfo>();
 
-             foreach (var tunnel in tunnels)
 
-             {
 
-                 var syssetitem = Current.SysSets.Where(v => v.SET_ID.Contains("Tunnel")).FirstOrDefault(v => v.SET_VALUE == tunnel);
 
-                 int taskcount = Current.TaskSet.Where(v => v.TASK_COMTYPE == 1 && (v.TASK_WKSTATUS == 2 || v.TASK_WKSTATUS == 5) && v.TASK_EndTunnelNum == tunnel).Count();
 
-                 if (syssetitem.SET_TYPE == "srm01")
 
-                 {
 
-                     srmList.Add(new SrmInConvCacheInfo { SrmTunnel = tunnel, SrmNo = syssetitem.SET_TYPE, ConvCacheCount = 100, ConvCacheInTaskCount = taskcount });
 
-                 }
 
-                 else
 
-                 {
 
-                     srmList.Add(new SrmInConvCacheInfo { SrmTunnel = tunnel, SrmNo = syssetitem.SET_TYPE, ConvCacheCount = 2, ConvCacheInTaskCount = taskcount });
 
-                 }
 
-             }
 
-             return srmList;
 
-         }
 
-         /// <summary>
 
-         /// 分配堆垛机(分配巷道)
 
-         /// </summary>
 
-         /// <param name="routeSet">路由轨迹清单</param>
 
-         /// <param name="converywrite">要写入plc的信息</param>
 
-         /// <param name="task_no">任务号</param>
 
-         public static void AssignSrm(List<WCS_EQUIPMENTROUTE> routeSet, WCSWriteToConveyorSignal converywrite, int wmstaskNum)
 
-         {
 
-             var param = new GetTunnelListParam();
 
-             param.WMSTaskNum = wmstaskNum.ToString();
 
-             //分配巷道
 
-             var tunnelListReply = Current.WmsInterface.I_WCS_GetTunnelList(param);
 
-             if (tunnelListReply == null)
 
-             {
 
-                 throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[接口返回对象不正确,解析失败]", wmstaskNum));
 
-             }
 
-             else if (tunnelListReply.ResType)
 
-             {
 
-                 if (string.IsNullOrWhiteSpace(tunnelListReply.TunnelNum))
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[没有返回巷道列表]", wmstaskNum));
 
-                 }
 
-                 var srmList = tunnelListReply.TunnelNum.Split(',').ToList();
 
-                 //根据物料缓存状态统计堆垛机入库任务数量
 
-                 //var dicsrm = QueryDicList(srmList);
 
-                 var SrmCacheInfoSet = QuerySrmInConvCacheInfoList(srmList);
 
-                 foreach (var item in srmList)
 
-                 {
 
-                     //string srm = string.Empty;
 
-                     //if (item.Length == 2)
 
-                     //{
 
-                     //    srm = string.Format("srm{0}", item);
 
-                     //}
 
-                     //else
 
-                     //{
 
-                     //    srm = string.Format("srm0{0}", item);
 
-                     //}
 
-                     //if (srm == "srm03" || srm == "srm01" || srm == "srm04")
 
-                     //{
 
-                     var srmitem = SrmCacheInfoSet.FirstOrDefault(v => v.SrmTunnel == item);
 
-                     if (srmitem.ConvCacheIsAvailable)
 
-                     {
 
-                         var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srmitem.SrmNo);
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                         var touteTo = routeSet.FirstOrDefault(v => v.ROUTE_SONPOS == srmitem.SrmNo);
 
-                         if (touteTo == null) continue;
 
-                         converywrite.Goodsend = Convert.ToInt32(touteTo.ROUTE_STARTPOS);
 
-                         converywrite.Srmno = srmitem.SrmNo;
 
-                         break;
 
-                     }
 
-                     //}
 
-                 }
 
-                 if (converywrite.Goodsend <= 0)
 
-                 {
 
-                     var result = SrmCacheInfoSet.OrderBy(v => v.ConvCacheInTaskCount).Select(t => t.SrmNo).ToList();
 
-                     foreach (var srm in result)
 
-                     {
 
-                         //if (srm == "srm03" || srm == "srm01" || srm == "srm04")
 
-                         //{
 
-                         var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srm);
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                         var touteTo = routeSet.FirstOrDefault(v => v.ROUTE_SONPOS == srm);
 
-                         if (touteTo == null) continue;
 
-                         converywrite.Goodsend = Convert.ToInt32(touteTo.ROUTE_STARTPOS);
 
-                         converywrite.Srmno = srm;
 
-                         break;
 
-                         //}
 
-                     }
 
-                 }
 
-             }
 
-             if (converywrite.Goodsend <= 0)
 
-             {
 
-                 if (tunnelListReply.ResType)
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[WMS接口返回成功,设备信号因素导致失败]", wmstaskNum));
 
-                 }
 
-                 else
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[{1}]", wmstaskNum, tunnelListReply.ResMessage));
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 var result = TryCachHelper.TryExecute((db) =>
 
-                 {
 
-                     var task = db.Queryable<WCS_TASK>().First(v => v.TASK_NO == converywrite.Tasknum);
 
-                     db.Updateable<WCS_TASK>(it => new WCS_TASK()
 
-                     {
 
-                         TASK_POSIDTO = converywrite.Srmno,
 
-                         TASK_SRMNO = converywrite.Srmno,
 
-                         TASK_EDITUSERNO = "WCS",
 
-                         TASK_EDITDATETIME = DateTime.Now
 
-                     })
 
-                      .Where(it => it.TASK_NO == task.TASK_NO)
 
-                      .ExecuteCommand();
 
-                 });
 
-                 if (!string.IsNullOrWhiteSpace(result))
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道更新任务失败,原因[{1}]", wmstaskNum, result));
 
-                 }
 
-             }
 
-         }
 
-         public static void AssignSrm(WCS_TASK task)
 
-         {
 
-             try
 
-             {
 
-                 var param = new GetTunnelListParam();
 
-                 param.WMSTaskNum = task.TASK_WMSNO;
 
-                 //if (task.TASK_POSIDCUR == "1023" || task.TASK_POSIDNEXT == "1023")
 
-                 //{
 
-                     //var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == "srm01");
 
-                     //var srm = plctemp.WCS_EquipmentInfoSet.FirstOrDefault().EquSignal_Srm;
 
-                     //if (srm.DB521_ToRowPos == 1 || srm.DB521_ToRowPos == 2)
 
-                     //{
 
-                     //    param.Memo1 = "1";
 
-                     //}
 
-                     //else
 
-                     //{
 
-                     //    param.Memo1 = "2";
 
-                     //}
 
-                 //}
 
-                 //分配巷道
 
-                 var tunnelListReply = Current.WmsInterface.I_WCS_GetTunnelList(param);
 
-                 if (tunnelListReply == null)
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[接口返回对象不正确,解析失败]", task.TASK_WMSNO));
 
-                 }
 
-                 if (tunnelListReply.ResType)
 
-                 {
 
-                     if (string.IsNullOrWhiteSpace(tunnelListReply.TunnelNum))
 
-                     {
 
-                         throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[没有返回巷道列表]", task.TASK_WMSNO));
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[{1}]", task.TASK_WMSNO, tunnelListReply.ResMessage));
 
-                 }
 
-                 string tunnelNo = string.Empty;
 
-                 string tunnelSrmNo = string.Empty;
 
-                 var srmList = tunnelListReply.TunnelNum.Split(',').ToList();
 
-                 //根据物料缓存状态统计堆垛机入库任务数量
 
-                 var SrmCacheInfoSet = QuerySrmInConvCacheInfoList(srmList);
 
-                 foreach (var item in srmList)
 
-                 {
 
-                     var srmitem = SrmCacheInfoSet.FirstOrDefault(v => v.SrmTunnel == item);
 
-                     if (srmitem.ConvCacheIsAvailable)
 
-                     {
 
-                         //var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srmitem.SrmNo);
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                         tunnelNo = srmitem.SrmTunnel;
 
-                         tunnelSrmNo = srmitem.SrmNo;
 
-                         break;
 
-                     }
 
-                 }
 
-                 if (string.IsNullOrWhiteSpace(tunnelSrmNo))
 
-                 {
 
-                     var SrmCacheInfoList = SrmCacheInfoSet.OrderBy(v => v.ConvCacheInTaskCount).ToList();
 
-                     foreach (var tunnelInfo in SrmCacheInfoList)
 
-                     {
 
-                         //var plctemp = Current.PlcSet.FirstOrDefault(v => v.PLC_NAME == srm);
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.DB521_Auto_status != (int)SrmModeEnum.远程) continue;
 
-                         //if (plctemp.WCS_StackerDataSet[0].SrmSignalItem.SrmDB541_Alarm) continue;
 
-                         tunnelNo = tunnelInfo.SrmTunnel;
 
-                         tunnelSrmNo = tunnelInfo.SrmNo;
 
-                         break;
 
-                     }
 
-                 }
 
-                 if (string.IsNullOrWhiteSpace(tunnelSrmNo))
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,WMS返回的巷道[{1}]在WCS系统中未找到。", task.TASK_WMSNO, tunnelListReply.TunnelNum));
 
-                 }
 
-                 var result = TryCachHelper.TryExecute((db) =>
 
-                 {
 
-                     db.Updateable<WCS_TASK>(it => new WCS_TASK()
 
-                     {
 
-                         TASK_EndTunnelNum = tunnelNo,
 
-                         TASK_POSIDTO = tunnelSrmNo,
 
-                         TASK_SRMNO = tunnelSrmNo,
 
-                         TASK_EDITUSERNO = "WCS",
 
-                         TASK_EDITDATETIME = DateTime.Now
 
-                     })
 
-                      .Where(it => it.TASK_NO == task.TASK_NO)
 
-                      .ExecuteCommand();
 
-                 });
 
-                 if (string.IsNullOrWhiteSpace(result))
 
-                 {
 
-                     task.TASK_POSIDTO = tunnelSrmNo;
 
-                     task.TASK_EndTunnelNum = tunnelNo;
 
-                     task.TASK_SRMNO = tunnelSrmNo;
 
-                 }
 
-                 else
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道更新任务失败,原因[{1}]", task.TASK_WMSNO, result));
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 预分配巷道
 
-         /// </summary>
 
-         public static void PreparatoryAssignSrmTunnel(WCS_TASK task)
 
-         {
 
-             try
 
-             {
 
-                 var param = new GetTunnelListParam();
 
-                 param.WMSTaskNum = task.TASK_WMSNO;
 
-                 //分配巷道
 
-                 var tunnelListReply = Current.WmsInterface.I_WCS_GetTunnelList(param);
 
-                 if (tunnelListReply == null)
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[接口返回对象不正确,解析失败]", task.TASK_WMSNO));
 
-                 }
 
-                 if (tunnelListReply.ResType)
 
-                 {
 
-                     if (string.IsNullOrWhiteSpace(tunnelListReply.TunnelNum))
 
-                     {
 
-                         throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[没有返回巷道列表]", task.TASK_WMSNO));
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道失败,原因[{1}]", task.TASK_WMSNO, tunnelListReply.ResMessage));
 
-                 }
 
-                 var result = TryCachHelper.TryExecute((db) =>
 
-                 {
 
-                     db.Updateable<WCS_TASK>(it => new WCS_TASK()
 
-                     {
 
-                         TASK_ITEM7 = tunnelListReply.TunnelNum,
 
-                         TASK_EDITUSERNO = "WCS",
 
-                         TASK_EDITDATETIME = DateTime.Now
 
-                     })
 
-                      .Where(it => it.TASK_NO == task.TASK_NO)
 
-                      .ExecuteCommand();
 
-                 });
 
-                 if (!string.IsNullOrWhiteSpace(result))
 
-                 {
 
-                     throw new Exception(string.Format("WMS任务[{0}]分配巷道更新任务失败,原因[{1}]", task.TASK_WMSNO, result));
 
-                 }
 
-                 else
 
-                 {
 
-                     task.TASK_ITEM7 = tunnelListReply.TunnelNum;
 
-                 }
 
-             }
 
-             catch (Exception ex)
 
-             {
 
-                 LogMessageHelper.RecordLogMessage(ex);
 
-             }
 
-         }
 
-     }
 
-     public struct SrmInConvCacheInfo
 
-     {
 
-         /// <summary>
 
-         /// 巷道
 
-         /// </summary>
 
-         public string SrmTunnel { get; set; }
 
-         /// <summary>
 
-         /// 堆垛机
 
-         /// </summary>
 
-         public string SrmNo { get; set; }
 
-         /// <summary>
 
-         /// 输送线缓存数量
 
-         /// </summary>
 
-         public int ConvCacheCount { get; set;}
 
-         /// <summary>
 
-         /// 缓存中的入库任务数量
 
-         /// </summary>
 
-         public int ConvCacheInTaskCount { get; set; }
 
-         /// <summary>
 
-         /// 输送线缓存区是否够用
 
-         /// </summary>
 
-         public bool ConvCacheIsAvailable
 
-         {
 
-             get
 
-             {
 
-                 return ConvCacheCount > ConvCacheInTaskCount;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |