山东时代原料后WCS代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6909 lines
342 KiB

using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System;
using System.Linq;
using CommLayerFactory;
using ICommLayer;
using DBFactory;
using CommonLib;
namespace WcfControlMonitorLib
{
/// <summary>
/// Creator:Richard.liu
/// ¼à¿Øµ÷¶ÈÀà
/// </summary>
public class CControl
{
int StackMutexXCoor = 4800;
int minStackMutexXCoor = 2400;
int StackZeroXCoor = 1950;
StringBuilder AheadDetectUnallow = new StringBuilder();//20110505
StringBuilder sql = new StringBuilder();
char[] dd = new char[1] { '.' };//20101124
string[] DS;//20101124
private Object thisLock = new Object();
DBOperator dbo = CStaticClass.dbo;
DBOperator dboM = CStaticClass.dboM;
Model.MDevice devinfo;
Model.MDevice devinfo11;//add by lyj 20180223
Model.MDevice devinfodaocha;//add by lyj 20171124
ISendDeviceOrder sdo;
CCommonFunction ccf = new CCommonFunction();
int _DeviceIdx = 0;//É豸Ë÷Òý
int _routeID = 0;//·¾¶Î¨Ò»Ë÷Òý
int _serialNumber = 0;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
int _ManageTaskIdx = 0;//µ÷¶ÈÈÎÎñË÷Òý
int _ManageKindIdx = 0;//µ÷¶ÈÈÎÎñÀàÐÍ
int _DeviceOrder = 0;//É豸ÃüÁî
int _LockedState = 0;
int _Associate = 0;
int _ManTaskReserve = 0;
string _AheadDetect = "";
int _NumParam1 = 0;
int _NumParam2 = 0;
int _NumParam3 = 0;
int _NumParam4 = 0;
int _NumParam5 = 0;
int _NumParam6 = 0;
string _TxtParam = "-";
int _DeviceKind = 0;
int _OutsideAltDevice = 0;
int _InsideAltDevice = 0;
int _StartDevice = 0;
int _EndDevice = 0;
int _RouteKind = 0;
//int _UseAwayFork = 1;
int _AgvNo = 65535;
string _CControlError = "";//¼à¿Øµ÷¶ÈÀà´íÎó˵Ã÷
public string CControlError
{
get { return _CControlError; }
set
{
_CControlError = value;
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs("tsStatus", _CControlError);
OnRefreshMonitor(rme);
}
}
public static event CDataSourceChangeEventHandler DataChange;
public static void OnDataChange(object sender, CDataChangeEventArgs e)
{
if (DataChange != null)
{
DataChange(sender, e);
}
}
public static event RefreshMonitorEventHandler RefreshMonitor;
public static void OnRefreshMonitor(RefreshMonitorEventArgs e)
{
if (RefreshMonitor != null)
{
RefreshMonitor(e);
}
}
public CControl()
{
//dbo.Open();
}
//~CControl()
//{
// dbo.Close();
//}
public void StartOrder()
{
//Ê×Ïȼì²âµÚÒ»¸öµ÷¶ÈÈÎÎñµ¥µÄ¡°µÚÒ»¸ö¡±£¨ËùÓÐÊ£ÏÂÖеĵÚÒ»¸ö£©É豸ÊÇ·ñ±»Õ¼Ó㬱»Õ¼ÓÃÔòÖ´ÐÐÏÂÒ»¸öµ÷¶ÈÈÎÎñµ¥£»
//È»ºó¼ì²âµÚÒ»¸öÉ豸µÄF_AheadDetect¶¼ÊÇ·ñÂú×ãÌõ¼þ£¬²»Âú×㣬ÔòÖ´ÐÐÏÂÒ»¸öµ÷¶ÈÈÎÎñµ¥£»
//×îºó¿ªÊ¼Ö´ÐÐʱ¼ì²éͬ²½ÔËÐеĹØÁªÉ豸F_AssociateDeviceIndex,×¼±¸¸ø¸ÃÉ豸·¢Ö¸Á
//¸ü¸Ä×÷Òµ¼Ç¼µÄ״̬F_StatusΪ1,¸ü¸ÄÉ豸ΪռÓÃ״̬£¨T_Base_deviceµÄF_LockedState=É豸ָÁîµ¥£©
//¸øµ÷¶ÈÈÎÎñ±í»ØÐ´µ÷¶ÈÈÎÎñIO_ControlµÄÕýÔÚÖ´ÐÐ״̬FSTATUS=1;T_Manage_TaskµÄÕýÔÚÖ´ÐÐ״̬FSTATUS=1
//·¾¶Ã÷ϸ±íF_LockedDeviceIndexÀïµÄËùÓжÔÓ¦É豸Ë÷Òý¼ÓËø£¬µ«ÊǹØÁªÉ豸²»¼ÓËø
StringBuilder taskkind = new StringBuilder();
DataView dv = new DataView(); DataView dvM = new DataView();
try
{
#region//20140604 ɽ¶«µçÁ¦£¬·¢ËÍÃüÁî֮ǰÏȼì²éÔÚ T_Base_Lane_Gate ±íÖÐF_Top ×Ö¶ÎÉèÖÃ1µÄ ÐУ¬·¢ËÍϽµÐźÅ
//sql.Remove(0, sql.Length);
//sql.Append(string.Format("select * from T_Base_Lane_Gate where F_Top = 1"));
//dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
//if (dv.Count > 0) // ÓÐû·¨ËÍϽµÐźŵÄվ̨
//{
// string bb = dv[0]["F_LaneGateDeviceIndex"].ToString();
// string cc = "";
// int devicebyte = 0;
// if (bb.Length == 6)
// {
// cc = bb.Substring(0, 5);
// }
// else
// {
// cc = bb;
// }
// int.TryParse(cc, out devicebyte);
// if (CStaticClass.GetDevicePhotoelectric(devicebyte, 1) != 1) // ¼ì²â½ü²æÓлõÐźÅ
// {
// sdo = CommModeCreate.CreateSendDeviceOrder(Convert.ToInt32(dv[0]["F_LaneGateDeviceIndex"]));
// sdo.SendDeviceOrder(4, 0, 0, Convert.ToInt32(dv[0]["F_LaneGateDeviceIndex"]), 0); // ¸øÊäËÍ»ú·¢Ëͱê־λ4£¬¸´Î»ÃüÁ²»ÓÃÈÎÎñºÅ£¡
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("update T_Base_Lane_Gate set F_Top = 0 where F_LaneGateDeviceIndex = '{0}'", dv[0]["F_LaneGateDeviceIndex"].ToString()));
// dbo.ExceSQL(sql.ToString());
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "Ïò¶¥Éýվ̨·¢ËÍϽµÈÎÎñÍê³É:", dv[0]["F_LaneGateDeviceIndex"].ToString().Substring(0, 5), dv[0]["F_LaneGateDeviceIndex"].ToString() + ",F_Top£¬ÖÃλ0£¡");
// }
//}
#endregion//20140604
if (CStaticClass.Order == true )
{
taskkind.Append(" (F_ManageTaskKindIndex = 1 or F_ManageTaskKindIndex = 2 or F_ManageTaskKindIndex = 4) "); //µ÷¶ÈÈÎÎñÓëµ÷¶ÈÉú³ÉµÄ×Ô¶¯ÈÎÎñ
}
else
{
return;
}
dvM = new DataView();
char[] sep = new char[1] { '-' };
//»ñµÃ¹ÜÀíµ¥¾Ý
sql.Remove(0, sql.Length);
//20120820
sql.Append("SELECT DISTINCT F_ManageTaskIndex AS MIndex,F_MonitorTaskLevel,F_ManageTaskKindIndex,F_SplitTime FROM T_Monitor_Task where ").Append(
taskkind.ToString()).Append(" order by F_ManageTaskKindIndex desc, F_MonitorTaskLevel desc,F_SplitTime asc, F_ManageTaskIndex asc");//20120616
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
try
{
//1£ºÌáȡÿ¸ö¹ÜÀíµ¥¾ÝµÄµÚÒ»¸öÉ豸ָÁî
sql.Remove(0, sql.Length);
sql.Append("select top 1 min(F_MonitorIndex) as minMidx,f_status from T_Monitor_Task where ").Append(taskkind.ToString()).Append(" and F_ManageTaskIndex = ").Append(dv[i]["MIndex"]).Append(" GROUP BY F_MonitorIndex, F_Status");
dvM = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvM.Count > 0)
{//20110412
if (dvM[0]["F_Status"].ToString() == "0" && dvM[0]["minMidx"] != DBNull.Value)
{
SendMonitorTask(Convert.ToInt32(dvM[0]["minMidx"]));
}
else
{
continue;
}
}
else
{
continue;
}
}
catch (Exception ex)
{
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃStartOrderʱ£º{0}", ex.StackTrace + ex.Message);
}
}//forÓï¾ä½áÊø
//20091107
return;
}// dv.Count > 0
else
{
return;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dvM.Dispose();
}
}
/// <summary>
/// Ìáȡÿ¸ö¹ÜÀíµ¥¾ÝµÄµÚÒ»¸öÉ豸ÊÇ·ñ±»Ëø¶¨,true±íʾ±»Ëø¶¨£»false±íʾ¿ÕÏÐ
/// </summary>
/// <param name="minMidx">µ÷¶ÈÈÎÎñºÅ</param>
/// <returns>true±íʾ±»Ëø¶¨£»false±íʾ¿ÕÏÐ</returns>
public bool GetFirstDeviceIFLocked(int minMidx, bool checkLockedstate)
{
char[] sep = new char[1] { '-' };
int msgIdx = 0;//ÏûÏ¢±àºÅ
int adidx = 0;//¹ØÁªÉ豸µÄÉ豸ָÁîË÷Òý
DataView dv = new DataView();
try
{
//»ñµÃÒª·¢Ë͵ÄÐÅÏ¢
if (GetSendInfo(minMidx) == false)
{//20120420
return true;
}
int DeviceIdx = _DeviceIdx;//É豸Ë÷Òý
int routeID = _routeID;//·¾¶Î¨Ò»Ë÷Òý
int serialNumber = _serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
int ManageTaskIdx = _ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
int ManageKindIdx = _ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
int DeviceOrder = _DeviceOrder;//É豸ÃüÁî
int LockedState = _LockedState;
int Associate = _Associate;
int ManTaskReserve = _ManTaskReserve;
string AheadDetect = _AheadDetect;
int NumParam1 = _NumParam1;
int NumParam2 = _NumParam2;
int NumParam3 = _NumParam3;
int NumParam4 = _NumParam4;
int NumParam5 = _NumParam5;
int NumParam6 = _NumParam6;
string TxtParam = _TxtParam;
int DeviceKind = _DeviceKind;
int OutsideAltDevice = _OutsideAltDevice;
int InsideAltDevice = _InsideAltDevice;
int StartDevice = _StartDevice;
int EndDevice = _EndDevice;
int RouteKind = _RouteKind;
int AgvNo = _AgvNo;
#region É豸¹ÊÕÏʱÊÇ·ñ×Ô¶¯¸ÄµÀ
if (CStaticClass.DeviceErrorAutoModifyRoutePath == "1")
{//20100108
#region Ö»Õë¶ÔÓëRGVÓйصÄÎå¸ö¶¯×÷ÅжϸÄ·¾¶
//20100108 ÊäËÍ»úµÄ½Ó»õ¶Ô½ÓÖ¸Áî²»²ÎÓë¸ÄµÀ
if ((_DeviceKind == 4) || ((_DeviceKind == 2) && ((_DeviceOrder == 3))) && (RouteKind != 3))
{
bool IfModify = false, IfUseNegativeDevice = false;//20100610
//20091102 RGVµÄµÚÒ»¸ö±»Ìáǰ´¥·¢µÄÔ˶¯Ö¸Áî²»ÐèÒª¸ü¸Ä·¾¶
if ((_DeviceKind == 4) && (_DeviceOrder == 7) &&
(ccf.GetSerialNumberFromRouteDevice(_routeID, _DeviceIdx) >
ccf.GetSerialNumberFromRouteDevice(_routeID, _NumParam1)))
{
sql.Remove(0, sql.Length);
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX = 1)");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
//20091218
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() == minMidx.ToString()))
{
IfModify = true;
IfUseNegativeDevice = true;//20100610
}
}
}
else if ((_DeviceKind == 4) && ((_DeviceOrder == 3) || (_DeviceOrder == 5)))
{//20100108¶Ô´©Ëó³µËÍ»õ¶Ô½ÓÓ¦¸Ã¼ÓÓÚÏÞÖÆ£¬ÔØ»õ£¬¿ÕÏÐ
devinfo = Model.CGetInfo.DeviceInfo[DeviceIdx];
if ((devinfo.RunState == 0) && (devinfo.HaveGoods == true))
{
IfModify = true;
IfUseNegativeDevice = false;//20100610
}
devinfo = null;
}
else
{
IfModify = true;
IfUseNegativeDevice = true;//20100610
}
if (IfModify == true)
{
int altsn = ccf.GetSerialNumberFromRouteDevice(_routeID, _OutsideAltDevice);
sql.Remove(0, sql.Length);
sql.Append("SELECT F_SerialNumber FROM T_Base_Device,T_Base_Route_Device,T_Base_Device_State where ").Append(
" T_Base_Device.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and F_ErrorCode =F_DeviceErrorIndex and ").Append(
" T_Base_Device_State.F_DeviceKindIndex = T_Base_Device.F_DeviceKindIndex AND T_Base_Device.F_ErrorCode > 0 AND ").Append(
" T_Base_Route_Device.F_SerialNumber > ").Append(_serialNumber).Append(" AND T_Base_Route_Device.F_SerialNumber > ").Append(
altsn).Append(" AND T_Base_Route_Device.F_RouteIDSub = ").Append(_routeID).Append(" and F_ErrorLevel=2 ");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
//ÅжÏÄÜ·ñ¸ÄµÀ;Ïò¹ÜÀíÉêÇë¸ÄµÀ;°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
if (GetUsableDestination(_ManageTaskIdx, _ManageKindIdx) == true)
{
return true;
}
}
#region RGVÄ¿±êλÖñ»Õ¼ÓÃÐèÒªÉêÇë¸ÄµÀ
//20100610
devinfo = null;
if (_DeviceKind == 4)
{//RGV
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);
}
else
{//ÊäËÍ»úËÍ»õ
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, _serialNumber)[0]);//RGV
int sn = 0;
if (devinfo != null)
{
sn = ccf.GetSerialNumberFromRouteDevice(_routeID, devinfo.DeviceIndex);
}
devinfo = Model.CGetInfo.GetDeviceInfo(CDisassembleTask.GetNextDevice(_routeID, sn)[0]);//½Ó»õÊäËÍ»ú
}
if (devinfo != null)
{
if (devinfo.HaveGoods == true)
{//Ä¿±êλÖñ»Õ¼Óã¬ÉêÇë¸ÄµÀ
if (GetRGVIdleDestination(_ManageTaskIdx, _ManageKindIdx, devinfo.DeviceIndex, IfUseNegativeDevice) == true)
{
return true;
}
}
}
#endregion
}
}
#endregion
}
#endregion
if (DeviceKind == 6)
{//20100512 AGV
#region AGV
if (AgvNo != 65535)//Èç¹ûÊÇÒѾ­·ÖÅä³µºÅµÄAGVÃüÁ¼ì²éÕâ¸ö³µºÅ¶ÔÓ¦µÄÉ豸Ë÷ÒýÊÇ·ñ±»Ëø¶¨
{
LockedState = Convert.ToInt32(dbo.GetSingle("SELECT F_LockedState FROM T_Base_Device where F_DeviceIndex=" + (DeviceIdx + AgvNo) + ""));
if (LockedState > 0) return true;
}
if (AheadDetectOK(minMidx, _AheadDetect) == true)//Ìáǰ¼ì²âͨ¹ý
{
#region Ë«²æAGV¼ì²â£¬ÄÜͬ²½µÄ¹ØÁªÈÎÎñÊÇ·ñAheadDetectOK
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
int[] synctask = Model.CGeneralFunction.MutiForkIfSync(minMidx, _DeviceIdx, _DeviceKind);
if (synctask != null)//20120616
{
if ((synctask.GetLength(0) == 1) && (synctask[0] == minMidx)) return true;//20120616µÈ´ýδ²ð·ÖµÄ¿Éͬ²½Ö´ÐеÄÈÎÎñ
string[] df = null;
Dictionary<int, string[]> mforkmonitorinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
foreach (int i in mforkmonitorinfo.Keys)
{
df = mforkmonitorinfo[i];
if (df != null)
{
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//¶à²æ¹ØÁªÌáǰ¼ì²âʧ°Ü
{
return true;
}
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
long rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
sql.Remove(0, sql.Length);
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
{
return true;
}
}
#endregion
}
}
}
}
#endregion
return false;
}
else
{
return true;
}
#endregion
}
else
{//·ÇAGVÉ豸£ºÊäËÍ»ú¡¢¶Ñ¶â»ú¡¢RGVµÈ
#region ·ÇAGVÉ豸£ºÊäËÍ»ú¡¢¶Ñ¶â»ú¡¢RGVµÈ
//µÚÒ»¸öÉ豸ÊÇ·ñ±»Õ¼Óã¬RGVºÍ¶Ñ¶â»úÒª¿¼ÂÇ·Ö²½¿ØÖÆÊ±£¬Ã»Ö´ÐÐÍêÁ¬Ðø¶¯×÷ʱ²»½ÓÊÜеĵ÷¶ÈÈÎÎñ
if (((_LockedState == 0) && (checkLockedstate == true)) || (checkLockedstate == false))
{
#region ¼ì²éRGV¡¢¶Ñ¶â»úµÈÊÇ·ñ±»µ÷¶ÈÈÎÎñÔ¤Ô¼F_ManTaskReserve
if (_ManTaskReserve > 0)
{
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
#region ¶à²æ¹ØÁª
Dictionary<int, string[]> mforkmonInfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
bool iftrue = true;
int relfid = ccf.GetRELATIVECONTORLIDFromManageTask(_ManageKindIdx, _ManageTaskIdx);
if (_ManTaskReserve.ToString() == _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())
{
iftrue = false;
}
else
{
if (relfid > 0)
{//20130704
dv = dbo.ExceSQL(string.Format("SELECT FID FROM T_Manage_Task where F_RELATIVECONTORLID={0} and F_ManageTaskKindIndex={1}", relfid, _ManageKindIdx)).Tables[0].DefaultView;
for (int mt = 0; mt < dv.Count; mt++)
{
if (_ManTaskReserve.ToString() == _ManageKindIdx.ToString() + dv[mt]["FID"].ToString())
{
iftrue = false;
}
}
}
}
if (iftrue == true)
{
UpdateAheadDetectUnallow(new StringBuilder(_DeviceIdx.ToString() + "±»ÈÎÎñÔ¤Ô¼" + _ManTaskReserve.ToString().Substring(1)), minMidx);
return true;
}
#endregion
}
else
{
if (devinfo.DeviceKind == 1 || devinfo.DeviceKind == 4)//ÉϺ£êɵú´Ë´¦ÔÝʱ¹âÅжϴ©Ëó°æºÍ´©Ëó³µ
{
if (_ManTaskReserve.ToString() != _ManageKindIdx.ToString() + _ManageTaskIdx.ToString())
{
UpdateAheadDetectUnallow(new StringBuilder(_DeviceIdx.ToString() + "±»ÈÎÎñÔ¤Ô¼" + _ManTaskReserve.ToString().Substring(1)), minMidx);
return true;
}
}
}
}
#endregion
//3£ºF_AheadDetect¼ì²â(¼ì²â¿ª¹Ø±àºÅ×é¡°;¡±)
if (AheadDetectOK(minMidx, _AheadDetect) == true)//Ìáǰ¼ì²âͨ¹ý
// if(true)
{
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (_DeviceIdx == devinfo.VirtualStack)
{//20111020
AssignStackNo(_DeviceIdx, minMidx, ManageKindIdx, ManageTaskIdx);
return true;//20120906
}
#region ¶à²æ¶Ñ¶â»ú¼ì²â£¬ÄÜͬ²½µÄDoubleForkÊÇ·ñAheadDetectOK
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(_DeviceIdx);
if (devinfo.IfCorrelDoubleFork == "1" && devinfo.DeviceKind == 1)
{
int[] synctask = Model.CGeneralFunction.MutiForkIfSync(minMidx, _DeviceIdx, _DeviceKind);
if (synctask != null)//20120616
{
if ((synctask.GetLength(0) == 1) && (synctask[0] == minMidx)) return true;//20120616µÈ´ýδ²ð·ÖµÄ¿Éͬ²½Ö´ÐеÄÈÎÎñ
string[] df = null;
Dictionary<int, string[]> mforkmonitorinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, _DeviceIdx);
foreach (int i in mforkmonitorinfo.Keys)
{
if (Array.IndexOf<int>(synctask, i) >= 0)
{//20120906
df = mforkmonitorinfo[i];
if (df != null)
{
if (AheadDetectOK(Convert.ToInt32(df[0]), df[1]) == false)//¶à²æ¹ØÁªÌáǰ¼ì²âʧ°Ü
{
return true;
}
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(Convert.ToInt32(df[0]));
long rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(Convert.ToInt32(df[0]));
sql.Remove(0, sql.Length);
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != df[0]))
{
return true;
}
}
#endregion
}
}
}
}
}
#endregion
//¼ì²éͬ²½ÔËÐеĹØÁªÉ豸F_AssociateDeviceIndex
//4£ºÊÇ·ñÓйØÁªÉ豸ÃüÁ
#region ÊÇ·ñÓйØÁªÉ豸ÃüÁî
//AssociateDevice = ccf.GetAssociateDevice(minMidx);
if (_Associate != 0)
{
//5£ºÈç¹ûÓУ¬ÕÒµ½¿ÉÒÔÔËÐеĹØÁªÉ豸µÄÉ豸ָÁî,ÄÜ·ñÔËÐУ¿
//ÖØ¸´µÝ¹éµ½2
//split = AssociateDevice.Split(sep);
adidx = _Associate;
if (adidx != 0)
{
#region ÓйØÁªÈÎÎñ
if (ccf.GetAssociateMonitor(minMidx) == 0)
{
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "É豸ָÁ" + minMidx.ToString() + "ÎÞ·¨»ñµÃ¹ØÁªÈÎÎñ" + adidx.ToString() + "£¬²»ÄÜ·¢ËÍ´ËÀàÃüÁ");
OnRefreshMonitor(rmea);
return true;
}
if (GetFirstDeviceIFLocked(adidx, false) == false)
{
//6£º·¢Ë͹ØÁªÉ豸ÃüÁî
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(_DeviceIdx);
//ÅжÏÊÇ·ñΪ¶Ñ¶â»úÉ豸
bool sendok;
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 }; //ccf.GetCoordinatesFromMonitorTask(adidx);//»ñµÃ×ø±ê
if ((_DeviceKind == 1) || (_DeviceKind == 6))
{
//1£º¶Ñ¶â»ú£»4£ºRGV£»6£ºAGVÈç¹ûÐèÒªÓÅ»¯µ÷¶È£¨É豸±íµÄF_NeedOptimize='1'£©
//Ö±½ÓдÈë±í£ºT_Monitor_Task_Child£¬²»·¢ËÍÃüÁî
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(adidx);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder,
_DeviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
}
}
else if (_DeviceKind == 4)
{
if (ccf.NeedOptimize(_DeviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(adidx);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[2]);
}
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, adidx, _DeviceOrder, _DeviceIdx, gc[5]);
}
if (sendok == false)
{
return true;
}
else
{
//8£º¸ü¸Ä×÷Òµ¼Ç¼µÄ״̬F_StatusΪ1,¸ü¸ÄÉ豸ΪռÓÃ״̬£¨T_Base_deviceµÄF_LockedState=É豸ָÁîµ¥£©
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_StartTime='").Append(DateTime.Now.ToString("u")).Append("',F_Status='1' where F_MonitorIndex=").Append(adidx);
dbo.ExceSQL(sql.ToString());
//·µ»Øµ½Ô­À´É豸ֵ
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
_AgvNo = AgvNo;
return false;
}
}
else
{
return true;
}
#endregion
}
else//
{
#region MyRegion
//·µ»Øµ½Ô­À´É豸ֵ
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
#endregion
CControlError = string.Format("²ð·Öµ÷¶ÈÈÎÎñµÃµ½µÄÉ豸ָÁîÓëÏêϸ·¾¶µÄ¼ìË÷µ½µÄ¹ØÁªÉ豸ָÁƥÅ䣬ϵͳ×÷ΪûÓйØÁªÉ豸ָÁî´¦Àí£¡");
return false;
}
}
else
{
#region ·µ»Øµ½Ô­À´É豸ֵ
//·µ»Øµ½Ô­À´É豸ֵ
_DeviceIdx = DeviceIdx;//É豸Ë÷Òý
_routeID = routeID;//·¾¶Î¨Ò»Ë÷Òý
_serialNumber = serialNumber;//·¾¶ÉϵÄÉ豸·½ÏòÐÔÁ´±íµÄÐòºÅ
_ManageTaskIdx = ManageTaskIdx;//µ÷¶ÈÈÎÎñË÷Òý
_ManageKindIdx = ManageKindIdx;//µ÷¶ÈÈÎÎñÀàÐÍ
_DeviceOrder = DeviceOrder;//É豸ÃüÁî
_LockedState = LockedState;
_Associate = Associate;
_ManTaskReserve = ManTaskReserve;
_AheadDetect = AheadDetect;
_NumParam1 = NumParam1;
_NumParam2 = NumParam2;
_NumParam3 = NumParam3;
_NumParam4 = NumParam4;
_NumParam5 = NumParam5;
_NumParam6 = NumParam6;
_TxtParam = TxtParam;
_DeviceKind = DeviceKind;
_OutsideAltDevice = OutsideAltDevice;
_InsideAltDevice = InsideAltDevice;
_StartDevice = StartDevice;
_EndDevice = EndDevice;
_RouteKind = RouteKind;
#endregion
return false;
}
#endregion
}
else
{
#region ÉϺ£êɵú£¬19003ÌáÉý»úÈ¡»õʱ ÅÐ¶Ï Í¬²ãÊÇ·ñÒѾ­ÓÐ2¸öÒÔÉϵȴý·Ö³µµÄÈÎÎñ£¬ÇÒҪȥµÃ²ãÎÞ³µ Ïò¹ÜÀíÉêÇë¸ÄµÀ
if (DeviceIdx == 19003 && DeviceOrder == 2)
{
long fid = ccf.GetManageTaskIndexfromMonitor(minMidx);
int mti = ccf.GetManageTaskKindIndexFromMonitor(minMidx);
int endlayer = ccf.GetFEndLayerFromManageTask(mti, fid);
string barcode = ccf.GetBarCodeFromMonitor(minMidx);
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_LaneOut=0 and F_Postion = ").Append(endlayer); //F_LaneOut=0 ±íʾ³µÔÚÏïµÀÀï ³µ»µÁËÒÆ³öÈ¥F_LaneOut=1
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count == 0)
{
//ÅжÏûÓе½´Ë²ãµÄ»»²ãÈÎÎñ »ò´Ó´Ë²ã³ö·¢µÄ»»²ãÈÎÎñ
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 AND ((FEndLayer = ").Append(endlayer).Append(") or (FStartLayer = ").Append(endlayer).Append("))");
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count == 0)
{
//ÓÐÁ½¸öÒÔÉÏÈë¿âÈÎÎñ ÇÒ³µÎª10000 ÖÕÖ¹²ãΪendlayer
int stack = 10000;
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 1 AND (FEndLayer = ").Append(endlayer).Append(") and (FSTACK = ").Append(stack).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 1)
{
dbo.TransBegin(IsolationLevel.ReadCommitted);
sql.Remove(0, sql.Length);
sql.Append("delete from T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(fid).Append(") and (F_ManageTASKKINDINDEX = ").Append(mti).Append(")");
dbo.ExceSQL(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("delete from T_Manage_Task WHERE FCONTROLTASKTYPE = 1 AND (FID = ").Append(fid).Append(") and (F_ManageTaskKindIndex = ").Append(mti).Append(")");
dbo.ExceSQL(sql.ToString());
if (mti == 1)
{
sql.Remove(0, sql.Length);
sql.Append("update IO_CONTROL set CONTROL_STATUS=100 WHERE (CONTROL_ID = ").Append(fid).Append(")");
dboM.ExceSQL(sql.ToString()); //¸æËß¹ÜÀíÒª¸ÄµÀ100
}
CommonClassLib.CCarryConvert.WriteDarkCasket("Ìáǰ¼ì²âʱÌõÂë"+barcode,
"×Ô¶¯É¾³ýÈÎÎñÏò¹ÜÀí¸ÄµÀcontrol_id:",
fid.ToString(),
"Åжϵ½ÒªÈ¥²ãÎÞ³µÇÒÓÐ2¸öÒÔÉÏδ·Ö³µÈÎÎñ" );
dbo.TransCommit();
}
}
}
}
#endregion
return true;
}
}
else
{
return true;
}
#endregion
}
}
catch (Exception ex)
{
dbo.TransRollback();
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetFirstDeviceIFLockedʱ£º{0}", ex.StackTrace + ex.Message);
return true;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// ¼ì²âÖ¸¶¨É豸ÃüÁîµÄÖ´ÐÐÏȾöÌõ¼þÊÇ·ñ³ÉÁ¢
/// </summary>
/// <param name="minMidx">¼à¿ØÎ¨Ò»Ë÷Òý</param>
/// <returns>ÊÇ·ñ¼ì²âͨ¹ý£¬true±íʾÉ豸ִÐÐÃüÁîµÄÏȾöÌõ¼þ³ÉÁ¢</returns>
public bool AheadDetectOK(int minMidx, string _AheadDetect)
{
AheadDetectUnallow.Remove(0, AheadDetectUnallow.Length);//20110505
int[] States;
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
int DeviceIdx = _DeviceIdx;
int TaskIdx = minMidx;
long fid = ccf.GetManageTaskIndexfromMonitor(TaskIdx);
int mti = ccf.GetManageTaskKindIndexFromMonitor(TaskIdx);
int DeviceKind = ccf.GetDeviceKindIdx(DeviceIdx);//20100617
int order = ccf.GetDeviceOrderFromMonitor(TaskIdx);
int StartDevice = _StartDevice;//µ±Ç°µ÷¶ÈÈÎÎñÆðµã
int EndDevice = _EndDevice;//µ±Ç°µ÷¶ÈÈÎÎñÖÕµã
string BarCode = ccf.GetBarCodeFromMonitor(TaskIdx);
#region ²¹³ä¶¥Éý»ú²»ÔÚ¸ßλµÄ¶¥ÉýÃüÁî
//if ((DeviceIdx >= 35000) && (DeviceIdx <= 35003)&&(order ==4))
//{//20120110²¹³ä¶¥Éý»ú²»ÔÚ¸ßλµÄ¶¥ÉýÃüÁî
// if (_AheadDetect.IndexOf("D-32036.6") >= 0)
// {
// if(CStaticClass.GetDevicePhotoelectric(32036,7)==1)
// {
// InsertUpDeviceUP(32036, mti, fid,minMidx);
// }
// }
// else if (_AheadDetect.IndexOf("D-32049.6") >= 0)
// {
// if (CStaticClass.GetDevicePhotoelectric(32049, 7) == 1)
// {
// InsertUpDeviceUP(32049, mti, fid, minMidx);
// }
// }
//}
#endregion
//20100706
devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
if (ccf.GetBarCodeFromMonitor(minMidx) == "brbrbr")//±ÜÈÃÖ¸Áî¼ì²âÌõ¼þ20120110
{
int zc = 1, xc = 0;
GetStackRunX_Zcoor(DeviceIdx, out xc, out zc);
if (devinfo.RunState == 0 && xc == 0)
{
return true;
}
else
{
return false;
}
}
if (DeviceKind == 1 && order == 1)//»ØÔ­µã¼ì²âÌõ¼þ20120110
{
if (devinfo.RunState == 0)
{
return true;
}
else
{
return false;
}
}
//¼ì²â(¼ì²â¿ª¹Ø±àºÅ×é¡°;¡±)
DataView dv = new DataView();
DataView dvdv = new DataView();
DataView barcodeDV = new DataView();
try
{
if (devinfo.CommType == "OPCClient")//20100706 Ö»ÓÐOPCClientͨѶÀàÐ͵ļì²éÉ豸״̬
{
#region OPCͨѶÉ豸¼ì²âÉ豸ÊÇ·ñ¹ÊÕÏ
// //gds = CommModeCreate.CreateGetDeviceState(DeviceIdx);
// try
// {
// //States = gds.GetDeviceState(DeviceIdx, TaskIdx);//1Íê³É,2ÈÎÎñºÅ,5É豸ºÅ
// if (DeviceKind == 13)
// {
// DeviceIdx = GetNowDevice(minMidx);
// }
// States = CStaticClass.GetDeviceState(DeviceIdx);
// }
// catch (Exception ex)
// {//20110505
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "Ìáǰ¼ì²âʱ£º" + ex.Message);
// OnRefreshMonitor(rmea);
// return false;
// }
// if (States == null)//û½ÓÊÕµ½Èκηµ»ØÖµ
// {
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "·¢ËÍÃüÁîʱ£¬Ìáǰ¼ì²âûÊÕµ½PLCÊý¾Ý£¡");
// OnRefreshMonitor(rmea);
// return false;
// }
// if (((States[1] == 1) || (States[1] >= 30)) && ((DeviceKind != 13) && (DeviceKind != 31)))//ÔËÐлòÕß¹ÊÕÏ
// {
// if (States[1] >= 30)
// {
// devinfo = Model.CGetInfo.GetDeviceInfo(DeviceIdx);
// int ErrId = States[1];
// //20110505
// errs = Model.CGetInfo.GetErrorInfo(Convert.ToInt32(_DeviceKind.ToString() + States[1].ToString()));
// AheadDetectUnallow.Append(DeviceIdx + "ÓйÊÕÏ£º" + errs.ErrorName);
// //20090910
// //Óйý¼Ç¼µÄ¹ÊÕÏÉ豸µÄÈÎÎñºÅ£¬²»ÔÙÖØ¸´´¦Àí
// sql.Remove(0, sql.Length);
// sql.Append("SELECT F_DeviceIndex FROM T_Base_Device where F_DeviceIndex=" ).Append( DeviceIdx ).Append( " and F_ErrorTaskNo=" ).Append( TaskIdx );
// ;
// dt = dbo.ExceSQL(sql.ToString()).Tables[0];
// if (dt.Rows.Count >= 1)
// {
// //20110505
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// //¼Ç¼·¢Éú¹ÊÕϵÄÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñºÅ
// sql.Remove(0, sql.Length);
// sql.Append("update T_Base_Device set F_ErrorTaskNo= " ).Append( TaskIdx ).Append( " where F_DeviceIndex= " ).Append( DeviceIdx);
// dbo.ExceSQL(sql.ToString());
// if (CStaticClass.IsEquals(devinfo.ReturnMessage, States, 2) == true) return false;
// //if ((_DeviceKind == 2) || (_DeviceKind == 4))
// //{//ÊäËÍ»ú¹ÊÕÏÇåÁã
// // sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
// // sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0);
// //}
// //if (_DeviceKind == 1) //¶Ñ¶â»ú¡¢RGV
// //{
// // sdo = CommModeCreate.CreateSendDeviceOrder(DeviceIdx);
// // sdo.SendDeviceOrder(2, 0, 0, DeviceIdx, 0, 0, 0, 0, 0, 0);
// //}
// //20110505
// RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "É豸Ë÷Òý" + DeviceIdx + "ÓйÊÕÏ£º" + errs.ErrorName);
// OnRefreshMonitor(rmea);
// rmea = new RefreshMonitorEventArgs("notifyIcon1", "¾¯¸æ:" + devinfo.DeviceName + "," + DeviceIdx + "·¢Éú¹ÊÕÏ£º" + errs.ErrorName);
// OnRefreshMonitor(rmea);
// if (mti == 1)
// {
// sql.Remove(0, sql.Length);
// sql.Append("update IO_Control set ERROR_TEXT='" ).Append( "×¼±¸Ö´ÐйÜÀíÈÎÎñʱ£º" ).Append( devinfo.DeviceName ).Append( "," ).Append( DeviceIdx ).Append( errs.ErrorName ).Append( "' where Control_ID=" ).Append( fid);
// dboM.ExceSQL(sql.ToString());
// }
// sql.Remove(0, sql.Length);
// sql.Append("update T_Manage_Task set FERRORCODE='" ).Append( "×¼±¸Ö´ÐйÜÀíÈÎÎñʱ£º" ).Append( devinfo.DeviceName ).Append( "," ).Append( DeviceIdx ).Append( errs.ErrorName ).Append( "' where F_ManageTaskKindIndex=" ).Append( mti ).Append( " and FID=" ).Append( fid);
// dbo.ExceSQL(sql.ToString());
// CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
// OnDataChange("·¢ËÍÖ¸ÁîÌáǰ¼ì²âʱ£¬",cea);
// }
// return false;
// }
// #endregion
//}
//else
//{
// #region ÑÓ¼ª£º20100319 AGVµÄÖ¸Áî67£ºÔÊÐíAGV·Å²ÐÍÐʱ£¬Èç¹ûÓÐ1219µÄËͳöÖ¸Áî¡¢1220µÄÖ¸ÁîÕýÔÚÖ´ÐлòÕßÒÑ·¢ËÍ£¬Ìáǰ¼ì²âʧ°Ü£¬ÐèÒªµÈ´ý
// //
// //if (ccf.GetDeviceOrderFromMonitor(minMidx) == 67)
// //{
// // dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1219) AND (F_DeviceCommandIndex = 6) AND (F_Status > 0)").Tables[0].DefaultView;
// // if (dv.Count > 0)
// // {
// // return false;
// // }
// // dv = dbo.ExceSQL("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = 1220) AND (F_Status > 0)").Tables[0].DefaultView;
// // if (dv.Count > 0)
// // {
// // return false;
// // }
// //}
#endregion
}
#region ¸ß¶ËÉ豸UÏßÕýÔÚÔËÐÐ×ÜÊý¿ØÖÆ
//if ((DeviceKind == 13) && (order==6))
//{//20120328
// int arrdevice = ccf.GetDeviceArrowFromMonitor(minMidx);
// int startdevice = ccf.GetDeviceStartFromMonitor(minMidx);
// object ob0 = dbo.GetSingle(string.Format("SELECT count(F_MonitorIndex) as UTaskCount FROM T_Monitor_Task where F_DeviceIndex={0} and F_DeviceCommandIndex={1} and F_Status>0", DeviceIdx, order));
// DataView dvu = dbo.ExceSQL(string.Format("SELECT F_MaxRunTask,F_OutputUDevice,F_InputUDevice FROM T_Base_UArea WHERE (F_UCODE = {0})", DeviceIdx)).Tables[0].DefaultView;
// if ((dvu.Count>0) && (ob0 != null))
// {
// if (arrdevice == Convert.ToInt32(dvu[0]["F_OutputUDevice"]))
// {
// //if (Convert.ToInt32(ob0) >= Convert.ToInt32(dvu[0]["F_MaxRunTask"]))
// //{
// // AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ­³¬ÏÞ£¡");
// // UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// // return false;
// //}
// }
// else
// {
// if ((Convert.ToInt32(ob0) >= (Convert.ToInt32(dvu[0]["F_MaxRunTask"]) - 2)) && (startdevice == Convert.ToInt32(dvu[0]["F_InputUDevice"])))
// {
// AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ­³¬ÏÞ£¡");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// if ((Convert.ToInt32(ob0) >= (Convert.ToInt32(dvu[0]["F_MaxRunTask"]) - 1)) && (startdevice != Convert.ToInt32(dvu[0]["F_InputUDevice"])))
// {
// //AheadDetectUnallow.Append("UÏߣº" + DeviceIdx.ToString() + "ÕýÔÚÔËÐÐÈÎÎñÒѾ­³¬ÏÞ£¡");
// //UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// //return false;
// }
// }
// }
//}
#endregion
#region Ìáǰ¼ì²âÐÅÏ¢´¦Àí
if ((_AheadDetect != "") && (_AheadDetect != null))
{
char[] cc = new char[1];
cc[0] = ';';
string[] AheadDetect = _AheadDetect.Split(cc);
string[] sp;
//ͨ¹ý³éÏóÀ๤³§»ñµÃIGetDeviceStateµÄÅÉÉúÀà
//IGetDeviceState GDS;
int s = 0;
//int[] sss;
int fs = 1;
//int[] fsss;
//ÌáÈ¡¹âµç¿ª¹ØË÷ÒýÖµ
int devk = 0;
if (CStaticClass.TestSendOrder == false) //µ±²âÊÔ·¢ËÍʱ²»½øÐÐÌáǰ¼ì²âµÄÅжÏ
{
for (int i = AheadDetect.GetLowerBound(0); i <= AheadDetect.GetUpperBound(0); i++)
{
if (AheadDetect[i].Trim().Length <= 0) continue;
#region ¼ì²âÂß¼­ÓÐ̽Îï
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "H")//¼ì²âÂß¼­ÓÐ̽Îï
{
devk = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
if (devk == 9)
{//»ų́ÐèÒª´Ó¹ÜÀíÉ豸±í¶ÁÈ¡
//sql.Remove(0, sql.Length);
//sql.Append("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" ).Append( AheadDetect[i].Trim().Substring(1) ).Append( "') AND (FSTATUS = '1002')");
//if (dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
//{
// fs = fs & 1;
//}
//else
//{
// fs = fs & 0;
//}
}
else
{
//±¾µØÉ豸±í¶ÁÈ¡
sql.Remove(0, sql.Length);
sql.Append("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=").Append(
Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdv.Count > 0)
{
int havegoods = -1;
if (Convert.ToInt32(dvdv[0]["F_HaveGoods"]) == 0)//20110505
{
havegoods = 0;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸Âß¼­ÎÞÎ");
}
else
{
havegoods = 1;
}
fs = fs & havegoods;
}
}
continue;
}
#endregion
#region ¼ì²âÂß¼­ÎÞ̽Îï
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "N")//¼ì²âÂß¼­ÎÞ̽Îï
{
devk = ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
if (devk == 9)
{//»ų́ÐèÒª´Ó¹ÜÀíÉ豸±í¶ÁÈ¡;20101028¹ÜÀíÒÀÀµÈÎÎñ¿ØÖÆ»ų́µÄվ̨ÊÇ·ñÓÐÎï
//if (dboM.ExceSQL("SELECT FID FROM T_ITEMDEVICESTATION WHERE (FCODE = '" + AheadDetect[i].Trim().Substring(1) + "') AND (FSTATUS = '1002')").Tables[0].DefaultView.Count > 0)
//{
// fs = fs & 1;
//}
//else
//{
// fs = fs & 0;
//}
}
else
{
//±¾µØÉ豸±í¶ÁÈ¡
// 20140311 ÏÈÅжÏAheadDetect[i].Trim().Substring(1)³¤¶È£¬Èç¹ûÊÇ6룬½ØÈ¡Ç°5λ ɽ¶«
string idev = string.Empty;
if (AheadDetect[i].Trim().Substring(1).Length == 6)
{
idev = AheadDetect[i].Trim().Substring(1).Substring(0, 5);
}
else
{
idev = AheadDetect[i].Trim().Substring(1);
}
sql.Remove(0, sql.Length);
sql.Append("SELECT F_DeviceIndex, F_HaveGoods FROM T_Base_Device where F_DeviceIndex=").Append(
Convert.ToInt32(idev));
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdv.Count > 0)
{
if (Convert.ToInt32(dvdv[0]["F_HaveGoods"]) > 0)//20110505
{
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸Âß¼­ÓÐÎ");
}
s = s + Convert.ToInt32(dvdv[0]["F_HaveGoods"]);
}
}
continue;
}
#endregion
#region ¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐ
//20090803¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐidle
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "I")//¼ì²âÉ豸ÊÇ·ñ¿ÕÏÐidle
{
int idev = Convert.ToInt32(AheadDetect[i].Trim().Substring(1));
if (idev.ToString().Length == 6)
{
idev = Convert.ToInt32(idev.ToString().Substring(0, 5));
}
States = CStaticClass.GetDeviceState(idev);
#region 20210326_ÉϺ£êɵú£¬Èç¹û¼ì²â¿ÕÏÐÊdzöÈë¿âµÄÌáÉý»ú19003ºÍ19004£¬Í¬Ê±¼ì²âÊÇ·ñÓÐÕýÔÚÖ´ÐеĻ»²ãÈÎÎñ£¬Èç¹ûÓУ¬²»Ö´ÐÐ
//if ((idev == 19003 || idev == 19004) && DeviceIdx != 19005)
//{
// sql.Remove(0, sql.Length);
// sql.Append(
// "SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 AND FSTATUS <> 0");
// if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
// {
// AheadDetectUnallow.Append("19005ÕýÔÚÖ´Ðл»²ãÈÎÎñ");
// States[1] = 1;
// }
//}
#endregion
if (States != null)
{
if ((States[1] == 5) && (ccf.GetDeviceKindIdx(Convert.ToInt32(AheadDetect[i].Trim().Substring(1))) == 2))
{//20120409Ö»ÓÐÊäËÍ»úµÄÍê³É¿É×÷Ϊ¿ÕÏÐ
States[1] = 0;
}
if (DeviceHandTaskIfRun(Convert.ToInt32(AheadDetect[i].Trim().Substring(1))) == true)
{//20120207
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "ÊÖ¹¤ÈÎÎñ»òÕß±ÜÈÃÈÎÎñÕýÔÚÔËÐУ¡");
States[1] = 1;
}
if (States[1] != 0)//20110505
{
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "É豸²»¿ÕÏУ¡");
}
s = s + States[1];
}
continue;
}
#endregion
#region ¼ì²âF_NumParam1£¬F_NumParam4É豸ÎÞÕýÔÚÔËÐеÄÈÎÎñ
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "U")//¼ì²âF_NumParam1£¬F_NumParam4É豸ÎÞÕýÔÚÔËÐеÄÈÎÎñ
{
sql.Clear();
sql.Append(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_NumParam1 = {0} or F_NumParam4 = {0}) AND (F_Status > 0)", Convert.ToInt32(AheadDetect[i].Trim().Substring(1))));
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdv.Count > 0)
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "ÓÐÈÎÎñÕýÔÚÖ´ÐУ¡");
}
else
{
s = s + 0;
}
continue;
}
#endregion
#region ¼ì²â»ý·ÅÏßÕýÔÚÖ´ÐÐÈÎÎñ¸öÊý
//if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "J")//¼ì²â»ý·ÅÏßÕýÔÚÖ´ÐÐÈÎÎñ¸öÊý£¨J12008,2£©
//{
// cc[0] = ',';
// sp = AheadDetect[i].Trim().Substring(1).Split(cc);
// if (sp.GetLength(0) == 2)
// {
// sql.Clear();
// sql.Append(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex={0}) AND (F_Status > 0)", Convert.ToInt32(sp[0])));
// dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dvdv.Count >= Convert.ToInt32(sp[1]))
// {
// s = s + 1;
// AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "»ý·ÅÈÎÎñ³¬ÏÞ£¡");
// }
// else
// {
// s = s + 0;
// }
// }
// continue;
//}
#endregion
//ÉϺ£êɵú³ö¿âË«Éì¹ÜÀí¿ØÖÆ ½üÈÎÎñÖ´ÐкóÔÙÏÂÔ¶ÈÎÎñ
#region êɵú¼ì²âË«Éý»õλÈë¿âÍâ²à»õλʱ£¬ÏµÍ³ÎÞδÍê³ÉµÄ¶ÔÓ¦µÄÀï²à»õλÈë¿âÈÎÎñ
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "J")
{
long Index = ccf.GetManageTaskIndexfromMonitor(minMidx);
int Mk = ccf.GetManageTaskKindIndexFromMonitor(minMidx);
sql.Clear();
sql.Append(string.Format("SELECT FLANEWAY,FENDCELL,F_RELATIVECONTORLID FROM T_Manage_Task WHERE (FID = {0} and F_ManageTaskKindIndex={1} )", Index, Mk));
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdv.Count > 0)
{
if ((Convert.ToInt32(dvdv[0]["FENDCELL"].ToString().Substring(0, 2)) % 4 == 1) || (Convert.ToInt32(dvdv[0]["FENDCELL"].ToString().Substring(0, 2)) % 4 == 0))
{
s = s + 0;//Ô¶¶Ñ¶â»ú Ö±½ÓÈë
}
else//µ±Ç°½øÐеÄÊÇ Èë¿âÈ¡»õ¼ì²é
{
string ZZ = "";
int ZZZ = 0;
ZZZ = Convert.ToInt32(Convert.ToInt32(dvdv[0]["FENDCELL"].ToString().Substring(0, 2)));
//if (Convert.ToInt32(dvdv[0]["FENDCELL"].ToString().Substring(0, 2)) % 4 == 2)
//{
// ZZ = string.Format("{0:D2}", ZZZ - 1);
//}
//else
if (Convert.ToInt32(dvdv[0]["FENDCELL"].ToString().Substring(0, 2)) % 4 == 3)
{
ZZ = string.Format("{0:D2}", ZZZ + 1);
}
string cell = ZZ + dvdv[0]["FENDCELL"].ToString().Substring(2, (dvdv[0]["FENDCELL"].ToString().Length - 2));
sql.Clear();
sql.Append(string.Format("SELECT * FROM IO_CONTROL WHERE (END_DEVICE_CODE = '{0}' and CONTROL_STATUS='0' )", cell));
DataView dvdd = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdd.Count > 0)
{
//¹ÜÀíϵͳÖÐÓÐδ»ñÈ¡µÄ
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "½ü¶â»úÈë/ÒÆ¿âÈ¡»õʱ¹ÜÀíÓÐÔ¶¶â»úÈÎÎñδ»ñÈ¡£¬Ô¶¶â»úÈÎÎñ»ñȡִÐкó²ÅÄÜÈ¡½ü¶â»ú£¡");
}
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE (FENDCELL = '{0}' and ((FCONTROLTASKTYPE =1)or (FCONTROLTASKTYPE =3)) )", cell));
DataView dvda = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvda.Count == 1)//
{
//ÅжϸÃÈÎÎñÓÐÎÞ²ð·Ö
if ((Convert.ToInt32(dvda[0]["FIntoStepOK"]) == 0))//δ²ð·Ö
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "½ü¶â»úÈë/ÒÆ¿âÈÎÎñÈ¡»õÓжÔÓ¦Ô¶¶â»úδ²ð·Ö£¡");
}
else//ÒѾ­²ð·ÖÈç¹û¶ÔÓ¦µÄ¶Ñ¶â»úÈ¡·ÅÖ¸Áî¶¼Íê³ÉÁ˾ͿÉÒÔͨ¹ý
{
// ½ðºÅÔö¼ÓÅÐ¶Ï Èç¹ûÊǹØÁªÈÎÎñ ¼ì²âÈÃÆäͨ¹ý
//if ((Convert.ToInt32(dvdv[0]["F_RELATIVECONTORLID"]) == Convert.ToInt32(dvda[0]["F_RELATIVECONTORLID"])) && (-1 != Convert.ToInt32(dvda[0]["F_RELATIVECONTORLID"])))
//{
// s = s + 0;//¹ØÁªÈÎÎñ·ÅÐУ¬×îºó·¢ËÍʱÏÈ·¢Ô¶¶â»ú²à¼´¿É
//}
//else
//{
string[] split = new string[3];
split = cell.Split('-');
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE (F_NumParam4 = {0} and F_NumParam5 = {1} and F_NumParam6 = {2} )", Convert.ToInt32(split[0]), Convert.ToInt32(split[1]), Convert.ToInt32(split[2])));
DataView dvdb = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdb.Count > 0)//Ô¶¶â»úÈ¡·ÅÈÎÎñ»¹Î´Íê³É ¼ì²â²»ÄÜͨ¹ý
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "½ü¶â»úÈë/ÒÆ¿âÈÎÎñÈ¡»õÓжÔÓ¦Ô¶¶â»úÈë¿â»òÒÆ¿âδÍê³É£¡");
}
else
{
s = s + 0;//Ô¶¶â»úÈ¡·ÅÈÎÎñÒѾ­×öÍê
}
//}
}
}
else if (dvda.Count > 1)
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "½ü¶â»úÈë/ÒÆ¿âÈÎÎñÈ¡»õÓжÔÓ¦ÖÁÉÙÁ½ÌõµÄÔ¶¶â»úÈë¿â»òÒÆ¿âδÍê³É£¡");
}
else
{
s = s + 0;//²¢Ã»ÓжÔÓ¦µÄÀï²àÅÅÈë¿âÈÎÎñ
}
}
}
else
{
s = s + 0;
}
continue;
}
#endregion
#region êɵú¼ì²âË«Éý»õλ³ö¿â»òÕßÒÆ¿âÄÚ²â»õλʱ£¬ÏµÍ³ÖÐÎÞδÍê³ÉµÄ¶ÔÓ¦µÄÍâ²à»õλ³ö¿âÈÎÎñ
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "M")//
{
long Index = ccf.GetManageTaskIndexfromMonitor(minMidx);
int Mk = ccf.GetManageTaskKindIndexFromMonitor(minMidx);
sql.Clear();
sql.Append(string.Format("SELECT FLANEWAY,FSTARTCELL,F_RELATIVECONTORLID FROM T_Manage_Task WHERE (FID = {0} and F_ManageTaskKindIndex={1} )", Index, Mk));
dvdv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdv.Count > 0)
{
if ((Convert.ToInt32(dvdv[0]["FSTARTCELL"].ToString().Substring(0, 2)) % 4 == 2) || (Convert.ToInt32(dvdv[0]["FSTARTCELL"].ToString().Substring(0, 2)) % 4 == 3))
{
s = s + 0;//½ü¶Ñ¶â»ú Ö±½Ó³ö
}
else //
{
string ZZ = "";
int ZZZ = 0;
ZZZ = Convert.ToInt32(Convert.ToInt32(dvdv[0]["FSTARTCELL"].ToString().Substring(0, 2)));
//if (Convert.ToInt32(dvdv[0]["FSTARTCELL"].ToString().Substring(0, 2)) % 4 == 1)
//{
// ZZ = string.Format("{0:D2}", ZZZ + 1);
//}
//else
if (Convert.ToInt32(dvdv[0]["FSTARTCELL"].ToString().Substring(0, 2)) % 4 == 0)
{
ZZ = string.Format("{0:D2}", ZZZ - 1);
}
string cell = ZZ + dvdv[0]["FSTARTCELL"].ToString().Substring(2, (dvdv[0]["FSTARTCELL"].ToString().Length - 2));
sql.Clear();
sql.Append(string.Format("SELECT * FROM IO_CONTROL WHERE (START_DEVICE_CODE = '{0}' and CONTROL_STATUS='0' )", cell));
DataView dvdd = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdd.Count > 0)
{
//¹ÜÀíϵͳÖÐÓÐδ»ñÈ¡µÄ
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "Ô¶¶â»ú³ö/ÒÆ¿âÈ¡»õʱ¹ÜÀíÓнü¶â»úÈÎÎñδ»ñÈ¡£¬½ü¶â»úÈÎÎñ»ñȡִÐкó²ÅÄÜȡԶ¶â»ú£¡");
}
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE (FSTARTCELL = '{0}' and (FCONTROLTASKTYPE =2 or FCONTROLTASKTYPE =3) )", cell));
DataView dvda = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvda.Count == 1)//ÓжÔÓ¦µÄ½ü¶â»ú³ö¿âºÍÒÆ¿âÈÎÎñ
{
//ÅжϸÃÈÎÎñÓÐÎÞ²ð·Ö
if ((Convert.ToInt32(dvda[0]["FIntoStepOK"]) == 0))//ͬÖÕµãδ²ð·Ö
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "Ô¶¶â»ú³ö/ÒÆ¿âÈÎÎñÈ¡»õÓжÔÓ¦½ü¶â»úÈÎÎñδ²ð·Ö£¡");
}
else//²»Í¬ÖÕµãÒѾ­²ð·ÖÈç¹û¶ÔÓ¦µÄ¶Ñ¶â»úÈ¡·ÅÖ¸Áî¶¼Íê³ÉÁ˾ͿÉÒÔͨ¹ý
{
//// ½ðºÅÔö¼ÓÅÐ¶Ï Èç¹ûÊǹØÁªÈÎÎñ ¼ì²âÈÃÆäͨ¹ý
//if ((Convert.ToInt32(dvdv[0]["F_RELATIVECONTORLID"]) == Convert.ToInt32(dvda[0]["F_RELATIVECONTORLID"])) && (-1 != Convert.ToInt32(dvda[0]["F_RELATIVECONTORLID"])))
//{
// s = s + 0;//¹ØÁªÈÎÎñ·ÅÐУ¬×îºó·¢ËÍʱÏÈ·¢½ü¶Ñ¶â»ú²à¼´¿É
//}
//else
//{
// ½ðºÅÔö¼ÓÅÐ¶Ï ²»ÊǹØÁªÈÎÎñ²»ÄÜͨ¹ý
string[] split = new string[3];
split = cell.Split('-');
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE (F_NumParam1 = {0} and F_NumParam2 = {1} and F_NumParam3 = {2} )", Convert.ToInt32(split[0]), Convert.ToInt32(split[1]), Convert.ToInt32(split[2])));
DataView dvdb = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvdb.Count > 0)//½ü¶â»úÈ¡·ÅÈÎÎñ»¹Î´Íê³É ¼ì²â²»ÄÜͨ¹ý
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "Ô¶¶â»ú³ö/ÒÆ¿âÈÎÎñÈ¡»õÓжÔÓ¦½ü¶â»úÈÎÎñδÍê³É£¡");
}
else
{
s = s + 0;//½ü¶â»úÈ¡·ÅÈÎÎñÒѾ­×öÍê
}
//}
}
}
else if (dvda.Count > 1)
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "Ô¶¶â»ú³ö/ÒÆ¿âÈÎÎñÈ¡»õÓÐÁ½ÌõÒÔÉ϶ÔÓ¦½ü¶â»úÈÎÎñ£¬ÇëÈ˹¤¼ì²é£¡");
}
else
{
s = s + 0;//²¢Ã»ÓÐÆä¶ÔÓ¦µÄ ½ü¶â»úµÄδÍê³ÉµÄÈÎÎñ
}
}
}
else
{
s = s + 0;
}
continue;
}
#endregion
#region ¼ì²âÉ豸ÊÇ·ñ±»¶Ñ¶â»úÔ¤Ô¼
//20120409
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "R")//¼ì²âÉ豸ÊÇ·ñ±»¶Ñ¶â»úÔ¤Ô¼
{
sql.Remove(0, sql.Length);
sql.Append("select F_ManTaskReserve from T_Base_Device where F_ManTaskReserve>0 and F_DeviceIndex=").Append(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
object obr = dbo.GetSingle(sql.ToString());
if (obr != null)
{
if (obr.ToString() != (mti.ToString() + fid.ToString()))
{
s = s + 1;
AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "±»µ÷¶ÈÈÎÎñ:").Append(obr.ToString()).Append("Ô¤Ô¼£¡");
}
else
{
s = s + 0;
}
}
continue;
}
#endregion
#region ¼ì²âÉ豸¹âµçÐźÅ
//¼ì²âÉ豸µÄ¹âµçÐźţºD-12001.0±íʾÊäËÍ»ú12001µÄÈë¿Ú¿ª¹ØÓÐÎD12001.1±íʾÊäËÍ»ú12001µÄÈë¿Ú¿ª¹ØÎÞÎï
//D-12001.2±íʾÊäËÍ»ú12001µÄ¶¥Éý¸ß루¸ßµ½Î»£©£»D12001.3±íʾÊäËÍ»ú12001µÄ¶¥Éý²»ÔÚµÍ루²»Êǵ͵½Î»£©
if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "D")
{
int devicebyte = 0, devbit = 0;
DS = AheadDetect[i].Trim().Substring(1).Split(dd);
int.TryParse(DS[0], out devicebyte);
int.TryParse(DS[1], out devbit);
//ÅжÏÊÇ·ñ¼ì²â¸ºÊýË÷ÒýÖµ£¨¸ºÊý´ú±íÊÇ·ñÂú×㿪¹ØÁ¿£½£±µÄÖ´ÐÐǰÌᣩ
if (devicebyte < 0)
{
#region ¸ºÊý´ú±íֵΪ£±µÄ¿ª¹ØÁ¿¼ì²â
int fsn = CStaticClass.GetDevicePhotoelectric(-devicebyte, devbit);//20101124
if (fsn != 1)//20110505
{
StringBuilder kg = new StringBuilder();
switch (devbit)
{
case 0:
kg.Append(".0ÓÐÎï");
break;
case 1:
kg.Append(".1ÓÐÎï/²æÎ´ÊÕµ½Î»");
break;
case 2:
if (ccf.GetDeviceKindIdx(-devicebyte) == 31)
{
kg.Append("¸ßλ");
}
else
{
kg.Append(".2ÓÐÎï/²æÎ´É쵽λ");
}
break;
case 3:
kg.Append(".3µÍλ");
break;
case 4:
kg.Append(".4¸ßλ");
break;
case 5:
kg.Append("ÓÐÎï");
break;
case 6:
kg.Append("¸ßλ");
break;
case 7:
kg.Append("µÍλ");
break;
default:
break;
}
AheadDetectUnallow.Append(Convert.ToInt32((-devicebyte)).ToString() + kg.ToString() + "¹âµç¿ª¹Ø²»ÕÚµ²£¡");
}
fs = fs & fsn;
#endregion
}
else
{//
#region ÕýÊýÖµ²»ÄÜΪ£±µÄ¿ª¹ØÁ¿¼ì²â
int sssn = CStaticClass.GetDevicePhotoelectric(devicebyte, devbit);
if (sssn != 0)//20110505
{
StringBuilder kg = new StringBuilder();
switch (devbit)
{
case 0:
kg.Append(".0ÓÐÎï");
break;
case 1:
kg.Append(".1ÓÐÎï");
break;
case 2:
if (ccf.GetDeviceKindIdx(devicebyte) == 31)
{
kg.Append("¸ßλ");
}
else
{
kg.Append(".2ÓÐÎï");
}
break;
case 3:
kg.Append(".3µÍλ");
break;
case 4:
kg.Append(".4¸ßλ");
break;
case 5:
kg.Append("ÓÐÎï");
break;
case 6:
kg.Append("¸ßλ");
break;
case 7:
kg.Append("µÍλ");
break;
default:
break;
}
AheadDetectUnallow.Append(devicebyte.ToString() + kg.ToString() + "¹âµç¿ª¹ØÕÚµ²£¡");
}
s = s + sssn;
#endregion
}
}
#endregion
#region ÉϺ£êɵú£¬¼ì²âÊÇ·ñÓгäµçËø
//if (AheadDetect[i].Trim().Substring(0, 1).ToUpper() == "C")
//{
// sql.Remove(0, sql.Length);
// sql.Append(
// "select F_SwitchLock from T_Base_Device where F_SwitchLock>0 and F_DeviceIndex=")
// .Append(Convert.ToInt32(AheadDetect[i].Trim().Substring(1)));
// object obr = dbo.GetSingle(sql.ToString());
// if (obr != null)
// {
// if (obr.ToString() != (mti.ToString() + fid.ToString()))
// {
// //ÊÇ·ñ¿ÉÒÔÔÚ´Ë´¦Ç¿ÖÆÅжÏһϵçÁ¿ÒѾ­´óÓÚ50 Ç¿ÖÆ½âËø°Ñ³µµ÷×ߣ¬ÔÚËÍ»õ¹ý³ÌÖоÍ×Ô¶¯³äºÃdzf
// s = s + 1;
// AheadDetectUnallow.Append(AheadDetect[i].Trim().Substring(1) + "±»³äµçÈÎÎñ:").Append(obr.ToString()).Append("Ô¤Ô¼£¡");
// }
// else
// {
// s = s + 0;
// }
// }
//}
#endregion
}
}
#region ·ÇÊÖ¹¤ÈÎÎñ£¬Èç¹ûÓÐÊÖ¹¤ÈÎÎñµÈ´ýÖ´ÐÐÏÈÖ´ÐÐÊÖ¹¤ÈÎÎñ
if (mti != 4)
{//20120405
if (DeviceHandTaskIfWaitRun(devinfo.DeviceIndex) == true)
{
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "ÊÖ¹¤ÈÎÎñ»òÕß±ÜÈÃÈÎÎñµÈ´ýÔËÐУ¡");
s += 1;
}
}
#endregion
#region ¼ì²âÏò¹ÜÀíÉêÇëÈë¿âÈÎÎñÌõÂëºÍPLCASK¼Ç¼ÊÇ·ñÆ¥Åä êɵú
//Ôö¼ÓÊäËÍվ̨Ïò¹ÜÀíÉêÇëÈë¿âÈÎÎñ£¬»òÕßÌõÂë±È¶ÔµÄÈÎÎñ£¬É¨ÃèºóÈ˹¤ËæÒâ°á×ßÏä×ӵı£»¤£¬Èë¿âÈÎÎñÌõÂëºÍPLCAsk¼Ç¼µÄ²»Ïàͬ²»ÔÙÖ´ÐÐÈÎÎñ
sql.Remove(0, sql.Length);
sql.Append("SELECT T_Base_Device.F_DeviceIndex FROM T_Base_Device,T_Base_PLC_Ask WHERE ( T_Base_Device.F_DeviceIndex = T_Base_PLC_Ask.F_DeviceIndex) and (T_Base_Device.F_DeviceKindIndex = 7) AND T_Base_PLC_Ask.F_BindingDevice = ").Append(devinfo.DeviceIndex);
object obr1 = dbo.GetSingle(sql.ToString());
if (obr1 != null)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_BarCode FROM T_Base_PLC_Ask where F_BindingDevice=").Append(devinfo.DeviceIndex);
object obr = dbo.GetSingle(sql.ToString());
if (obr != null)
{
if ((obr.ToString().IndexOf(ccf.GetBarCodeFromMonitor(minMidx)) < 0) && (ccf.GetBarCodeFromMonitor(minMidx).IndexOf(obr.ToString()) < 0))
{
s = s + 1;
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "¼Ç¼µÄÌõÂë:").Append(obr.ToString()).Append("£¬ºÍÈÎÎñÌõÂë").Append(ccf.GetBarCodeFromMonitor(minMidx)).Append("²»Æ¥Å䣡");
}
}
}
#endregion
if ((s != 0) || (fs != 1))
{
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
#endregion
#region Óл¥³âÉ豸µÄ¶Ñ¶â»ú20111020
if (DeviceKind == 1 && devinfo.VirtualStack > 0)
{
int mutex = ccf.GetStackMutexDevice(DeviceIdx);
if (mutex > 0)
{//¼ì²é»¥³âÉ豸¿ÕÏÐʱµÄλÖúÍÔËÐеÄÄ¿±êλÖÃ
Model.MDevice mutexdev = Model.CGetInfo.GetDeviceInfo(mutex);
int mutexDeviceLockedState = ccf.GetDeviceLockedState(mutex);
if (mutexDeviceLockedState == -1) return true;//20120110
int mutexManTaskReserve = ccf.GetManTaskReserve(mutex);
if ((mutexdev.RunState == 0) && (mutexManTaskReserve <= 0) && (mutexDeviceLockedState == 0))
{//
#region mutex¿ÕÏС¢ÎÞÈÎÎñ¡¢ÎÞ¹ÜÀíÈÎÎñÔ¤Ô¼Ëø
int xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
int zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
int BCcoor = GetBarcodeCoor(xcoor, zcoor);
if (mutex > DeviceIdx)
{//mutex=35002
if ((BCcoor + StackMutexXCoor) >= mutexdev.XCoor)//mdev.XCoorÈç¹ûÊÇÌõÂë´øÖµÐèҪת»»ÎªÁÐÖµ
{
InsertStackMutexOrder(mutex, 2, (BCcoor + StackMutexXCoor), 5);
if (mutexdev.XCoor > 52000)//20120110
{
return true;
}
else
{
if (devinfo.XCoor <= mutexdev.XCoor - minStackMutexXCoor)
{
return true;
}
else
{
return false;
}
}
}
}
else
{//mutex35001
if (BCcoor >= (StackMutexXCoor + StackZeroXCoor))
{
BCcoor = (BCcoor - StackMutexXCoor);
}
else
{
return true;//¶Ô¿ª±¨¾¯°É£¬¹ÜÀíÏÂÈÎÎñ´íÁË£¬»òÕß·ÖÅä¶Ñ¶â»úÉ豸´íÎó
}
if (BCcoor <= mutexdev.XCoor)//mdev.XCoorÈç¹ûÊÇÌõÂë´øÖµÐèҪת»»ÎªÁÐÖµ
{
InsertStackMutexOrder(mutex, 2, BCcoor, 5);
if (mutexdev.XCoor < 4481)//20120110
{
return true;
}
else
{
if (devinfo.XCoor > mutexdev.XCoor + minStackMutexXCoor)
{
return true;
}
else
{
return false;
}
}
}
}
#endregion
}
else
{//mutexÓÐÈÎÎñÔËÐÐ
int xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
int zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(TaskIdx, DeviceIdx, ccf.GetDeviceOrderFromMonitor(TaskIdx));
int bccoor = GetBarcodeCoor(xcoor, zcoor);
int mutXcoor; int mutZcoor;
GetStackRunX_Zcoor(mutex, out mutXcoor, out mutZcoor);
if (mutXcoor > 0)
{
#region »¥³âÓÐÈÎÎñÕýÔÚÔËÐÐ
int mutbccoor = GetBarcodeCoor(mutXcoor, mutZcoor);
if (mutex > DeviceIdx)
{
if (mutbccoor <= (bccoor + StackMutexXCoor))
{
if (mutbccoor > 52000)
{//20120110
return true;
}
else
{
return false;
}
}
}
else
{//mutexС
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
{
if (mutbccoor >= (bccoor - StackMutexXCoor))
{
if (mutbccoor < 4481)//20120110
{//20120110
return true;
}
else
{
return false;
}
}
}
else
{
if (bccoor >= 52000)
{
return true;
}
else
{
return false;
}
}
}
#endregion
}
else
{//ÓÐÈÎÎñ£¬±»Ô¤Ô¼£¬µ«Ã»ÔËÐÐÈÎÎñ,¿ÉÄܱ¨¾¯»òÕß´¥ÃþÆÁ¿ØÖÆ
if ((mutexdev.RunState > 0) || (mutexDeviceLockedState != 0))
{// ±¨¾¯»òÕß±»ÈÎÎñËø¶¨
#region »¥³âÉ豸²»¿ÕÏÐ
if (mutex > DeviceIdx)
{//mutex=35002
if (mutexdev.XCoor <= (bccoor + StackMutexXCoor))
{
return false;//»òÕß·ÅÐÐÖ±½Ó±¨¾¯
}
}
else
{//mutex=35001
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
{
if (mutexdev.XCoor >= (bccoor - StackMutexXCoor))
{
return false;
}
}
else
{
return false;
}
}
#endregion
}
else
{
#region mutex±»¹ÜÀíÈÎÎñÔ¤Ô¼ÁË£¬µ«ÊÇ»¹Ã»ÔËÐУ¨¡¾ËÍ»õ¡¿µÈ´ýÔËÐУ©
int deviceorder = GetDeviceOrderFromManTaskReserve(mutexManTaskReserve, mutex);
if (deviceorder == -1) return false;
GetStackRunReserveX_Zcoor(mutex, out mutXcoor, out mutZcoor);
if (mutex > DeviceIdx)
{
if (mutexdev.XCoor <= (bccoor + StackMutexXCoor))
{
//È¥»õλ¸ß¶ÈºÏÊÊλÖñÜÈ㬻òÕßµ½52ÁУ¨60000£©
InsertStackMutexOrder(mutex, deviceorder, (bccoor + StackMutexXCoor), GetLayerHigh(mutZcoor, mutXcoor));
if (mutexdev.XCoor > 52000)//20120110
{
return true;
}
else
{
if (devinfo.XCoor < mutexdev.XCoor - minStackMutexXCoor)
{
return true;
}
else
{
return false;
}
}
}
}
else
{//mutexС
if (bccoor >= (StackMutexXCoor + StackZeroXCoor))
{
if (mutexdev.XCoor >= (bccoor - StackMutexXCoor))
{
//È¥»õλ¸ß¶ÈºÏÊÊλÖñÜÈ㬻òÕßµ½0ÁУ¨2000£©
InsertStackMutexOrder(mutex, deviceorder, (bccoor - StackMutexXCoor), GetLayerHigh(mutZcoor, mutXcoor));
if (mutexdev.XCoor < 4481)
{
return true;
}
else
{
if (devinfo.XCoor > mutexdev.XCoor + minStackMutexXCoor)
{
return true;
}
else
{
return false;
}
}
}
}
else
{
return false;
}
}
#endregion
}
}
}
}
}
#endregion
#region ¶¥Éý»úÏÈ¿ØÖƽü²æÊäËÍ»úËͳö
////20111226
//string r1 = "12001,42001,32001,12009,42009,32009,12017,42017,32017";
//if ((r1.IndexOf(DeviceIdx.ToString()) >= 0) &&(devinfo.IfCorrelDoubleFork!="1"))
//{
// if (IFExitTopPriDeviceIdxTaskWait(DeviceIdx+1) == true)
// {
// return false;
// }
//}
#endregion
int CONTROLTASKTYPE = ccf.GetFCONTROLTASKTYPEFromManageTask(mti, fid);
#region ¶¥Éý»ú¹¹×Ô¹ØÁªÈë¿âÈÎÎñµ¥¶À´¦Àí//20101011
//20100406Èë¿â¶¥Éýʱ±ØÒª¼ì²â£º1102ÄÚ̽Îï¡°-11021¡±£»1121µÍµ½Î»¡°-11212¡±£»ÓйØÁªÈÎÎñʱ£¬1102Íâ̽Îï¡°-11022¡±£»
if ((ccf.GetCorrel_DeviceIndex(devinfo.DeviceIndex, true) == "0") && (CONTROLTASKTYPE == 1) && (devinfo.IfCorrelDoubleFork == "1"))//¶¥ÉýÉ豸×Ô¹ØÁª£¬Èë¿âÈÎÎñ20101124Ôö¼Ó¶¥ÉýÉ豸ÊÇ·ñË«²æÅжÏ
{
string[] CorrelInfo = ccf.GetOwnCorrel_DeviceInfo(devinfo.DeviceIndex);
if (CorrelInfo == null)
{
//20110505
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "ûÓÐ×Ô¹ØÁª£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[5]) == 1) && (CStaticClass.GetDevicePhotoelectric(CorrelInfo[2]) == 1))//½üÏïµÀÓÐÎ¶¥ÉýµÍλ//20101124
{
#region µÈ´ý¹ØÁªÈÎÎñÅä¶Ô
//ÔÚCStaticClass.DoubleForkWaitTime¹æ¶¨Ê±¼äÄڵȴý£»1102£¨11027£©×ª¶¯µÈ´ý
sql.Remove(0, sql.Length);
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(TaskIdx).Append(") AND (F_Remark <> '') AND (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
//(Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime)) > DateTime.Now) ||
if ((GetIOControlStatus(minMidx) != Model.CGeneralFunction.TASKSINGLEFORKRUN) ||
((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1) && (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 0)))//20101124
{
if ((CStaticClass.GetDevicePhotoelectric(CorrelInfo[6]) == 1)
&& (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 0))//Íâ̽ÎÔËÐÐ//20101124
{
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä½ü²æ
long mfid = GetEnableDoubleForkManageTask(1, devinfo.DeviceIndex, fid);
if (mfid > 0)
{
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set FUseAwayFork='0',F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_UseAwayFork='0' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and F_ManageTaskIndex=").Append(mfid).Append("");
dbo.ExecuteSql(sql.ToString());
//ÓÉÓÚÒѾ­·ÖÅä·¾¶²»Ò»¶¨·ûºÏÔ¶½ü»õ²æµÄ·ÖÅäÔ­Ôò£¬ÐèÒª¸ÄµÀ
AlterRoutePath(mti, mfid, CONTROLTASKTYPE, '0', devinfo.DeviceIndex);
}
return true;
}
else
{
//20110505
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "µÈ´ý¹ØÁªÈÎÎñ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
else
{//³¬¹ýµÈ´ýʱ¼ä»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
if (CStaticClass.GetDevicePhotoelectric(CorrelInfo[4]) == 1)//20101124
{
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
dbo.ExecuteSql(sql.ToString());
//20110505
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "µÈ´ý¹ØÁªÈÎÎñ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
dbo.ExecuteSql(sql.ToString());
return true;
}
}
else
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =0) AND (F_Remark = '') AND (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=").Append(TaskIdx).Append(",F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(devinfo.DeviceIndex).Append(")");
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and F_ManageTaskIndex=").Append(fid).Append("");
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=").Append(mti).Append(" and FID=").Append(fid).Append("");
dbo.ExecuteSql(sql.ToString());
//ÓÉÓÚÒѾ­·ÖÅä·¾¶²»Ò»¶¨·ûºÏÔ¶½ü»õ²æµÄ·ÖÅäÔ­Ôò£¬ÐèÒª¸ÄµÀ
AlterRoutePath(mti, fid, CONTROLTASKTYPE, '1', devinfo.DeviceIndex);
return false;
}
}
#endregion
}
else
{
//20110505
AheadDetectUnallow.Append("¶¥Éý»ú¹¹" + devinfo.DeviceIndex.ToString() + "²»Âú×ã¹ØÁª×´Ì¬£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
#endregion
#region ɽ¶«Ê±´ú20250303 12051 ÖÕµã³ö¿â£¬¼ì²éµçÆø³öÈë¿âģʽ
if (CONTROLTASKTYPE == 2 && EndDevice == 12051&&StartDevice!=13008)
{
// Ôö¼ÓÒ»¸öÉ豸ºÅ 12000£¬µçÆøÉϱ¨×´Ì¬µ½state×Ö½Ú 0£¬1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15101);
if (devOutMode.RunState == 1) // Èë¿âģʽ 1£¨ÔËÐУ©£ºÈë¿â 2 ³ö¿â£¨Íê³É£©
{
AheadDetectUnallow.Append("12051Èë¿âģʽ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
else if (CONTROLTASKTYPE == 2 &&StartDevice == 13008 && EndDevice != 12051)
{
// Ôö¼ÓÒ»¸öÉ豸ºÅ 12000£¬µçÆøÉϱ¨×´Ì¬µ½state×Ö½Ú 0£¬1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15101);
if (devOutMode.RunState == 2) // Èë¿âģʽ 1£¨ÔËÐУ©£ºÈë¿â 2 ³ö¿â£¨Íê³É£©
{
AheadDetectUnallow.Append("12051³ö¿âģʽ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
if (CONTROLTASKTYPE == 2 && EndDevice == 120004 && StartDevice != 14004)//»ØÍËÈÎÎñ²»¼ì²â
{
// Ôö¼ÓÒ»¸öÉ豸ºÅ 12000£¬µçÆøÉϱ¨×´Ì¬µ½state×Ö½Ú 0£¬1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15102);
if (devOutMode.RunState == 1) // Èë¿âģʽ 1£¨ÔËÐУ©£ºÈë¿â 2 ³ö¿â£¨Íê³É£©
{
AheadDetectUnallow.Append("12004Èë¿âģʽ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
else if (CONTROLTASKTYPE == 2 && StartDevice == 14004 && EndDevice != 12004)
{
// Ôö¼ÓÒ»¸öÉ豸ºÅ 12000£¬µçÆøÉϱ¨×´Ì¬µ½state×Ö½Ú 0£¬1
Model.MDevice devOutMode = Model.CGetInfo.GetDeviceInfo(15102);
if (devOutMode.RunState == 2) // Èë¿âģʽ 1£¨ÔËÐУ©£ºÈë¿â 2 ³ö¿â£¨Íê³É£©
{
AheadDetectUnallow.Append("12004³ö¿âģʽ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
#endregion
#region ɽ¶«Ê±´ú¶Ñ¶â»úɨÂë¼ì²â,ÐèÒªPLCASKºÍÈÎÎñÌõÂëÒ»Ö lzm
if (CONTROLTASKTYPE == 2 && order == 3&&DeviceKind==1 && mti==1) { //3£ºËÍ»õÈÎÎñ ²»Ó°ÏìÊÖ¶¯ÈÎÎñ
DataView data = new DataView();
// var device = Model.CGetInfo.GetDeviceInfo(dcode);
data = dbo.ExceSQL(string.Format("SELECT F_BarCode FROM T_Base_PLC_Ask WHERE F_BindingDevice={0})", DeviceIdx)).Tables[0].DefaultView;//´ÓÊÓͼ±í»ñÈ¡ÈÎÎñÌõÂë
if (data.Count > 0)
if (data.Count > 0)
{
if (data[0]["F_BarCode"].ToString() != BarCode.ToString())//ÌõÂëºÍɨÂë½á¹ûÒ»ÖÂÕý³£»Ø¸´
{
AheadDetectUnallow.Append($"¶Ñ¶â»úÉ豸{DeviceIdx}ÈÎÎñÌõÂë{data[0]["F_BarCode"].ToString()}ÓëʵÎïÌõÂë{BarCode.ToString()}²»Ò»ÖÂ");
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;
}
}
}
#endregion
#region Ë«ÉìλµÄ¶Ñ¶â»úÔÚÖ´ÐÐÆðµãÊÇÀïλ(1,4ÅÅ)µÄÈÎÎñʱ,ÅжÁÊÇ·ñÓÐÆðµãÊÇÍâλ(2,3ÅÅ)µÄÈÎÎñ ͬʱÅÐ¶Ï ËÍ»õµ½»õλʱ(ÖÕµãΪ2,3)ÅжÏÓÐûÓÐ(1,4)µÄÈÎÎñ£¬¿ØÖƽüÔ¶²æÈ¡ËÍ»õÏȺó
if (devinfo.StackReach == 2 && DeviceKind == 1 && (order == 4))// Ë«Éì¶Ñ¶â»ú£¬ È¡»õ
{
int[] zxy = ccf.GetCoordinatesFromMonitorTask(minMidx);
string neighborzxy = string.Empty;
string sqlstrzxy = string.Empty;//
string sqlman = string.Empty;
//bool insidecell = false;//µ±Ç°ÈÎÎñ¶ÔÓ¦µÄÀïλ»¹ÊÇÍâλ
bool check = false;
if (zxy != null)
{
int getZ = zxy[0];//È¡»õµÄÅÅ×ø±ê
int sendZ = zxy[3]; //ËÍ»õλÖöÔÓ¦µÄÅÅ×ø±ê
int newZ, newX, newY;
int tempZ = getZ;
// if (tempZ>4)
//{
tempZ = getZ % 4;
//}
if (tempZ == 1 || tempZ == 0)//Àïλȡ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÍâλµÄÈ¡»õÈÎÎñ
{//»ñÈ¡ÍâÎ»×ø±ê
if (tempZ == 1)
{
newZ = getZ + 1;
}
else
{
newZ = getZ - 1;
}
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[1], zxy[2]);//»ñµÃÍâÎ»×ø±ê
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceCommandIndex =4) and (F_NumParam1 = {0}) AND (F_NumParam2 = {1}) AND (F_NumParam3 = {2}) and (F_DeviceIndex={3})", newZ, zxy[1], zxy[2], DeviceIdx);
//sqlstrzxy
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FSTARTDEVICE = {0}) AND (FSTARTCELL = '{1}') ", StartDevice, neighborzxy);
//sqlstrzxy
check = true;
if (check)
{
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
if (dvdv.Count > 0)//
{
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
}
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
if (dvdv.Count > 0)//
{
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
}
}
}
tempZ = sendZ;
//if (tempZ>4)
//{
tempZ = sendZ % 4;
//}
if (tempZ == 2 || tempZ == 3)//ÍâλËÍ»õʱ£¬ÒªÅжÁÊÇ·ñÓÐÀïλµÄËÍ»õÈÎÎñ
{//»ñÈ¡ÀïÎ»×ø±ê
if (tempZ == 2)
{
newZ = sendZ - 1;
}
else
{
newZ = sendZ + 1;
}
neighborzxy = string.Format("{0:D3}-{1:D3}-{2:D3}", newZ, zxy[4], zxy[5]);//»ñµÃÍâÎ»×ø±ê
sqlstrzxy = string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE ( F_DeviceCommandIndex =5) and (F_NumParam4 = {0}) AND (F_NumParam5 = {1}) AND (F_NumParam6 = {2}) and (F_DeviceIndex={3})", newZ, zxy[4], zxy[5], DeviceIdx);
sqlman = string.Format("SELECT FID FROM T_Manage_Task WHERE (FSTATUS = 0) AND(FENDDEVICE = {0}) AND (FENDCELL = '{1}') ", EndDevice, neighborzxy);
check = true;
if (check)
{
dvdv = dbo.ExceSQL(sqlstrzxy).Tables[0].DefaultView;
if (dvdv.Count > 0)//
{
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
}
dvdv = dbo.ExceSQL(sqlman).Tables[0].DefaultView;
if (dvdv.Count > 0)//
{
AheadDetectUnallow.Append(string.Format("´æÔÚÏàÁÚ»õλ{0}µÄÓÅÏÈÈÎÎñ£¬¸ÃÈÎÎñÔÝʱ²»ÄÜÖ´ÐÐ! ", neighborzxy));
UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
return false;//²»ÄÜÖ´Ðгö¿âÈÎÎñ
}
}
}
}
}
#endregion
#region lzm20250225 ×¢ÊÍÆäËûÏîÄ¿
//20101011
//#region Ë«²æ¶Ñ¶â»úµÄÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ¡¢Ñé֤˫²æÈÎÎñÊÇ·ñΪ˫²æ¼«ÏÞ»õλ
//if ((devinfo.DeviceKind == 1) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 4))
//{
// string[] DevLanewayIOInfo = ccf.GetDeviceLaneGateInfoFromStackCoor(devinfo.DeviceIndex, minMidx);
// if (DevLanewayIOInfo == null)
// {
// //²»ÊÇÏïµÀ¿ÚµÄÈ¡»õÈÎÎñ²»ÐèÒª¹ØÁª
// CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔ­Òò", minMidx.ToString(), devinfo.DeviceIndex.ToString(), "²»ÊÇÏïµÀ¿ÚµÄÈ¡»õÈÎÎñ²»ÐèÒª¹ØÁª");
// return true;
// }
// Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
// if (corrinfo == null)//20110412û¹ØÁªÈÎÎñ
// {
// #region 20110412¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
// string ChangeForkCell = ccf.IfLimitCellChangeFork(minMidx, devinfo.DeviceIndex);
// if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
// {
// ccf.ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
// }
// #endregion
// #region û¹ØÁªÈÎÎñ
// //string IfCorrel = ccf.GetCorrel_DeviceIndex(minMidx);//20110505
// //if (IfCorrel == "")//ÎÞ¹ØÁª
// //{
// //}
// //else if (IfCorrel == "0")//×Ô¹ØÁª
// //{
// // //20110108
// // dbo.ExecuteSql("update T_Monitor_Task set F_UseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and F_ManageTaskIndex=" + fid + "");
// // dbo.ExecuteSql("update T_Manage_Task set FUseAwayFork='1' where F_ManageTASKKINDINDEX=" + mti + " and FID=" + fid + "");
// // #region 20110412¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
// // string ChangeForkCell = ccf.IfLimitCellChangeFork(minMidx, devinfo.DeviceIndex);
// // if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
// // {
// // ccf.ChangeEndCellCode(minMidx, ChangeForkCell, devinfo.DeviceIndex);
// // }
// // #endregion
// //}
// //else
// //{//ÓйØÁªÕ¾Ì¨
// // #region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
// // if ((CStaticClass.GetDevicePhotoelectric(DevLanewayIOInfo[3]) == 1) && (CStaticClass.GetDevicePhotoelectric(DevLanewayIOInfo[1]) == 1))//Óлõ£¬¶¥Éý¸ßλ
// // {
// // #region ¶¥Éý¸ßλÓлõ
// // bool isend;
// // return GetCorrManageTask(DevLanewayIOInfo, TaskIdx, CONTROLTASKTYPE, mti, fid, dtime,out isend);
// // #endregion
// // }
// // else
// // {
// // CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔ­Òò", minMidx.ToString(), devinfo.DeviceIndex.ToString(), "¶¥Éý¸ßλºÍÓÐÎïÐźŲ»Âú×ãÌõ¼þ");
// // }
// // #endregion
// //}
// #endregion
// }
// else
// {
// #region ÓйØÁªÈÎÎñÐÅÏ¢
// #region ÅжÏÊÇ·ñ»¹ÓпɹØÁªµÄ¹ØÁªÕ¾Ì¨ÈÎÎñ20120906
// //bool isend;
// //GetCorrManageTask(DevLanewayIOInfo, TaskIdx, CONTROLTASKTYPE, mti, fid, dtime,out isend);
// //if (isend == false) return false;
// #endregion
// foreach (int CorrTaskindex in corrinfo.Keys)
// {
// #region Ë«²æÈÎÎñÔÚ´ËÑéÖ¤£¬ÊÇ·ñΪ˫²æ¼«ÏÞ»õλ£¬Ë«¼«ÏÞ»õλʹÓÃË«²æµ¹¿â»õλÐÞ¸ÄÈÎÎñ
// //°Ñµ¹¿â»õλ×÷Ϊȡ»õºÍËÍ»õ¶¯×÷µÄÄ¿±ê»õ룬Ôö¼ÓÈ¡»õºÍËÍ»õ¶¯×÷¶ÔÓÚµ¹¿â»õλµÄÂß¼­ÓÐÎïµÄÌáǰ¼ì²â
// //±¨¸æµ¹¿â»õλÍê³Éʱ£¬×·¼Óµ¹¿â»õλ---¡·ÐèÒª»»²æµÄ¼«ÏÞ»õλµÄÈ¡»õºÍËÍ»õÈÎÎñ
// #region ¼ì²é¹ØÁªÈÎÎñ
// string ChangeForkCell1 = ccf.IfLimitCellChangeFork(CorrTaskindex, devinfo.DeviceIndex);
// #endregion
// if (ChangeForkCell1 != "-") //¹ØÁªÈÎÎñÐèÒªµ¹»»»õ²æ
// {
// ccf.ChangeEndCellCode(CorrTaskindex, ChangeForkCell1, devinfo.DeviceIndex);
// }
// #endregion
// }
// #endregion
// }
//}
//#endregion
//#region Ë«²æAGVµÄÈë¿âÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ¡¢Ñé֤˫²æÈÎÎñÊÇ·ñΪ˫²æ¼«ÏÞ»õλ
//if ((devinfo.DeviceKind == 6) && (devinfo.IfCorrelDoubleFork == "1") && (ccf.GetDeviceOrderFromMonitor(minMidx) == 2) && ((CONTROLTASKTYPE == 1) || (CONTROLTASKTYPE == 4)))
//{
// Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
// if (corrinfo == null)
// {
// #region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
// if (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)
// {//Ã»Ç¿ÖÆµ¥²æÖ´ÐÐ
// //²éÕÒ¹ØÁªÕ¾Ì¨
// int agvCorrel = GetAGVCorrelIndex(TaskIdx);
// if (agvCorrel != -1)
// {
// //²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
// int mfid = GetAGVEnableDoubleForkManageTask(CONTROLTASKTYPE, agvCorrel, devinfo.DeviceIndex);
// if (mfid > 0)
// {
// #region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
// if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
// {
// sql.Remove(0, sql.Length);
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
// dboM.ExecuteSql(sql.ToString());
// sql.Remove(0, sql.Length);
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
// dboM.ExecuteSql(sql.ToString());
// return true;
// }
// #endregion
// sql.Remove(0, sql.Length);
// sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
// dbo.ExecuteSql(sql.ToString());
// sql.Remove(0, sql.Length);
// sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
// dbo.ExecuteSql(sql.ToString());
// return true;
// }
// else
// {
// //20110505
// AheadDetectUnallow.Append("Ë«²æAGVÔÚË«²æÐ£±íվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "µÄÈÎÎñ£¡");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// }
// else
// return true;
// }
// else
// {//¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
// return true;
// }
// #endregion
// }
//}
//#endregion
//#region Ë«²æAGVµÄ³ö¿â¿ÚÊäËÍ»úÈ¡»õÈÎÎñÔÚ´ËÅжÏÊÇ·ñ¹ØÁªË«²æ20110412
//if ((devinfo.DeviceKind == 6) && (devinfo.IfCorrelDoubleFork == "1") && ((ccf.GetDeviceOrderFromMonitor(minMidx) == 2)
// || (ccf.GetDeviceOrderFromMonitor(minMidx) == 4)) && (CONTROLTASKTYPE == 2))
//{
// Dictionary<int, string[]> corrinfo = Model.CGeneralFunction.GetDoubleForkMonitorInfo(minMidx, devinfo.DeviceIndex);
// if (corrinfo == null)
// {
// #region Ë«²æ¶ÔµÈվ̨µÄµ¥ÈÎÎñÔڴ˵ȴý¹ØÁª£¬Ë«²æ¼«ÏÞ»õλ²»¹ØÁª
// if (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN)//20110429²âÊÔÓ¦¸ÃΪGetIOControlStatus(TaskIdx)£¡=
// {//Ã»Ç¿ÖÆµ¥²æÖ´ÐÐ
// //²éÕÒ¹ØÁªÕ¾Ì¨
// int agvCorrel = GetAGVCorrelConveyorIndex(TaskIdx);
// if (agvCorrel != -1)
// {
// #region ²éÕÒ¶ÓÁÐÖÐÊÇ·ñÓÐagvCorrelµÄÈÎÎñ£ºÈç¹ûûÓУ¬²»Ôٵȴý£¬µ¥²æÖ´ÐУ»
// if (GetAGVEnableDoubleForkManageTask(2, agvCorrel, devinfo.DeviceIndex) <= 0)//ûÓÐÄܹØÁªµÄÈÎÎñ£¬²»Ôٵȴý£¬µ¥²æÖ´ÐÐ
// {
// sql.Remove(0, sql.Length);
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
// dboM.ExecuteSql(sql.ToString());
// return true;
// }
// #endregion
// #region 20110412ÓÐÄܹØÁªµÄÈÎÎñ£¬ÅжÏagvCorrelÊÇ·ñÓÐÎï¶øÇÒÈÎÎñÒѾ­µ½È¡»õ״̬
// int[] cstates = CStaticClass.GetDeviceState(agvCorrel);
// int cssstate = -1;
// if (cstates != null)
// {
// cssstate = cstates[1];
// }
// if ((cssstate != 0) || (CStaticClass.GetDevicePhotoelectric(agvCorrel - 2, 0) != 1) || (CStaticClass.GetDevicePhotoelectric(agvCorrel, 2) != 1))//20110412¶¥Éý»ú¿ÕÏС¢Óлõ¡¢µÍλ
// {
// //20110505
// AheadDetectUnallow.Append("Ë«²æAGVÔÚË«²æÐ£±íվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "µÄÈÎÎñ£¡");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// #endregion
// //²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×öË«²æÔÚÊäËÍ»úÈ¡»õÈÎÎñ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
// int mfid = GetAGVFromConveyorDoubleForkGetGoodManageTask(2, agvCorrel, devinfo.DeviceIndex);
// if (mfid > 0)
// {
// #region Öյ㲻Ïàͬ£¬µ¥²æ·Ö±ðÖ´ÐÐ
// if (IFHaveSameEndDevice(fid, mfid, mti) == false)
// {
// sql.Remove(0, sql.Length);
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
// dboM.ExecuteSql(sql.ToString());
// sql.Remove(0, sql.Length);
// sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
// dboM.ExecuteSql(sql.ToString());
// return true;
// }
// #endregion
// #region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
// //if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
// //{
// // sql.Remove(0, sql.Length);
// // sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
// // dboM.ExecuteSql(sql.ToString());
// // sql.Remove(0, sql.Length);
// // sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
// // dboM.ExecuteSql(sql.ToString());
// // return true;
// //}
// #endregion
// sql.Remove(0, sql.Length);
// sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(mfid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
// dbo.ExecuteSql(sql.ToString());
// sql.Remove(0, sql.Length);
// sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
// dbo.ExecuteSql(sql.ToString());
// return true;
// }
// else
// {
// //20110505
// AheadDetectUnallow.Append("Ë«²æAGVÔÚÊäËÍ»úÈ¡»õ" + "£¬Ã»ÕÒµ½¶à²æ¹ØÁªÈÎÎñ£¬¹ØÁªÕ¾Ì¨" + agvCorrel.ToString() + "ÓÐÒì³£ÎïÌåÕÚµ²¿ª¹Ø£¡");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// }
// else
// return true;
// }
// else
// {//¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
// return true;
// }
// #endregion
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬´©Ëó°åÖ´ÐÐÈÎÎñǰ¼ì²âÊÇ·ñ»¹Óе±Ç°²ãµÄÈÎÎñ£¬Èç¹û»¹ÓУ¬²»È¥Ö´ÐÐÆäËû²ãµÄÈÎÎñ
//if (devinfo.IsShuttleBorad == 1 && devinfo.DeviceKind == 1 && _NumParam3 != devinfo.YCoor && CONTROLTASKTYPE != 0)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Monitor_Task WHERE F_DeviceIndex = '")
// .Append(devinfo.DeviceIndex.ToString()).Append("' AND F_DeviceCommandIndex = 3 AND F_Status = 0 AND F_NumParam3 =")
// .Append(devinfo.YCoor).Append(" AND F_MonitorIndex <> ").Append(minMidx);
// if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°å£º" + devinfo.DeviceIndex.ToString() + "´æÔÚËùÔÚ²ãµÄÈÎÎñ£¬ÓÅÏÈÖ´ÐÐËùÔÚ²ãÈÎÎñ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬14003 ,14004£¬Èç¹ûÓл»²ãÈÎÎñÒѾ­·¢ËÍÇÒµ½ÌáÉý»ú£¬ÏȲ»Ö´ÐÐ
//if (DeviceIdx == 14003 || DeviceIdx == 14004)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 and FENDDEVICE ='14005' and F_ChangeStatus =10 and FSTATUS<>0 AND FID <>").Append(fid.ToString());
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// ////´Ë´¦ÐèÒªÅжÏÌáÉý»ú19005ÈÎÒâÒ»¸öÈÎÎñÈÎÎñÒѾ­·¢ËÍ ²»Äܶ¯
// //sql.Remove(0, sql.Length);
// //sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE (F_DeviceIndex = {0} ) and F_Status<>0", 19005));
// //dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// //if (dv.Count > 0)
// //{
// // AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º19005ÕýÔÚÖ´Ðл»²ãÈÎÎñ£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// // UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// // return false;
// //}
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º14005ÕýÔÚÖ´Ðл»²ãÈÎÎñ"+ dv[0]["FID"].ToString() + "£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0}) and F_ManTaskReserve<>0 ", 14005));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14005µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬14002 ,14001£¬Èç¹ûÓл»²ãÈÎÎñÒѾ­·¢ËÍÇÒµ½ÌáÉý»ú£¬ÏȲ»Ö´ÐÐ
//if (DeviceIdx == 14002 || DeviceIdx == 14001)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 and FENDDEVICE ='14006' and F_ChangeStatus =10 and FSTATUS<>0 AND FID <>").Append(fid.ToString());
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// ////´Ë´¦ÐèÒªÅжÏÌáÉý»ú19005ÈÎÒâÒ»¸öÈÎÎñÈÎÎñÒѾ­·¢ËÍ ²»Äܶ¯
// //sql.Remove(0, sql.Length);
// //sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE (F_DeviceIndex = {0} ) and F_Status<>0", 19005));
// //dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// //if (dv.Count > 0)
// //{
// // AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º19005ÕýÔÚÖ´Ðл»²ãÈÎÎñ£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// // UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// // return false;
// //}
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º14006ÕýÔÚÖ´Ðл»²ãÈÎÎñ" + dv[0]["FID"].ToString() + "£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0}) and F_ManTaskReserve<>0 ", 14006));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14006µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬14003 ,14004ÌáÉý»úÈ¡»õÃüÁÈç¹ûÓл»²ãÈÎÎñÒѾ­·¢ËÍÏȲ»Ö´ÐÐ
//if ((DeviceIdx == 14003 || DeviceIdx == 14004)&& order == 4)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 and FENDDEVICE ='14005' and FSTATUS<>0 and FID <>").Append(fid.ToString());
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º´æÔÚÒѾ­·¢Ë͵Ļ»²ãÈÎÎñ" + dv[0]["FID"].ToString() + "£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0}) and F_ManTaskReserve<>0 ", 14005));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14005µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬14001 ,14002ÌáÉý»úÈ¡»õÃüÁÈç¹ûÓл»²ãÈÎÎñÒѾ­·¢ËÍÏȲ»Ö´ÐÐ
//if ((DeviceIdx == 14001 || DeviceIdx == 14002) && order == 4)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 and FENDDEVICE ='14006' and FSTATUS<>0 and FID <>").Append(fid.ToString());
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º´æÔÚÒѾ­·¢Ë͵Ļ»²ãÈÎÎñ" + dv[0]["FID"].ToString() + "£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0}) and F_ManTaskReserve<>0 ", 14006));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14006µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬»»²ãÌáÉý»ú14005£¬Èç¹ûÓÐ14003ºÍ14004µÄÃüÁîÒѾ­·¢ËÍ»ò14003ºÍ14004µÄµ÷¶ÈÔ¤Ô¼Ëø²»Îª0 ²»·¢ËÍÈÎÎñ
//if (DeviceIdx == 14005)
//{
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE ( F_DeviceCommandIndex=4 or F_DeviceCommandIndex=5 )and F_Status <> 0 and (F_DeviceIndex = {0} or F_DeviceIndex = {1}) ", 14003, 14004));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ19003ºÍ19004ÒÑ·¢Ë͵ÄÈÎÎñ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0} or F_DeviceIndex = {1}) and F_ManTaskReserve<>0 ", 14003, 14004));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14003ºÍ14004µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬»»²ãÌáÉý»ú14006£¬Èç¹ûÓÐ14001ºÍ14002µÄÃüÁîÒѾ­·¢ËÍ»ò14001ºÍ14002µÄµ÷¶ÈÔ¤Ô¼Ëø²»Îª0 ²»·¢ËÍÈÎÎñ
//if (DeviceIdx == 14006)
//{
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Monitor_Task WHERE ( F_DeviceCommandIndex=4 or F_DeviceCommandIndex=5 )and F_Status <> 0 and (F_DeviceIndex = {0} or F_DeviceIndex = {1}) ", 14001, 14002));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14001ºÍ14002ÒÑ·¢Ë͵ÄÈÎÎñ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0} or F_DeviceIndex = {1}) and F_ManTaskReserve<>0 ", 14001, 14002));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°åÌáÉý»ú£º" + devinfo.DeviceIndex.ToString() + "·¢ËÍʱ´æÔÚ14001ºÍ14002µ÷¶ÈÔ¤Ô¼Ëø ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬»»²ãÈÎÎñÖ´ÐУ¬Èç¹ûÓбðµÄ»»²ãÈÎÎñ ÎÞÂÛÄǸöÉ豸¶¼²»·¢ËÍÃüÁî
//if (CONTROLTASKTYPE==5)
//{
// if (DeviceIdx == 14005|| DeviceIdx == 14006)
// {
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 AND FID <>").Append(fid.ToString());
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// for (int k = 0; k < dv.Count; k++)
// {
// //´Ë´¦ÅжÏÓÐÒѾ­¹ýÌáÉý»úµÄÈÎÎñ²»·¢ËÍ
// if ((dv[k]["FSTATUS"].ToString() != "0")&& (dv[k]["F_ChangeStatus"].ToString() != "0"))
// {
// AheadDetectUnallow.Append("ÓÐÒѾ­¹ýÌáÉý»úµÄÖ´ÐеĻ»²ãÈÎÎñ" + dv[k]["FID"].ToString() + "£¬µÈ´ýÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
// }
// }
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬´©Ëó°åÖ´ÐÐÆäËû²ãÈÎÎñ֮ǰÅжϣ¬Èç¹û´æÔÚ¸ÃλÖõĻ»²ãÈÎÎñ£¬ÏÈÖ´Ðл»²ãÈÎÎñ²Å¿ÉÖ´ÐÐÈ¡»õÈÎÎñ
//if (devinfo.IsShuttleBorad == 1 && devinfo.DeviceKind == 1 && CONTROLTASKTYPE != 5)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE FPALLETBARCODE = '").Append(fid.ToString())
// .Append("' AND FCONTROLTASKTYPE = 5");
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´©Ëó°å£º" + devinfo.DeviceIndex.ToString() + "ÕýÔÚÖ´Ðл»²ãÈÎÎñ£¬µÈ´ý»»²ãÈÎÎñÖ´ÐÐÍê³É");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬·¢ËÍ´©Ëó°åÈÎÎñʱÅжÏÊÇ·ñ´æÔÚ³äµçÈÎÎñ
//if ((devinfo.DeviceKind == 1) && (CONTROLTASKTYPE != 6))
//{
// sql.Remove(0, sql.Length);
// sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE (FCONTROLTASKTYPE = 6) and FSTARTDEVICE = '{0}' and FSTATUS>=0", devinfo.DeviceIndex.ToString()));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// AheadDetectUnallow.Append("´æÔÚ"+ devinfo.DeviceKind .ToString()+ "µÄ³äµçÈÎÎñ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬·¢ËÍ´©Ëó°åÈκÎÈÎÎñ¶¼ÐèÒªÅжÏûÓд©Ëó°åÉϱ¨Ïàͬ²ã
//if ((devinfo.DeviceKind == 1) )
//{
// sql.Clear();
// sql.Append(string.Format("select count(*)-count(distinct F_Postion) as num from SHUTTLE_POSITION "));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (Convert.ToInt32(dv[0]["num"]) != 0)
// {
// AheadDetectUnallow.Append("·¢ËÍÈÎÎñʱÓгµÉϱ¨Ïàͬ²ã");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// }
// }
//}
//#endregion
//#region Ãñº½¶þËù£¬14005 14006 ÔÚÈ¡³µÖ¸ÁîǰÅжÏ.2ÊÇ·ñΪ1£¬1±íʾ²æ×ÓÒѾ­ÊÕµ½Î» .1Ϊ1±íÃ÷²æ×ÓÉ쵽λ .2Ϊ1±íÃ÷²æ×ÓÊÕµ½Î»
//if ((DeviceIdx == 14005|| DeviceIdx == 14006) && (order == 4|| order == 5))
//{
// if (devinfo.SplitByte_2 != 1)
// {
// AheadDetectUnallow.Append("ÌáÉý»ú"+ DeviceIdx.ToString() + "²æ×ÓδÊÕµ½ÕýȷλÖÃ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, minMidx);
// return false;
// }
//}
//#endregion
#endregion
return true;
}
catch (Exception ex)
{
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs("tsStatus", "·¢ËÍÖ¸ÁîÌáǰ¼ì²âʱ·¢Éú´íÎó£º" + ex.StackTrace + ex.Message);
OnRefreshMonitor(rme);
return false;
}
finally
{
dv.Dispose();
dvdv.Dispose();
barcodeDV.Dispose();
}
}
private bool IFExitTopPriDeviceIdxTaskWait(int DeviceIdx)
{
sql.Clear();
DataView dv0 = new DataView(); DataView dv = new DataView();
try
{
sql.Append(string.Format("SELECT F_ManageTaskIndex, F_ManageTASKKINDINDEX FROM T_Monitor_Task WHERE (F_DeviceIndex = {0})", DeviceIdx));
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
sql.Clear();
sql.Append(string.Format("SELECT top 1 F_DeviceIndex,F_Status FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX = {0}) and F_ManageTaskIndex={1} order by F_MonitorIndex asc", Convert.ToInt32(dv[i]["F_ManageTASKKINDINDEX"]), Convert.ToInt32(dv[i]["F_ManageTASKINDEX"])));
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv0.Count > 0)
{
if ((dv0[0]["F_DeviceIndex"].ToString() == DeviceIdx.ToString()) && (dv0[0]["F_Status"].ToString() == "0"))
{
return true;
}
}
}
return false;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv0.Dispose();
}
}
private int GetBarcodeCoor(int xcoor, int zcoor)
{
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor = {0}) AND (ZCoor = {1})", xcoor, zcoor)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0][0]);
}
else
{
dv = dbo.ExceSQL(string.Format("SELECT BarcodeCoor FROM T_Base_BarcodeCoor WHERE (XCoor1 = {0}) AND (ZCoor1 = {1})", xcoor, zcoor)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0][0]);
}
else
{
return 0;
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// »ñµÃ·¢ËÍÐÅÏ¢
/// </summary>
/// <param name="minMidx">É豸ָÁîË÷Òý</param>
public bool GetSendInfo(int minMidx)
{
DataView dvD = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_DeviceKindIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,").Append(
"F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect,F_ManTaskReserve,F_LockedState,").Append(
"F_Associate,F_SerialNumber,F_RouteID,F_DeviceIndex,F_DeviceCommandIndex,").Append(
"F_MonitorIndex,F_ManageTaskIndex,F_ManageTaskKindIndex,F_OutsideAltDevice,").Append(
"F_InsideAltDevice,F_StartDevice,F_EndDevice,F_RouteKind,F_UseAwayFork,F_AgvNo ").Append(
" FROM V_Monitor_Route_Device where F_MonitorIndex=").Append(minMidx);
dvD = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvD.Count > 0)
{
if (dvD[0]["F_AheadDetect"] != DBNull.Value)
{
_AheadDetect = dvD[0]["F_AheadDetect"].ToString();
}
else
{
_AheadDetect = "";
}
if (dvD[0]["F_ManTaskReserve"] != DBNull.Value)
{
_ManTaskReserve = Convert.ToInt32(dvD[0]["F_ManTaskReserve"]);
}
else
{
_ManTaskReserve = 0;
}
if (dvD[0]["F_Associate"] != DBNull.Value)
{
_Associate = Convert.ToInt32(dvD[0]["F_Associate"]);
}
else
{
_Associate = 0;
}
if (dvD[0]["F_LockedState"] != DBNull.Value)
{
_LockedState = Convert.ToInt32(dvD[0]["F_LockedState"]);
}
else
{
_LockedState = 0;
}
if (dvD[0]["F_NumParam1"] != DBNull.Value)
{
_NumParam1 = Convert.ToInt32(dvD[0]["F_NumParam1"]);
}
else
{
_NumParam1 = 0;
}
if (dvD[0]["F_NumParam2"] != DBNull.Value)
{
_NumParam2 = Convert.ToInt32(dvD[0]["F_NumParam2"]);
}
else
{
_NumParam2 = 0;
}
if (dvD[0]["F_NumParam3"] != DBNull.Value)
{
_NumParam3 = Convert.ToInt32(dvD[0]["F_NumParam3"]);
}
else
{
_NumParam3 = 0;
}
if (dvD[0]["F_NumParam4"] != DBNull.Value)
{
_NumParam4 = Convert.ToInt32(dvD[0]["F_NumParam4"]);
}
else
{
_NumParam4 = 0;
}
if (dvD[0]["F_NumParam5"] != DBNull.Value)
{
_NumParam5 = Convert.ToInt32(dvD[0]["F_NumParam5"]);
}
else
{
_NumParam5 = 0;
}
if (dvD[0]["F_NumParam6"] != DBNull.Value)
{
_NumParam6 = Convert.ToInt32(dvD[0]["F_NumParam6"]);
}
else
{
_NumParam6 = 0;
}
if (dvD[0]["F_TxtParam"] != DBNull.Value)
{
_TxtParam = dvD[0]["F_TxtParam"].ToString();
}
else
{
_TxtParam = "-";
}
_serialNumber = Convert.ToInt32(dvD[0]["F_SerialNumber"]);
_routeID = Convert.ToInt32(dvD[0]["F_RouteID"]);
_DeviceIdx = Convert.ToInt32(dvD[0]["F_DeviceIndex"]);
_DeviceOrder = Convert.ToInt32(dvD[0]["F_DeviceCommandIndex"]);
_ManageKindIdx = Convert.ToInt32(dvD[0]["F_ManageTaskKindIndex"]);
_ManageTaskIdx = Convert.ToInt32(dvD[0]["F_ManageTaskIndex"]);
_DeviceKind = Convert.ToInt32(dvD[0]["F_DeviceKindIndex"]);
if (dvD[0]["F_OutsideAltDevice"] != DBNull.Value)
{
_OutsideAltDevice = Convert.ToInt32(dvD[0]["F_OutsideAltDevice"]);
}
else
{
_OutsideAltDevice = 0;
}
if (dvD[0]["F_InsideAltDevice"] != DBNull.Value)
{
_InsideAltDevice = Convert.ToInt32(dvD[0]["F_InsideAltDevice"]);
}
else
{
_InsideAltDevice = 0;
}
_StartDevice = Convert.ToInt32(dvD[0]["F_StartDevice"]);
_EndDevice = Convert.ToInt32(dvD[0]["F_EndDevice"]);
_RouteKind = Convert.ToInt32(dvD[0]["F_RouteKind"]);
if (dvD[0]["F_AgvNo"] != DBNull.Value)
{
_AgvNo = Convert.ToInt32(dvD[0]["F_AgvNo"]);
}
else
{
_AgvNo = 65535;
}
return true;
}
else
{//20120420
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetSendInfoʱ£ºÂ·¾¶±íÀ{0}¡¿É豸Ë÷Òý²»´æÔÚ£¡", GetDeviceFromMonitor(minMidx).ToString());
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dvD.Dispose();
}
}
/// <summary>
/// ·¢ËÍÖ¸¶¨µ÷¶ÈÈÎÎñºÅµÄÃüÁî
/// </summary>
/// <param name="MonitorIndex"></param>
/// <returns></returns>
public bool SendMonitorTask(int MonitorIndex)
{
try
{
lock (thisLock)
{
char[] sep = new char[1] { '-' };
int msgIdx = 0;//ÏûÏ¢±àºÅ
bool sendok;
int jiangqunum = 0;
int boxnum = 0;// add by lyj20180503
#region ×¢ÊÍ by lyj20180619 ¶à²æ¹ØÁªÉ豸ָÁÈç¹û²»ÄÜͬ²½Ö´ÐУ¬·¢Ë;àÀë¶Ñ¶â»úµ±Ç°Î»ÖýüµÄÉ豸ָÁî
//MonitorIndex = GetDoubleForkMinRouteTask(MonitorIndex);
//if (MonitorIndex == -1) { return false; }
#endregion
//»ñµÃÒª·¢Ë͵ÄÐÅÏ¢
if (GetSendInfo(MonitorIndex) == false) { return false; }
int deviceIdx = _DeviceIdx;
int deviceKind = _DeviceKind;
int deviceOrder = _DeviceOrder;
int manageKindIdx = ccf.GetManageTaskKindIndexFromMonitor(MonitorIndex);
long manageTaskIdx = ccf.GetManageTaskIndexfromMonitor(MonitorIndex);
int tasktype = ccf.GetFCONTROLTASKTYPEFromManageTask(manageKindIdx, manageTaskIdx);
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
int relaiddd = ccf.GetRELATIVECONTORLIDFromManageTask(manageKindIdx, manageTaskIdx);
#region add by lyj20180508ÓйØÁªµÄËÍ»õÈÎÎñ£¬·¢ËÍʱ¼ì²âÊÇ·ñÓÐÈ¡»õÖ¸ÁÈç¹ûÓÐÔò²»·¢ËÍ
if (deviceKind==40&&deviceOrder==5&&relaiddd>0)
{
bool flags = ccf.getSentOrNoTask(deviceOrder,relaiddd);
if(flags==true)
{
return false;
}
}
#endregion
//if (((deviceKind == 1 && (devinfo.YCoor == 0)) || (deviceKind == 4) && (devinfo.XCoor == 0) && (devinfo.YCoor == 0)) && (devinfo.VirtualStack != deviceIdx))//20130510
//{
// AheadDetectUnallow.Clear();
// AheadDetectUnallow.Append(_DeviceIdx.ToString() + "µÄ¹âͨѶ±»ÕÚµ²£¬»òÕßûÉϵ磡");
// UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
// return false;
//}
#region add by ÉϺ£êɵú·ÖÅä´©Ëó°å Ãñº½¶þËù
//if (devinfo.IsShuttleBorad == 1 && devinfo.DeviceKind == 1 && deviceIdx == 11000)
//{
// if (deviceOrder==2)
// {
// int shuttleBoardNum= getShuttleBoradNum(MonitorIndex, deviceIdx);
// if (shuttleBoardNum > 0)
// {
// deviceIdx = shuttleBoardNum;
// }
// else
// {
// return false;
// }
// }
//}
#endregion
else
{
if (deviceOrder == 5 && devinfo.DeviceKind == 1 && jiangqunum > 0 && devinfo.IsShuttleBorad != 1)
{
return false;
}
}
if (ccf.GetManageTaskKindIndexFromMonitor(MonitorIndex) == 4)
{
#region ÊÖ¹¤ÈÎÎñ
string ah = "I" + deviceIdx.ToString();
if ((deviceKind != 1) && ((deviceKind != 4)))
{
ah = "";
}
if (AheadDetectOK(MonitorIndex, ah) == false) //²»·ûºÏÔËÐÐÌõ¼þccf.GetBeDetectedDevices(_DeviceIdx))
{
return false;
}
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };
if ((deviceKind == 1) || (deviceKind == 6))
{
#region 20201021_C2³§·¿£¬Éϱ¨´©Ëó°å½«ÒªÇ°ÍùÄÄÒ»²ã
//if (devinfo.IsShuttleBorad == 1 && deviceOrder == 4)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_DeviceIndex = ")
// .Append(deviceIdx.ToString());
// DataView dv = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (gc[1] != Convert.ToInt32(dv[0]["F_Postion"]))
// {
// sql.Remove(0, sql.Length);
// sql.Append("UPDATE SHUTTLE_POSITION SET F_Postion = ")
// .Append(gc[1].ToString()).Append(" WHERE F_DeviceIndex = ")
// .Append(deviceIdx.ToString());
// dboM.ExecuteSql(sql.ToString());
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "¸üйÜÀí´©Ëó°åλÖÃ",
// deviceIdx.ToString(),
// "¸ü¸ÄΪ£º" + gc[1].ToString("D2"));
// }
// }
//}
#endregion
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
}
else if (deviceKind == 4)
{
if (ccf.NeedOptimize(deviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[2]);
}
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[5]);
}
if (sendok == false)
{
if (sdo.CommLayerError != null)
{
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", sdo.CommLayerError);
OnRefreshMonitor(rmea);
}
return false;
}
else
{
//////////////////////////
ccf.SendOrderSuccess(manageKindIdx, manageTaskIdx, MonitorIndex, deviceIdx, _routeID);
#region ¶à²æ¹ØÁªÈÎÎñ£¬ÄÜͬ²½µÄͬʱ±¨¸æ·¢ËÍÃüÁî³É¹¦
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
if (devinfo.IfCorrelDoubleFork == "1")
{
int[] mforkMoninfo = Model.CGeneralFunction.MutiForkIfSync(MonitorIndex, deviceIdx, deviceKind);
if (mforkMoninfo != null)
{
Dictionary<int, string[]> corr = Model.CGeneralFunction.GetDoubleForkMonitorInfo(MonitorIndex, deviceIdx);
for (int i = 0; i < mforkMoninfo.GetLength(0); i++)
{
ccf.SendOrderSuccess(ccf.GetManageTaskKindIndexFromMonitor(mforkMoninfo[i]), ccf.GetManageTaskIndexfromMonitor(mforkMoninfo[i]), mforkMoninfo[i], Convert.ToInt32(corr[mforkMoninfo[i]][2]), Convert.ToInt32(corr[mforkMoninfo[i]][3]));
}
}
}
#endregion
return true;
}
#endregion
}
#region ×Ô¶¯ÃüÁî(taskkind == 1£¬2)
//(taskkind == 1£¬2)×Ô¶¯ÃüÁîºÍÁÙʱ¹ÜÀí¹ÜÀíÃüÁî
///////////////////////////////////////
//2--6Ó¦¸Ã×öµÝ¹éµ÷Óú¯Êý
///////////////////////////////////////
/////////////////////
//20100208
#region »·Ðδ©Ëó³µRGV·ÖÅä³µºÅÐÞ¸ÄÌáǰ¼ì²â
#endregion
////////////////////
//2£ºÌáȡÿ¸ö¹ÜÀíµ¥¾ÝµÄµÚÒ»¸öÉ豸״̬
if (GetFirstDeviceIFLocked(MonitorIndex, true) == false)//ûÓб»Ëø¶¨£¬¿ÕÏÐ
{
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
//7£º·¢ËÍ´ËÉ豸ÃüÁî
//CStaticClass.MessageIndex++;
CStaticClass.MessageIndex = 1;
msgIdx = (CStaticClass.MessageIndex);
sdo = CommModeCreate.CreateSendDeviceOrder(deviceIdx);
//ÅжÏÉ豸ÊÇ·ñΪ¶Ñ¶â»úRGVºÍ£Á£Ç£Ö
int[] gc = new int[6] { _NumParam2, _NumParam3, _NumParam1, _NumParam5, _NumParam6, _NumParam4 };//»ñµÃ×ø±ê
if (gc == null)
{
this.CControlError += string.Format("·¢ËÍÃüÁîʱ²»ÄÜÈ¡µÃÉè±¸×ø±ê£¡");
return false;
}
#region ͬÆðµã´æÔÚ¶àÌõµÈ´ýÏ·¢ÈÎÎñ£¬Òì³£¿ØÖÆ
if (deviceKind == 2)//
{//ÊäËÍÏß,Ö±´©,»·´©
int StartStation = GetMonitorStartStationfromMonitor(MonitorIndex);//Æðµãվ̨
DataView taskMsgs = new DataView();
//»ñȡͬÆðµãµÄµÈ´ýÏ·¢µÄ×ÓÈÎÎñÐÅÏ¢
taskMsgs = dbo.ExceSQL(string.Format("select F_ManageTaskIndex,F_MonitorIndex" +
" from T_Monitor_Task where F_NumParam1={0} and F_Status=0 ",
StartStation)).Tables[0].DefaultView;
//ɸѡÆäÖÐÕýҪ׼±¸Ï·¢µÄÈÎÎñ
int count = 0;
foreach (DataRowView taskMsg in taskMsgs)
{
var taskNumMin = dbo.ExceSQL(string.Format("select top 1 F_MonitorIndex" +
" from T_Monitor_Task where F_ManageTaskIndex={0} order by F_MonitorIndex",
taskMsg["F_ManageTaskIndex"])).Tables[0].DefaultView;
var MinTaskNum = taskNumMin[0]["F_MonitorIndex"].ToString();
var NowTaskNum = taskMsg["F_MonitorIndex"].ToString();
if (MinTaskNum == NowTaskNum)
{//×îСÈÎÎñ==µ±Ç°ÈÎÎñ£¬¼ÆÊý¼Ó1
count++;
}
}
if (count > 1)
{
AheadDetectUnallow.Clear();
AheadDetectUnallow.Append(string.Format("µ±Ç°ÈÎÎñÆðµã´æÔÚ¶àÌõµÈ´ýÏ·¢µÄÈÎÎñ£¬Çë´¦ÀíÒì³£ÈÎÎñ", deviceIdx));
UpdateAheadDetectUnallow(AheadDetectUnallow, MonitorIndex);
return false;
}
}
#endregion
if ((deviceKind == 1) || (deviceKind == 6))
{
//1£º¶Ñ¶â»ú£»4£ºRGV£»6£ºAGVÈç¹ûÐèÒªÓÅ»¯µ÷¶È£¨É豸±íµÄF_NeedOptimize='1'£©
//Ö±½ÓдÈë±í£ºT_Monitor_Task_Child£¬²»·¢ËÍÃüÁî
if (ccf.NeedOptimize(deviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
#region 20201021_C2³§·¿£¬Éϱ¨´©Ëó°å½«ÒªÇ°ÍùÄÄÒ»²ã
//if(devinfo.IsShuttleBorad == 1 && deviceOrder == 4)
//{
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_DeviceIndex = ")
// .Append(deviceIdx.ToString());
// DataView dv = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (gc[1] != Convert.ToInt32(dv[0]["F_Postion"]))
// {
// sql.Remove(0, sql.Length);
// sql.Append("UPDATE SHUTTLE_POSITION SET F_Postion = ")
// .Append(gc[1].ToString()).Append(" WHERE F_DeviceIndex = ")
// .Append(deviceIdx.ToString());
// dboM.ExecuteSql(sql.ToString());
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "¸üйÜÀí´©Ëó°åλÖÃ",
// deviceIdx.ToString(),
// "¸ü¸ÄΪ£º" + gc[1].ToString("D2"));
// }
// }
//}
#endregion
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder,
deviceIdx, gc[0], gc[1], gc[2], gc[3], gc[4], gc[5]);
}
}
else if (_DeviceKind == 4)
{
if (ccf.NeedOptimize(deviceIdx) == true)
{
ccf.InsertMonitorOptimizeChildTask(MonitorIndex);
sendok = true;
}
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[2]);
}
}
else if (_DeviceKind == 7)
{
int ControlType = ccf.GetFCONTROLTASKTYPEFromManageTask(_ManageKindIdx, _ManageTaskIdx);
#region ÌõÂëÉ豸ֱ½Ó±È¶Ô
DataView dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Base_PLC_Ask ,T_Monitor_Task WHERE T_Base_PLC_Ask.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex AND T_Base_PLC_Ask.F_BarCode = T_Monitor_Task.F_TxtParam and (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex)).Tables[0].DefaultView;
if ((dv.Count > 0) || (ControlType != 1))
{//±È¶ÔÕýÈ·
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO=NULL WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1}) and FExceptionNO={2}", obj));
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
}
else
{//±È¶Ô´íÎ󣬸ĵÀÒì³£´¦Àí¿Ú
//ÐÞ¸ÄÄ¿±êλÖÃÖÁÒì³£¿Ú
dv = dbo.ExceSQL(string.Format("SELECT F_Remark,F_BindingDevice,F_BarCode FROM T_Base_PLC_Ask WHERE T_Base_PLC_Ask.F_DeviceIndex = {0}", deviceIdx)).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((CStaticClass.DeviceErrorAutoModifyRoutePath == "1") && (dv[0]["F_BarCode"].ToString() != "111111"))
{
object[] obj = new object[5] { _ManageKindIdx, _ManageTaskIdx, Convert.ToInt32(dv[0][" "]), Model.CGeneralFunction.TASKABEND, Convert.ToInt32(dv[0]["F_BindingDevice"]) };
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={3},FSTARTDEVICE ={4}, FSTARTCELL ='-',FENDDEVICE ={2}, FENDCELL ='-', FENDUCODE =0 WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
ccf.GetUseableRouteIDSubAndModifyRoute(_ManageTaskIdx, _ManageKindIdx, Convert.ToInt32(dv[0]["F_BindingDevice"]));
}
else
{
Model.MError me;
if (dv[0]["F_BarCode"].ToString() == "-")//ɨÃèÆ÷δ¶ÁÌõÂë
{
me = null;
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
//me = Model.CGetInfo.GetErrorInfo(732);
//dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=32 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
}
else if (dv[0]["F_BarCode"].ToString().IndexOf("111111") >= 0)
{//"1111111111"ÌõÂëδ¶Áµ½
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={2} WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
//dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=30 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
me = Model.CGetInfo.GetErrorInfo(730);
}
else
{//ÌõÂë²»ÕýÈ·
object[] obj = new object[3] { _ManageKindIdx, _ManageTaskIdx, Model.CGeneralFunction.TASKABEND };
dbo.ExecuteSql(string.Format("UPDATE T_Manage_Task SET FExceptionNO={2} WHERE (F_ManageTaskKindIndex ={0}) AND (FID ={1})", obj));
Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
// dbo.ExecuteSql(string.Format("update T_Monitor_Task set F_Status=31 WHERE (T_Monitor_Task.F_MonitorIndex = {0})", MonitorIndex));
me = Model.CGetInfo.GetErrorInfo(731);
}
if (me != null)
{
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("notifyIcon1", "¾¯¸æ:" + devinfo.DeviceName + "," + deviceIdx + "·¢Éú¹ÊÕÏ£º" + me.ErrorName);
OnRefreshMonitor(rmea);
}
}
if (_ManageKindIdx == 1)
{
sql.Remove(0, sql.Length);
sql.Append("update IO_Control set ERROR_TEXT='").Append(devinfo.DeviceName).Append(",").Append(deviceIdx).Append("ÌõÂë²»ÕýÈ·£¡").Append("' where CONTROL_ID=").Append(manageTaskIdx);
dboM.ExceSQL(sql.ToString());
}
}
}
//20130709 dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_BarCode = '-' WHERE (F_DeviceIndex = {0}) ", deviceIdx));
#endregion
return true;
}
else if (_DeviceKind == 8)
{//20130510ÔÚ¶©ÔÄ´¦Àí³ÆÖØÈÎÎñºÍÖØÁ¿
//#region ³ÆÖØ
////DataView dv = dbo.ExceSQL(string.Format("SELECT F_BoxBarcode FROM T_Base_PLC_Ask WHERE F_BoxBarcode<>'0' and T_Base_PLC_Ask.F_DeviceIndex = {0}", deviceIdx)).Tables[0].DefaultView;
////if (dv.Count > 0)
////{
//// //Ïò¹ÜÀíдÈëÖØÁ¿
//// dboM.ExecuteSql(string.Format("UPDATE IO_CONTROL SET CONTROL_REMARK ={0} WHERE CONTROL_ID={1}", dv[0][0].ToString(), manageTaskIdx));
//// Model.CGeneralFunction.ActionComplete(deviceIdx, MonitorIndex, 0);
//// dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_BoxBarcode = '0' WHERE (F_DeviceIndex = {0})", deviceIdx));
////}
//#endregion
//return true;
sendok = true;
}
#region add by lyj20180428¼ÓÈë´©Ëó°å¿âË«²æÌáÉý»ú
else if (_DeviceKind == 40)
{
boxnum = Model.CGeneralFunction.getDoubleForkMonitorCount(MonitorIndex,tasktype,deviceOrder);
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[5], boxnum);
}
#endregion
else
{
sendok = sdo.SendDeviceOrder(msgIdx, MonitorIndex, deviceOrder, deviceIdx, gc[5]);
}
if (sendok == false)
{
if (sdo.CommLayerError != null)
{
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", sdo.CommLayerError);
OnRefreshMonitor(rmea);
}
return false;
}
else//·¢ËÍÃüÁî³É¹¦
{
#region 20210425_ÉϺ£êɵú£¬·¢ËͳäµçÈÎÎñ³É¹¦£¬ÉèÖóäµçËø
//if (tasktype == 6)
//{
// sql.Remove(0, sql.Length);
// sql.Append("UPDATE T_Base_Device SET F_SwitchLock = ").Append(MonitorIndex)
// .Append(" WHERE F_DeviceIndex = ").Append(deviceIdx);
// dbo.ExecuteSql(sql.ToString());
//}
#endregion
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_SendFlag='1' where F_MonitorIndex=").Append(MonitorIndex);
dbo.ExecuteSql(sql.ToString());//20100905Ö»ÖØ·¢Ö÷ÈÎÎñ
ccf.SendOrderSuccess(manageKindIdx, manageTaskIdx, MonitorIndex, deviceIdx, _routeID);
#region ¶à²æ¹ØÁªÈÎÎñ£¬ÄÜͬ²½µÄͬʱ±¨¸æ·¢ËÍÃüÁî³É¹¦
//20100323
devinfo = Model.CGetInfo.GetDeviceInfo(deviceIdx);
int[] corrtask = Model.CGeneralFunction.MutiForkIfSync(MonitorIndex, deviceIdx, deviceKind);
if (devinfo.IfCorrelDoubleFork == "1" && devinfo.DeviceKind == 40 && boxnum == 2 )
{
if (corrtask != null)
{
long rfid = 0;
int rmankind = 0, rdev = 0;
for (int i = 0; i < corrtask.GetLength(0); i++)
{
if (corrtask[i]!=0)
{
rfid = ccf.GetManageTaskIndexfromMonitor(corrtask[i]);
rmankind = ccf.GetManageTaskKindIndexFromMonitor(corrtask[i]);
rdev = ccf.GetDeviceindexFromMonitor(corrtask[i]);
ccf.SendOrderSuccess(rmankind, rfid, corrtask[i], rdev, 0);
}
}
}
}
//else if (devinfo.IfCorrelDoubleFork == "1" && devinfo.DeviceKind == 40 && tasktype == 2 && boxnum == 2)
//{
//}
#endregion
return true;
}
}
else
{
return false;
}
#endregion
}
}
catch (Exception ex)
{//20110608
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃSendMonitorTaskʱ£º{0}", ex.StackTrace + ex.Message);
return false;
}
}
int GetDeviceFromMonitor(int monitorIndex)
{
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex, F_DeviceIndex FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(monitorIndex).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_DeviceIndex"]);
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// »ñÈ¡¿ÉÓõÄÄ¿±êλÖãºÈë¿âµÄÏïµÀ»òÕß³ö¿âվ̨
/// </summary>
/// <param name="manageTaskIdx">µ÷¶ÈÈÎÎñË÷Òý</param>
/// <param name="manageKindIdx">µ÷¶ÈÈÎÎñÀà±ð</param>
/// <returns></returns>
bool GetUsableDestination(int manageTaskIdx, int manageKindIdx)
{
//20100610²éÕÒÒ»¸ö·¾¶¿ÉÓã¬ÈÎÎñÊý×îÉÙµÄÖÕµãÉ豸
Dictionary<int, int> advDev = new Dictionary<int, int>();
object ob;
DataView dv = new DataView();
DataRowView dr = null;
DataView dvIO = new DataView();
DataTable dtd = new DataTable();
DataTable dt = new DataTable();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM T_Manage_Task WHERE (FID = ").Append(manageTaskIdx).Append(") AND (F_ManageTaskKindIndex = ").Append(manageKindIdx).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count <= 0)
{
return false;
}
dr = dv[0];
//20091107
sql.Remove(0, sql.Length);
sql.Append("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = ").Append(Convert.ToInt32(dr["FID"])).Append(") AND ((CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(") or (CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEREPLY).Append("))");
dvIO = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvIO.Count <= 0)
{
//Ö»ÐÞÉêÇë¸Äµ÷¶ÈÈÎÎñµÄ·¾¶£¬²»Ð޸ĵ÷¶È×Ô¶¯ÈÎÎñ·¾¶
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
string adviceDev = "";
sql.Remove(0, sql.Length);
sql.Append("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_Warehouse='").Append(dr["FENDWAREHOUSE"]).Append("') and (F_TASKKIND = ").Append(dr["FCONTROLTASKTYPE"]).Append(") and (F_AbendStation=1) and (F_DESTINATION=").Append(dr["FENDDEVICE"]).Append(")");
dtd = dbo.ExceSQL(sql.ToString()).Tables[0];
if (dtd.Rows.Count > 0)//Ô­À´ÖÕµãÊÇÓ¦¼±Õ¾Ì¨ÄÇô»¹·ÖÅäÕâ¸öվ̨£¬²»ÐèÒª¸Ä±ä
{
adviceDev = dtd.Rows[0]["F_DESTINATION"].ToString();
return false;
}
else
{
//²éÕÒ¿ÉÓÃÄ¿±êλÖÃ
sql.Remove(0, sql.Length);
sql.Append("SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_Warehouse='").Append(dr["FENDWAREHOUSE"]).Append("') and (F_TASKKIND = ").Append(dr["FCONTROLTASKTYPE"]).Append(") and (F_DESTINATION <>").Append(dr["FENDDEVICE"]).Append(") and (F_AbendStation=0)");
dt = dbo.ExceSQL(sql.ToString()).Tables[0];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]), dr["FUseAwayFork"]) != -1)
{
//20100610ͳ¼Æµ½ÖÕµãÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñÊý
sql.Remove(0, sql.Length);
sql.Append("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='").Append(dt.Rows[i]["F_DESTINATION"]).Append("' and fstatus>0");
ob = dbo.GetSingle(sql.ToString());
advDev.Add(Convert.ToInt32(dt.Rows[i]["F_DESTINATION"]), Convert.ToInt32(ob));
//20100610 break;
}
}
if (advDev.Count == 0)//20100610
{
return false;
}
else
{//20100610
int mincount = 9999;
foreach (int aaa in advDev.Keys)
{
if (advDev[aaa] < mincount)
{
mincount = advDev[aaa];
adviceDev = aaa.ToString();
}
}
if (adviceDev == "")
{
return false;
}
}
}
else
{//20100610
return false;
}
}
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
//20091128
dboM.TransBegin();
try
{
sql.Remove(0, sql.Length);
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(" where CONTROL_ID=").Append(dr["FID"]).Append("");
dboM.ExceSQL(sql.ToString());
//Ïò¹ÜÀíÉêÇëÐÞ¸ÄÈÎÎñ//
int appid = dboM.GetManageTableIndex("IO_CONTROL_APPLY", true);//CONTROL_APPLY_ID
sql.Remove(0, sql.Length);
sql.Append("INSERT INTO IO_CONTROL_APPLY ( CONTROL_APPLY_ID,CONTROL_ID,CONTROL_APPLY_TYPE,WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME, ").Append(
" CONTROL_APPLY_REMARK)").Append(
"VALUES (").Append(appid).Append(",").Append(dr["FID"]).Append(",2,'").Append(dr["FENDWAREHOUSE"]).Append("','").Append(dr["FPALLETBARCODE"]).Append("','").Append(adviceDev).Append("',0,'").Append(dtime).Append("',null)");
dboM.ExceSQL(sql.ToString());
dboM.TransCommit();
//°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
sql.Remove(0, sql.Length);
sql.Append("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = ").Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX =").Append(manageKindIdx).Append(")");
dbo.ExceSQL(sql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("CControl.GetUsableDestination", "¶Ñ¶â»úÈë¿âÄ¿±êλÖ÷¢Éú¸ÄµÀ", "¹ÜÀíÈÎÎñ£º" +
manageKindIdx.ToString() + "-" + manageTaskIdx.ToString(), "ÌõÂ룺" + dr["FPALLETBARCODE"].ToString().ToUpper());
return true;
}
catch (Exception ex)
{
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
dboM.TransRollback();
return false;
}
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dt.Dispose();
dtd.Dispose();
dv.Dispose();
dvIO.Dispose();
dr = null;
}
}
bool GetRGVIdleDestination(int manageTaskIdx, int manageKindIdx, int RGVGateDevice, bool IfUseNegativeDevice)
{
//20100610 t_Base_device ±íF_UsableEndDevice×ֶδæ·ÅÈë¿â»òÕß³ö¿â¶ÔµÈµÄÉ豸Ë÷Òý×飨ÒԷֺŸô¿ª£©£º
//¸ºÊý´ú±íλÓÚµ±Ç°Éè±¸Ç°Ãæ£¨»·ÐÎRGVÐÐ×ß·½ÏòµÄ·´·½Ïò£©£¬Ö»ÔÊÐíÔÚ·¢ËÍRGVÈ¡»õºÍµÚÒ»¡¢¶þ¸öÔ˶¯Ê±Ê¹Óã»
//ÕýÊý´ú±íµ±Ç°É豸ºóÃæµÄÉ豸£¬¿ÉÒÔÔÚ·¢ËÍËÍ»õºÍ֮ǰµÄËùÓÐÃüÁîʹÓÃ.Ö±µÀRGV¶¼ÊÇÕýÊý¡£
//T_Base_RGV_GateÐÂÔö×ֶΡ°F_EndDevice¡±ÓÃÓÚ¼ÇÔØÈë¿âʱ¿¿½üÏïµÀÒ»²àµÄRGV³öÈë¿ÚÊäËÍ»úµÄ¶ÔÓ¦µÄÏïµÀÉ豸Ë÷Òý
//»òÕß³ö¿âʱ¿¿½ü³ö¿âվ̨һ²àµÄÊäËÍ»ú¶ÔÓ¦µÄ³ö¿âվ̨Ë÷Òý
//¿É±ä¸üÄ¿±êλÖõÄÑ¡ÔñÔ­Ôò£ºRGVÄ¿±êλÖÿÕÏС¢ÎÞÎĿ±êλÖòÎÓëµÄÕýÔÚÖ´Ðеĵ÷¶ÈÈÎÎñÊý×îÉÙ
DataView dv = new DataView();
DataRowView dr = null;
string adviceDev = "";
char[] cc = new char[1] { ';' };
string[] sp;
DataView dvIO = new DataView();
Dictionary<int, int> advDev = new Dictionary<int, int>();
object ob;
DataView dvu = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM T_Manage_Task WHERE (FID = ").Append(manageTaskIdx).Append(") AND (F_ManageTaskKindIndex = ").Append(manageKindIdx).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count <= 0)
{
return false;
}
dr = dv[0];
//Ö»ÐÞÉêÇë¸Äµ÷¶ÈÈÎÎñµÄ·¾¶£¬²»Ð޸ĵ÷¶È×Ô¶¯ÈÎÎñ·¾¶
if (dr["F_ManageTaskKindIndex"].ToString() != "1") return false;
sql.Remove(0, sql.Length);
sql.Append("select CONTROL_ID, CONTROL_STATUS from IO_Control where (CONTROL_ID = ").Append(Convert.ToInt32(dr["FID"])).Append(") AND ((CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(") or (CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKCANCEL).Append(") or(CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEREPLY).Append("))");
dvIO = dboM.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvIO.Count <= 0)
{
#region ¸ù¾ÝT_Base_Device±íµÄF_UsableEndDevice²éÕÒ¿ÉÓÃÖÕµãÉ豸
sql.Remove(0, sql.Length);
sql.Append("select F_UsableEndDevice from T_Base_Device where F_UsableEndDevice is not null and F_DeviceIndex=").Append(RGVGateDevice).Append("");
dvu = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvu.Count > 0)
{
int enddv = 0, DESTINATION = 0;
sp = dvu[0]["F_UsableEndDevice"].ToString().Split(cc);
for (int i = sp.GetLowerBound(0); i <= sp.GetUpperBound(0); i++)
{
if (int.TryParse(sp[i], out enddv) == false) continue;
enddv = Convert.ToInt32(sp[i]);
if (enddv < 0)
{
//¸ºÊý´ú±íµ±Ç°Éè±¸Ç°ÃæµÄÉ豸£¨»·ÐÎRGVÐÐ×ß·½ÏòµÄ·´·½Ïò£©
if (IfUseNegativeDevice == true)
{
enddv = -(enddv);
}
else
{
continue;
}
}
devinfo = Model.CGetInfo.GetDeviceInfo(enddv);
if ((devinfo.HaveGoods == true) || (devinfo.RunState == 2))
{//Ä¿±êλÖñ»Õ¼ÓûòÕß¹ÊÕÏ
continue;
}
sql.Remove(0, sql.Length);
sql.Append("SELECT F_EndDevice FROM T_Base_RGV_Gate WHERE (F_RGVGateDeviceIndex = ").Append(enddv).Append(") AND (F_EndDevice IS NOT NULL)");
ob = dbo.GetSingle(sql.ToString());
if (ob == null) continue;
DESTINATION = Convert.ToInt32(ob);
if (CDisassembleTask.MinRouteID(Convert.ToInt32(dr["FSTARTDEVICE"]), DESTINATION, dr["FUseAwayFork"]) != -1)
{
//20100609ͳ¼Æµ½ÖÕµãÉ豸ÕýÔÚÖ´ÐеÄÈÎÎñÊý
sql.Remove(0, sql.Length);
sql.Append("SELECT count(FENDDEVICE) as counts FROM T_Manage_Task where FENDDEVICE='").Append(DESTINATION).Append("' and fstatus>0");
ob = dbo.GetSingle(sql.ToString());
advDev.Add(DESTINATION, Convert.ToInt32(ob));
}
}
}
else
{
return false;
}
if (advDev.Count <= 0)
{
return false;
}
else
{
int mincount = 9999;
foreach (int aaa in advDev.Keys)
{
if (advDev[aaa] < mincount)
{
mincount = advDev[aaa];
adviceDev = aaa.ToString();
}
}
if (adviceDev == "")
{
return false;
}
}
#endregion
//20101108int fid = dboM.GetManageTableIndex("IO_CONTROL_APPLY");
string dtime = DateTime.Now.ToString("u");
dtime = dtime.Substring(0, dtime.Length - 1);
dboM.TransBegin();
try
{
sql.Remove(0, sql.Length);
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKALTERROUTEAPPLY).Append(" where CONTROL_ID=").Append(dr["FID"]).Append(" and CONTROL_STATUS<>").Append(Model.CGeneralFunction.TASKCANCEL).Append("");
dboM.ExceSQL(sql.ToString());
//Ïò¹ÜÀíÉêÇëÐÞ¸ÄÈÎÎñ
int appid = dboM.GetManageTableIndex("IO_CONTROL_APPLY", true);//CONTROL_APPLY_ID
sql.Remove(0, sql.Length);
sql.Append("INSERT INTO IO_CONTROL_APPLY (CONTROL_APPLY_ID, CONTROL_ID, WAREHOUSE_CODE, STOCK_BARCODE, DEVICE_CODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK)").Append(
"VALUES (").Append(appid).Append(",").Append(dr["FID"]).Append(",'").Append(dr["FENDWAREHOUSE"]).Append("','").Append(dr["FPALLETBARCODE"]).Append("','").Append(adviceDev).Append("',0,'").Append(dtime).Append("',null)");
dboM.ExceSQL(sql.ToString());
dboM.TransCommit();
//°ÑManageTaskIdx£¬ManageKindIdx µÄµ÷¶ÈÈÎÎñÈ«²¿ÉêÇë¸ÄµÀ
sql.Remove(0, sql.Length);
sql.Append("UPDATE T_Monitor_Task SET F_Status = 3 WHERE (F_ManageTaskIndex = ").Append(manageTaskIdx).Append(") AND (F_ManageTASKKINDINDEX =").Append(manageKindIdx).Append(")");
dbo.ExceSQL(sql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("CControl.GetRGVIdleDestination", "´©Ëó³µÄ¿±êλÖ÷¢Éú¸ÄµÀ", "¹ÜÀíÈÎÎñ£º" +
manageKindIdx.ToString() + "-" + manageTaskIdx.ToString(), "ÌõÂ룺" + dr["FPALLETBARCODE"].ToString().ToUpper());
return true;
}
catch (Exception ex)
{
dboM.TransRollback();
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
return false;
}
}
else
{
return false;
}
}
catch (Exception ex)
{
CControlError = string.Format("·¢ËÍÖ¸ÁÉêÇë¸ÄµÀʱ£º{0}", ex.StackTrace + ex.Message);
return false;
}
finally
{
dv.Dispose();
dr = null;
cc = null;
sp = null;
dvIO.Dispose();
dvu.Dispose();
}
}
/// <summary>
/// ·µ»ØÔÚ¶¥Éý´¦Èë¿âÈÎÎñ¿ÉÒÔ¶à²æ¹ØÁªµÄµ÷¶ÈÈÎÎñË÷Òý
/// </summary>
/// <param name="controlTaskType">¿ØÖÆÈÎÎñÀàÐÍ</param>
/// <param name="devindex">É豸Ë÷Òý</param>
/// <returns></returns>
long GetEnableDoubleForkManageTask(int controlTaskType, int devindex, long FID)
{
DataView dv0 = new DataView(); DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=").Append(devindex).Append(" and FCONTROLTASKTYPE=").Append(controlTaskType);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
sql.Remove(0, sql.Length);
sql.Append("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=").Append(dv[i]["F_ManageTaskIndex"]).Append(" and F_ManageTASKKINDINDEX=").Append(dv[i]["F_ManageTASKKINDINDEX"]);
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv0.Count > 0)
{
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
{
if (FID != Convert.ToInt64(dv[i]["F_ManageTaskIndex"]))
{
return Convert.ToInt64(dv[i]["F_ManageTaskIndex"]);
}
}
}
}
return -1;
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv0.Dispose();
}
}
/// <summary>
/// »ñµÃ¶Ñ¶â»úÔÚ¶ÔµÈվ̨ȡ»õµÄ¶à²æ¹ØÁªÈÎÎñ
/// </summary>
/// <param name="controlTaskType">¿ØÖÆÈÎÎñÀàÐÍ</param>
/// <param name="Stackdevindex">¶Ñ¶â»úÉ豸Ë÷Òý</param>
/// <param name="StationDevice">վ̨É豸Ë÷Òý</param>
/// <param name="FID">µ÷¶ÈÈÎÎñË÷Òý</param>
/// <returns></returns>
int GetEnableDoubleForkManageTask(int controlTaskType, int Stackdevindex, int StationDevice, int FID)
{
DataView dv1 = new DataView();
DataView dv0 = new DataView();
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_ZXY FROM T_Base_Lane_Gate,T_Base_LaneInfo WHERE ").Append(
"(T_Base_Lane_Gate.F_LaneIndex = T_Base_LaneInfo.F_LaneDeviceIndex) and (T_Base_LaneInfo.F_StackIndex = ").Append(
Stackdevindex).Append(") and (F_LaneGateDeviceIndex=").Append(StationDevice).Append(")");
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv1.Count <= 0) return -1;
char[] cc = new char[1] { '-' };
string[] zxy = dv1[0]["F_ZXY"].ToString().Split(cc);
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX ").Append(
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex AND F_DeviceIndex=").Append(
Stackdevindex).Append(" and FCONTROLTASKTYPE=").Append(controlTaskType).Append(" and F_NumParam1=").Append(zxy[0]).Append(
" and F_NumParam2=").Append(zxy[1]).Append(" and F_NumParam3=").Append(zxy[2]).Append(" and F_RELATIVECONTORLID<>").Append(FID);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
sql.Remove(0, sql.Length);
sql.Append("select min(F_MonitorIndex) as mm from T_Monitor_Task where F_ManageTaskIndex=").Append(dv[i]["F_ManageTaskIndex"]).Append(" and F_ManageTASKKINDINDEX=").Append(dv[i]["F_ManageTASKKINDINDEX"]).Append(" ");
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv0.Count > 0)
{
if (dv0[0]["mm"].ToString() == dv[i]["F_MonitorIndex"].ToString())
{
if (FID != Convert.ToInt32(dv[i]["F_ManageTaskIndex"]))
{
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
}
}
}
}
return -1;
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv0.Dispose();
dv1.Dispose();
}
}
/// <summary>
///
/// </summary>
/// <param name="Mankind">µ÷¶ÈÈÎÎñÀàÐÍË÷Òý</param>
/// <param name="FID">µ÷¶ÈÈÎÎñË÷Òý</param>
/// <param name="ControlTaskType">µ÷¶ÈÈÎÎñÀàÐÍ</param>
/// <param name="UseAwayFork">×îºó·ÖÅäµÄÔ¶¡¢½ü»õ²æ</param>
void AlterRoutePath(int Mankind, long FID, int ControlTaskType, char UseAwayFork, int NowDevice)
{
DataView dv = new DataView(); DataView dv1 = new DataView(); DataView dvnew = new DataView();
//ÏÈÕÒµ½ÒÔǰµÄ·¾¶ÊÇ·ñÓë×îºó·ÖÅäµÄ»õ²æÆ¥Å䣬²»Æ¥ÅäµÄ¸ÄµÀ
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT T_Monitor_Task.F_MonitorIndex,T_Monitor_Task.F_DeviceIndex FROM T_Monitor_Task,T_Base_Route_Device where ").Append(
" T_Monitor_Task.F_RouteID = T_Base_Route_Device.F_RouteIDSub AND T_Monitor_Task.F_DeviceIndex = T_Base_Route_Device.F_DeviceIndex and T_Monitor_Task.F_ManageTaskIndex=").Append(
FID).Append(" and T_Monitor_Task.F_ManageTASKKINDINDEX=").Append(Mankind).Append(" and T_Base_Route_Device.F_UseAwayFork<>'").Append(UseAwayFork).Append("'");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
sql.Remove(0, sql.Length);
sql.Append("select * from T_Manage_Task where F_ManageTaskKindIndex=").Append(Mankind).Append(" and FID=").Append(FID);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
//20100702
sql.Remove(0, sql.Length);
sql.Append("SELECT T_Base_Route_Device.F_RouteIDSub FROM T_Base_Route,T_Base_Route_Device where T_Base_Route.F_RouteID = T_Base_Route_Device.F_RouteID ").Append(
" and (T_Base_Route_Device.F_UseAwayFork = '").Append(UseAwayFork).Append("') AND (T_Base_Route_Device.F_DeviceIndex = ").Append(NowDevice).Append(") AND (T_Base_Route.F_StartDevice = ").Append(
dv[0]["FSTARTDEVICE"]).Append(") AND (T_Base_Route.F_EndDevice = ").Append(dv[0]["FENDDEVICE"]).Append(" and F_RouteKind=").Append(ControlTaskType).Append(")");
;
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv1.Count > 0)
{
int routeidNew = Convert.ToInt32(dv1[0][0]);
//ɾ³ýÔ­À´µÄÉêÇëÐ޸ķ¾¶ÈÎÎñ£¬²ð·ÖеÄÈÎÎñ²¢ÇÒÖ»±£ÁôÏÖÓÐÉ豸¿ªÊ¼µÄÈÎÎñ
sql.Remove(0, sql.Length);
sql.Append("DELETE FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(FID).Append(") AND (F_ManageTASKKINDINDEX =").Append(Mankind).Append(")");
dbo.ExceSQL(sql.ToString());
if (CDisassembleTask.CreateMonitor(Mankind, FID, routeidNew, dv[0], 3) > 0)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(
NowDevice).Append(") AND (F_RouteID = ").Append(routeidNew).Append(
") AND (F_Status = 3) ");
dvnew = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvnew.Count > 0)
{
sql.Remove(0, sql.Length);
sql.Append("delete from T_Monitor_Task where F_MonitorIndex<").Append(dvnew[0]["F_MonitorIndex"]).Append(" and (F_ManageTaskIndex = ").Append(
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_Status = 3)");
dbo.ExceSQL(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = ").Append(
FID).Append(") AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_Status = 3)");
dbo.ExceSQL(sql.ToString());
}
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv1.Dispose();
dvnew.Dispose();
}
}
/// <summary>
/// ÅжÏË«²æÈÎÎñ²»ÄÜ
/// </summary>
/// <param name="taskno"></param>
/// <returns></returns>
int GetDoubleForkMinRouteTask(int taskno)
{
DataView dv = new DataView();
try
{
//²»ÊÇË«²æµÄÖ±½Ó·µ»Øtaskno£»ÊÇË«²æµ«ÊÇ¿ÉÒÔͬ²½µÄÖ±½Ó·µ»Øtaskno
//Ë«²æ²»ÄÜͬ²½µÄ·´À¡¾àÀ뵱ǰ¶Ñ¶â»úλÖÃ×î¶ÌµÄtaskno
int manKind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(taskno);
long manFid = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(taskno);
int deviceindex = Model.CGeneralFunction.GetDeviceIndexFromMonitor(taskno);
int devKind = Model.CGeneralFunction.GetDeviceKindIdx(deviceindex);
int devOrder = Model.CGeneralFunction.GetDeviceOrderFromMonitor(taskno);
devinfo = Model.CGetInfo.GetDeviceInfo(deviceindex);
int nX = Model.CGeneralFunction.GetXCoorFromMonitor(taskno, deviceindex, devOrder);
int nY = Model.CGeneralFunction.GetYCoorFromMonitor(taskno, deviceindex, devOrder);
double nXY = 0, doubleXY = 0, doubleX = 0, doubleY = 0;
nXY = Math.Pow((double)(nX - devinfo.XCoor), 2) + (Math.Pow((double)(nY - devinfo.YCoor), 2));
if (devinfo.IfCorrelDoubleFork == "1")
{
Dictionary<int, string[]> df = Model.CGeneralFunction.GetDoubleForkMonitorInfo(taskno, deviceindex);
if (df == null) return taskno;
if (Model.CGeneralFunction.MutiForkIfSync(taskno, deviceindex, devKind) == null)
{
#region ±éÀúÿ¸ö¹ØÁªÈÎÎñ
foreach (int cortask in df.Keys)
{
//20120906
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex FROM dbo.T_Monitor_Task WHERE (F_MonitorIndex = ").Append(cortask).Append(") AND (F_status = 0)");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count <= 0)
{
continue;
}
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(cortask);
long rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(cortask);
sql.Remove(0, sql.Length);
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != cortask.ToString()))
{
return -1;
}
}
#endregion
if (devKind == 1)//¶Ñ¶â»ú
{//Èç¹û´æÔÚµ¹¿â»õ룬ÔòºóÖ´ÐиÃÈÎÎñ20120906¼ÎÐ˵çÁ¦¸Ä½ø£¬µ¹¿â»õλµÄÈ¡»õÃüÁî¼ì²â¶Ñ¶â»ú»õ²æ¶ÔÓ¦¿ª¹ØÊÇ·ñÓлõ
//if (devOrder == 5)//ËÍ»õÖ¸ÁîʱÅжÏ20110505
//{
// if (true == IfChangeForkCell_LastRun(cortask))
// {
// continue;
// }
//}
doubleX = Model.CGeneralFunction.GetXCoorFromMonitor(cortask, deviceindex, devOrder);
doubleY = Model.CGeneralFunction.GetYCoorFromMonitor(cortask, deviceindex, devOrder);
doubleXY = Math.Pow((double)(doubleX - devinfo.XCoor), 2) + (Math.Pow((double)(doubleY - devinfo.YCoor), 2));
if (nXY > doubleXY)
{
nXY = doubleXY;
taskno = cortask;
}
}
else if (devKind == 6)//AGV
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(nX).Append(")");
nXY = Convert.ToInt32(dbo.GetSingle(sql.ToString()));
sql.Remove(0, sql.Length);
sql.Append("SELECT F_Sequence FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(doubleX).Append(")");
doubleXY = Convert.ToInt32(dbo.GetSingle(sql.ToString()));
if (nXY < doubleXY)
{
return taskno;
}
else
{
return Convert.ToInt32(df[0]);
}
}
else
{
return taskno;
}
}
#endregion
//·µ»Ø×îСֵµÄÈÎÎñºÅ
return taskno;
}
else
{
#region ±éÀúÿ¸ö¹ØÁªÈÎÎñ
foreach (int cortask in df.Keys)
{
#region ¹ØÁªÖ¸Áî²»ÊǵÚÒ»¸öÖ¸Áî²»ÄÜ·¢ËÍ
int rmankind = Model.CGeneralFunction.GetManageTaskKindIndexFromMonitor(cortask);
long rman = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(cortask);
sql.Remove(0, sql.Length);
sql.Append("SELECT MIN(F_MonitorIndex) AS mmi FROM dbo.T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(rman).Append(") AND (F_ManageTASKKINDINDEX = ").Append(rmankind).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["mmi"] != DBNull.Value) && (dv[0]["mmi"].ToString() != cortask.ToString()))
{
return -1;
}
}
#endregion
}
#endregion
return taskno;
}
}
else
{
return taskno;
}
}
catch (Exception ex)
{
CControlError = string.Format("·¢ËÍÃüÁîµ÷ÓÃGetDoubleForkMinRouteTaskʱ£º{0},{1}", sql.ToString(), ex.StackTrace + ex.Message);
return taskno;
}
finally
{
dv.Dispose();
}
}
bool IFAGVGate(int devIndex)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_AGVGateDeviceIndex FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = ").Append(devIndex).Append(")");
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// ͬ¹ìÁ½¸ö¶Ñ¶â»ú×éºÏ×÷Òµ£¬Í¨¹ýÖÐת»õλ½»Ìæ×÷Òµ
/// </summary>
/// <param name="taskindex"></param>
/// <param name="ChangeStackCell"></param>
/// <param name="StackIndex"></param>
void ChangeStackCellCode(int taskindex, string ChangeStackCell, int StackIndex)
{//20120820
int[] zxy = ccf.GetCoordinatesFromMonitorTask(taskindex);
StringBuilder zxystr = new StringBuilder();
DataView dvl = new DataView(); DataView dv = new DataView();
if (zxy != null)
{
zxystr.Append((zxy[3].ToString().Length == 1 ? "0" + zxy[3].ToString() : zxy[3].ToString())).Append("-").Append(
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString()))).Append("-").Append(
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString())));
}
int laneway = 0;
dvl = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex FROM T_Base_LaneInfo WHERE (F_StackIndex = {0})", StackIndex)).Tables[0].DefaultView;
if (dvl.Count > 0)
{
laneway = Convert.ToInt32(dvl[0]["F_LaneDeviceIndex"]);
}
else
return;
char[] cc = new char[1] { '-' };
string[] endCell = ChangeStackCell.Split(cc);
long fid = ccf.GetManageTaskIndexfromMonitor(taskindex);
int Mankind = ccf.GetManageTaskKindIndexFromMonitor(taskindex);
//dbo.TransBegin();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_LaneGateDeviceIndex FROM T_Base_Lane_Gate,T_Base_Device WHERE (T_Base_Lane_Gate.F_LaneGateDeviceIndex = T_Base_Device.F_DeviceIndex) and (F_ZXY = '").Append(ChangeStackCell).Append("') and F_LaneIndex=").Append(laneway);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
sql.Remove(0, sql.Length);//20120420
sql.Append("update T_Monitor_Task set F_AheadDetect=F_AheadDetect+'").Append(";N").Append(dv[0]["F_LaneGateDeviceIndex"].ToString()).Append(";R").Append(dv[0]["F_LaneGateDeviceIndex"].ToString())
.Append("', F_NumParam4=").Append(endCell[0]).Append(",F_NumParam5=").Append(endCell[1]).Append(",F_ChangeStackCell='").Append(laneway.ToString() + "," + ChangeStackCell
).Append("',F_NumParam6=").Append(endCell[2]).Append(" where F_ManageTaskIndex=").Append(fid).Append(" and F_ManageTASKKINDINDEX=").Append(Mankind).Append(" and F_DeviceIndex=").Append(StackIndex);
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set FREMARK='").Append(zxystr.ToString()).Append("',FExceptionNO=").Append(Model.CGeneralFunction.TASKCHANGESTACK).Append(" where FID=").Append(fid).Append(" and F_ManageTaskKindIndex=").Append(Mankind);
dbo.ExecuteSql(sql.ToString());
}
//dbo.TransCommit();
}
catch (Exception ex)
{
throw ex;
//dbo.TransRollback();
}
finally
{
dv.Dispose();
dvl.Dispose();
}
}
int GetIOControlStatus(int TaskIndex)
{
int mankind = ccf.GetManageTaskKindIndexFromMonitor(TaskIndex);
long Fid = ccf.GetManageTaskIndexfromMonitor(TaskIndex);
if (mankind == 1)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT CONTROL_STATUS FROM IO_CONTROL WHERE (CONTROL_ID = ").Append(Fid).Append(")");
object ob = dboM.GetSingle(sql.ToString());
if (ob != null)
{
return Convert.ToInt32(ob);
}
else
{
return 1;
}
}
else
{
return 1;
}
}
/// <summary>
/// ·µ»ØAGVË«²æµÄ¹ØÁªÕ¾Ì¨,¡°-1¡±´ú±íûÓйØÁª
/// </summary>
/// <param name="taskindex">É豸ָÁîË÷Òý</param>
/// <returns></returns>
int GetAGVCorrelIndex(int taskindex)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_NumParam2 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
object ob = dbo.GetSingle(sql.ToString());
if (ob != null)
{
int cs = Convert.ToInt32(ob);
if (cs % 2 == 0)
{
return (cs - 1);
}
else
{
return (cs + 1);
}
}
else
{
return -1;
}
}
int GetAGVCorrelConveyorIndex(int taskindex)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_NumParam2 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
object ob = dbo.GetSingle(sql.ToString());
if (ob != null)
{
int cs = Convert.ToInt32(ob);
if (cs % 2 == 0)
{
return (cs + 1);
}
else
{
return (cs - 1);
}
}
else
{
return -1;
}
}
/// <summary>
/// ·µ»ØAGVÔÚ´Ëվ̨ȡ»õµÄµ÷¶ÈÈÎÎñË÷Òý
/// </summary>
/// <param name="controltype">¿ØÖÆÈÎÎñÀàÐÍ</param>
/// <param name="stationIndex">AGVվ̨Ë÷Òý</param>
/// <returns></returns>
int GetAGVEnableDoubleForkManageTask(int controltype, int stationIndex, int agv)
{//20110412
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_MonitorIndex,T_Monitor_Task.F_ManageTaskIndex,T_Monitor_Task.F_ManageTASKKINDINDEX ").Append(
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex and FCONTROLTASKTYPE=").Append(
controltype).Append(" and F_NumParam2=").Append(stationIndex).Append(" and F_DeviceIndex=").Append(agv).Append(" and F_Status=0 and F_DeviceCommandIndex=2");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_ManageTaskIndex"]);
}
return -1;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
bool IfInSameLimitX(int fid, int mfid, int manKind)
{
DataView dv = new DataView(); DataView dv1 = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = ").Append(manKind).Append(") AND (FID = ").Append(fid).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count == 0)
{
return false;
}
sql.Remove(0, sql.Length);
sql.Append("SELECT F_ForwardLimitX,F_BackLimitX,FEndCol FROM T_Manage_Task,T_Base_LaneInfo WHERE T_Manage_Task.FLANEWAY = T_Base_LaneInfo.F_LaneDeviceIndex and (F_ManageTaskKindIndex = ").Append(manKind).Append(") AND (FID = ").Append(mfid).Append(")");
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv1.Count == 0)
{
return false;
}
if ((dv[0]["FEndCol"].ToString() == dv[0]["F_ForwardLimitX"].ToString()) && (dv1[0]["F_ForwardLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
{
return true;
}
if ((dv[0]["FEndCol"].ToString() == dv[0]["F_BackLimitX"].ToString()) && (dv1[0]["F_BackLimitX"].ToString() == dv1[0]["FEndCol"].ToString()))
{
return true;
}
return false;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv1.Dispose();
}
}
int GetAGVFromConveyorDoubleForkGetGoodManageTask(int controltype, int stationIndex, int agv)
{
DataView dv0 = new DataView();
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT T_Monitor_Task.F_ManageTaskIndex,F_MonitorIndex,T_Manage_Task.F_ManageTaskKindIndex ").Append(
" FROM T_Monitor_Task ,T_Manage_Task where T_Monitor_Task.F_ManageTaskIndex = T_Manage_Task.FID AND ").Append(
"T_Monitor_Task.F_ManageTASKKINDINDEX = T_Manage_Task.F_ManageTaskKindIndex and FCONTROLTASKTYPE=").Append(
controltype).Append(" and F_NumParam2=").Append(stationIndex).Append(" and F_DeviceIndex=").Append(agv).Append(" and F_Status=0 and F_DeviceCommandIndex=2 order by F_MonitorIndex asc");//20110412
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
for (int i = 0; i < dv.Count; i++)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT top 1 F_MonitorIndex ").Append(" FROM T_Monitor_Task where T_Monitor_Task.F_ManageTaskIndex = ")
.Append(dv[i]["F_ManageTaskIndex"].ToString()).Append(
" and F_ManageTASKKINDINDEX = ").Append(dv[i]["F_ManageTaskKindIndex"].ToString()).Append(" order by F_MonitorIndex asc");
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv0[0]["F_MonitorIndex"].ToString() == dv[i]["F_MonitorIndex"].ToString())
{
return Convert.ToInt32(dv[i]["F_ManageTaskIndex"]);
}
}
}
return -1;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv0.Dispose();
}
}
bool IFHaveSameEndDevice(int fid, int CorrelFid, int mti)
{
DataView dv0 = new DataView(); DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT FENDDEVICE, FENDCELL, FUseAwayFork FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = ").Append(mti).Append(") AND (FID = ").Append(fid).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
sql.Remove(0, sql.Length);
sql.Append("SELECT FENDDEVICE, FENDCELL, FUseAwayFork FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = ").Append(mti).Append(") AND (FID = ").Append(CorrelFid).Append(")");
dv0 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv0.Count > 0)
{
if ((dv[0]["FENDDEVICE"].ToString() == dv0[0]["FENDDEVICE"].ToString()) && (dv[0]["FENDDEVICE"].ToString() == "28001") && (Math.Abs(Convert.ToInt32(dv[0]["FENDCELL"]) - Convert.ToInt32(dv0[0]["FENDCELL"])) == 1))//20110412
{
if ((Convert.ToInt32(dv[0]["FENDCELL"]) > Convert.ToInt32(dv0[0]["FENDCELL"])) && (Convert.ToInt32(dv[0]["FUseAwayFork"]) > Convert.ToInt32(dv0[0]["FUseAwayFork"])))
{
return true;
}
if ((Convert.ToInt32(dv[0]["FENDCELL"]) < Convert.ToInt32(dv0[0]["FENDCELL"])) && (Convert.ToInt32(dv[0]["FUseAwayFork"]) < Convert.ToInt32(dv0[0]["FUseAwayFork"])))
{
return true;
}
return false;
}
else
{
return false;
}
}
else
{
return false;
}
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
dv0.Dispose();
}
}
void UpdateAheadDetectUnallow(StringBuilder aheadUnallow, int taskindex)
{
#region 20110505Ôö¼ÓµÄÐÅÏ¢Ìáʾ
int rec = 0;
if (aheadUnallow.Length > 0)
{
rec = dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_ErrorCode ='{0}' WHERE F_MonitorIndex ={1} and F_ErrorCode <>'{0}'", aheadUnallow.ToString(), taskindex));
}
else
{
rec = dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_ErrorCode ='' WHERE F_MonitorIndex ={1} and F_ErrorCode <>''", aheadUnallow.ToString(), taskindex));
}
if (rec > 0)
{
CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
OnDataChange("·¢ËÍÌáǰ¼ì²âʱ£¬Òì³£", cea);
}
#endregion
}
/// <summary>
/// Èç¹ûÊǵ¹²æ»õ룬ÄÇËüºóÖ´ÐÐ
/// </summary>
/// <param name="TaskIndex"></param>
/// <returns></returns>
bool IfChangeForkCell_LastRun(int TaskIndex)
{//20110505
DataView dv = new DataView();
try
{
int laneway = ccf.GetLaneWayFromLaneInfo(ccf.GetDeviceindexFromMonitor(TaskIndex));
int[] zxy = ccf.GetCoordinatesFromMonitorTask(TaskIndex);
string zxystr = (zxy[3].ToString().Length == 1 ? "0" + zxy[0].ToString() : zxy[3].ToString()) + "-" +
((zxy[4].ToString().Length == 1) ? ("0" + zxy[4].ToString()) : (zxy[4].ToString())) + "-" +
((zxy[5].ToString().Length == 1) ? ("0" + zxy[5].ToString()) : (zxy[5].ToString()));
int lanedev = ccf.GetChangeCellStationFromLaneGate(laneway, zxystr);
dv = dbo.ExceSQL(string.Format("SELECT F_ChangeForkCell FROM T_Base_LaneInfo WHERE F_LaneDeviceIndex={0} and (F_ChangeForkCell like '%{1}%' or F_ChangeForkCell like '%{2}%')", laneway, zxystr, lanedev)).Tables[0].DefaultView;
if (dv.Count > 0)//µ¹¿â»õλµÄÈÎÎñºóÖ´ÐÐ
{
return true;
}
return false;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// ·ÖÅäʵ¼Ê¹¤×÷µÄ¶Ñ¶â»úÉ豸Ë÷Òý20111020
/// </summary>
/// <param name="deviceIndex">ÐéÄâ¶Ñ¶â»úÉ豸Ë÷Òý</param>
/// <param name="taskIndex">É豸ָÁîË÷Òý</param>
/// <param name="manKind">µ÷¶ÈÈÎÎñÀàÐÍ</param>
/// <param name="fid">µ÷¶ÈÈÎÎñË÷Òý</param>
bool AssignStackNo(int deviceIndex, int taskIndex, int manKind, int fid)
{//20120820
DataView dv = new DataView();
Model.MDevice devinfo; int resDev = 0;
try
{
int Xcoor = Model.CGeneralFunction.GetXCoorFromMonitor(taskIndex, deviceIndex, ccf.GetDeviceOrderFromMonitor(taskIndex));
int Zcoor = Model.CGeneralFunction.GetZCoorFromMonitor(taskIndex, deviceIndex, ccf.GetDeviceOrderFromMonitor(taskIndex));
int XcoorS = Model.CGeneralFunction.GetXCoorFromMonitor(taskIndex, deviceIndex, 5);
int ZcoorS = Model.CGeneralFunction.GetZCoorFromMonitor(taskIndex, deviceIndex, 5);
int sno = 0; bool IfCombinedWork = false;
GetSpecialStackNo(deviceIndex, Zcoor, Xcoor, ZcoorS, XcoorS, out sno, out IfCombinedWork);
//ÏÈ¿¼ÂÇÌØÊâÇé¿ö20111226
if (IfCombinedWork == true)
{
//Á½¸ö¶Ñ¶â»ú×éºÏ½»Ìæ×÷Òµ
string ChangeStackCell = GetChangeStackCell(deviceIndex);
if (ChangeStackCell != "")
{
ChangeStackCellCode(taskIndex, ChangeStackCell, deviceIndex);
SetStackNo(deviceIndex, sno, manKind, fid);
return true;
}
else
{//20120820ûÓпÕÏеÄÁ½¸ö¶Ñ¶â»ú¹«ÓõĽ»½Ó»õλ
return false;
}
}
//È»ºóÆäÓàÇé¿ö¸ù¾Ý×ÜÁÐÊýÕÛÖзÖÅ䏸Á½¸ö¶Ñ¶â»ú
resDev = GetPRIStackNo(deviceIndex, Zcoor, Xcoor, ZcoorS, XcoorS);
devinfo = Model.CGetInfo.GetDeviceInfo(resDev);
if (devinfo.RunState == 0 && ccf.GetManTaskReserve(resDev) <= 0 && ccf.GetDeviceLockedState(resDev) == 0)
{//¿ÕÏС¢ÎÞÈÎÎñÖ´ÐС¢ÎÞ¹ÜÀíÈÎÎñÔ¤Ô¼Ëø
SetStackNo(deviceIndex, resDev, manKind, fid);
return true;
}
else
{//¸ù¾Ý35001µ±Ç°Î»ÖúÍÕýÔÚÖ´ÐеÄÈÎÎñµÄÄ¿±êλÖÿ¼ÂÇÊÇ·ñ·ÖÅä35002
resDev = devinfo.MutexStack;
devinfo = Model.CGetInfo.GetDeviceInfo(resDev);
if (devinfo.RunState == 0 && ccf.GetManTaskReserve(resDev) <= 0 && ccf.GetDeviceLockedState(resDev) == 0)
{
sql = new StringBuilder(string.Format("SELECT F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_DeviceIndex = {0})", devinfo.MutexStack));
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if (dv[0]["F_DeviceCommandIndex"].ToString() == "4")//È¡»õ
{
if ((GetBarcodeCoor(Convert.ToInt32(dv[0]["F_NumParam2"]), Convert.ToInt32(dv[0]["F_NumParam1"])) + StackMutexXCoor) <= GetBarcodeCoor(Xcoor, Zcoor))
{
SetStackNo(deviceIndex, resDev, manKind, fid);
return true;
}
}
if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
{
if ((GetBarcodeCoor(Convert.ToInt32(dv[0]["F_NumParam5"]), Convert.ToInt32(dv[0]["F_NumParam4"])) + StackMutexXCoor) <= GetBarcodeCoor(Xcoor, Zcoor))
{
SetStackNo(deviceIndex, resDev, manKind, fid);
return true;
}
}
}
else
{//(resDev - devinfo.MutexStack)É豸±àºÅСµÄÉ豸£¬Êµ¼ÊÐÐ×ßλÖõÄ×ø±êֵҲС
int xcMutex = (resDev - devinfo.MutexStack) * (GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack).XCoor);//20120513
int xMutex = Math.Abs(GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack).XCoor);
int xDev = Math.Abs(GetBarcodeCoor(Xcoor, Zcoor) - Model.CGetInfo.GetDeviceInfo(resDev).XCoor);
devinfo = Model.CGetInfo.GetDeviceInfo(devinfo.MutexStack);//20120513
if ((xDev < xMutex) || ((devinfo.RunState >= 2) && (devinfo.RunState <= 4) && (xcMutex > StackMutexXCoor)))//20120513
{
SetStackNo(deviceIndex, resDev, manKind, fid);
return true;
}
}
}
}
return false;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
private string GetChangeStackCell(int stack)
{//20120820¸ù¾ÝÁ½¸ö¶Ñ¶â»úµÄ×éºÏÈÎÎñÅжÏÄĸö¸ü»»¶Ñ¶â»úվ̨¿ÕÏÐ
DataView dv = new DataView();
int fids = 0; string cell = ""; int minfids = int.MaxValue;
try
{
dv = dbo.ExceSQL(string.Format("SELECT F_LaneDeviceIndex, F_ChangeStackCell FROM T_Base_LaneInfo where F_StackIndex={0}", stack)).Tables[0].DefaultView;
if (dv.Count > 0)
{
char[] cc = new char[1] { ';' };
string[] sp = dv[0]["F_ChangeStackCell"].ToString().Split(cc);
string ChangeStackCell = string.Empty;
int lanedev = 0;
for (int i = 0; i < sp.GetLength(0); i++)
{//T_Monitor_Task±íÐÂÔö F_ChangeStackCell "18001,01-30-02"
int.TryParse(sp[i], out lanedev);
if (lanedev > 0)
{//T_Base_LaneInfo±íµÄ F_ChangeStackCell ºÍF_ChangeForkCell×ֶοÉÒÔÌîдµ¹²æ»õλ¶ÔÓ¦ÐéÄâվ̨µÄÉ豸Ë÷Òý
sp[i] = ccf.GetChangeCellFromLaneGate(Convert.ToInt32(dv[0]["F_LaneDeviceIndex"]), lanedev);
}
ChangeStackCell = dv[0]["F_LaneDeviceIndex"].ToString() + "," + sp[i];
fids = Convert.ToInt32(dbo.GetSingle(string.Format("SELECT count(distinct F_ManageTaskIndex) as fids FROM T_Monitor_Task where F_ChangeStackCell='{0}'", ChangeStackCell)));
if (fids < minfids)
{
minfids = fids;
cell = sp[i];
}
}
}
return cell;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
void SetStackNo(int dummyStackno, int stackno, int manKind, int fid)
{
//20111226¿¼Âǵ÷ÕûÅäÌ×µÄվ̨ºÍÌáǰ¼ì²â£¬35001-32038£»35002-32036
if (StackIfExitTask(stackno) == true) return;
object[] ob = new object[4] { stackno, manKind, fid, dummyStackno };
dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_DeviceIndex ={0} WHERE (F_ManageTASKKINDINDEX = {1}) AND (F_ManageTaskIndex = {2}) AND (F_DeviceIndex = {3})", ob));
dbo.ExecuteSql(string.Format("UPDATE T_Monitor_Task SET F_AheadDetect =replace(F_AheadDetect,{3},{0}) WHERE (F_ManageTASKKINDINDEX = {1}) AND (F_ManageTaskIndex = {2}) ", ob));
}
void GetStackRunX_Zcoor(int StackdeviceIndex, out int Xcoor, out int Zcoor)
{//20111020
DataView dv = new DataView();
try
{
Xcoor = 0;
Zcoor = 1;
sql = new StringBuilder(string.Format("SELECT F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_Status > 0) AND (F_DeviceIndex = {0})", StackdeviceIndex));
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
{
Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
}
else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
{
Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
}
}
//else
//{
// int ManTaskReserve = ccf.GetManTaskReserve(StackdeviceIndex);
// if (ManTaskReserve > 0)
// {
// int mti =Convert.ToInt32( ManTaskReserve.ToString().Substring(0, 1));
// int fid = Convert.ToInt32(ManTaskReserve.ToString().Substring(1));
// sql = new StringBuilder(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX={0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid));
// dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// if (dv[0]["F_DeviceIndex"].ToString() == StackdeviceIndex.ToString())
// {
// if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
// {
// Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
// Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
// }
// else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
// {
// Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
// Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
// }
// }
// }
// }
//}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
void GetStackRunReserveX_Zcoor(int StackdeviceIndex, out int Xcoor, out int Zcoor)
{//20111020
Xcoor = 0;
Zcoor = 1; DataView dv = new DataView();
try
{
int ManTaskReserve = ccf.GetManTaskReserve(StackdeviceIndex);
if (ManTaskReserve > 0)
{
int mti = Convert.ToInt32(ManTaskReserve.ToString().Substring(0, 1));
int fid = Convert.ToInt32(ManTaskReserve.ToString().Substring(1));
sql = new StringBuilder(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1, F_NumParam2, F_NumParam3, F_NumParam4, F_NumParam5, F_NumParam6 FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX={0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid));
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if (dv[0]["F_DeviceIndex"].ToString() == StackdeviceIndex.ToString())
{
if ((dv[0]["F_DeviceCommandIndex"].ToString() == "2") || (dv[0]["F_DeviceCommandIndex"].ToString() == "4"))//½«È¡£¬È¡»õ
{
Zcoor = Convert.ToInt32(dv[0]["F_NumParam1"]);
Xcoor = Convert.ToInt32(dv[0]["F_NumParam2"]);
}
else if (dv[0]["F_DeviceCommandIndex"].ToString() == "5")//ËÍ»õ
{
Zcoor = Convert.ToInt32(dv[0]["F_NumParam4"]);
Xcoor = Convert.ToInt32(dv[0]["F_NumParam5"]);
}
}
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// ²åÈë±ÜÈÃÖ¸Áî
/// </summary>
/// <param name="stackno">±ÜÈöѶâ»ú</param>
/// <param name="order">Ö¸Áî</param>
/// <param name="Barcodecoor">±ÜÈõ½´ïµÄÌõÂë×ø±ê</param>
/// <param name="layerhigh">±ÜÈöѶâ»úµÄ»õÎï²ã¸ß¶È</param>
void InsertStackMutexOrder(int stackno, int order, int Barcodecoor, int layerhigh)
{//20111020
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL("SELECT MAX(BarcodeCoor) AS maxcoor, MIN(BarcodeCoor) AS mincoor FROM T_Base_BarcodeCoor").Tables[0].DefaultView;
if (dv.Count > 0)
{
if (Barcodecoor > Convert.ToInt32(dv[0]["maxcoor"]))
{
Barcodecoor = Convert.ToInt32(dv[0]["maxcoor"]);
}
if (Barcodecoor < Convert.ToInt32(dv[0]["mincoor"]))
{
Barcodecoor = Convert.ToInt32(dv[0]["mincoor"]);
}
}
else
{
return;
}
if (order == 2 || order == 4)
{
if (CStaticClass.GetDevicePhotoelectric(stackno, 0) == 0)//20120110
{
order = 2;
}
else
{
order = 1;
}
}
else
{
if (CStaticClass.GetDevicePhotoelectric(stackno, 0) == 1)//20120110
{
order = 3;
}
else
{
order = 1;
}
}
int zc = 0, xc = 0, yc = 0, zc1 = 0, xc1 = 0, yc1 = 0;
if (stackno == 35001)
{
dv = dbo.ExceSQL(string.Format("SELECT TOP 1 ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where BarcodeCoor<={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order)).Tables[0].DefaultView;
}
else
{
dv = dbo.ExceSQL(string.Format("SELECT TOP 1 ABS(MIN(BarcodeCoor - {0})) AS Expr1, XCoor, ZCoor FROM T_Base_BarcodeCoor where BarcodeCoor>={0} and layerhigh<={1} and (brorder=0 or brorder={2}) GROUP BY XCoor, ZCoor ORDER BY Expr1", Barcodecoor, layerhigh, order)).Tables[0].DefaultView;
}
if (dv.Count > 0)
{
if (order == 2)
{
zc = Convert.ToInt32(dv[0]["ZCoor"]);
xc = Convert.ToInt32(dv[0]["XCoor"]);
if (xc == 51) xc = 52;//20120110
if (xc <= 5)
{
zc = 2;
xc = 2;
}
yc = 1;
if (xc == 52) zc = 1;
}
else
{
zc1 = Convert.ToInt32(dv[0]["ZCoor"]);
xc1 = Convert.ToInt32(dv[0]["XCoor"]);
if (xc1 == 51) xc1 = 52;//20120110
if (xc1 <= 5)
{
zc1 = 2;
xc1 = 2;
}
yc1 = 1;
if (xc1 == 52) zc1 = 2;
}
}
else
{
if (order != 1)
{
return;
}
}
dv = dbo.ExceSQL(string.Format("select F_MonitorIndex from T_Monitor_Task where F_DeviceIndex={0} and F_TxtParam='brbrbr'", stackno)).Tables[0].DefaultView;
if (dv.Count <= 0)
{
int hidx = ccf.GetTempManageIdx();
int hmindx = ccf.GetMonitorIndex(hidx, 2);
sql.Remove(0, sql.Length);
sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,").
Append("F_DeviceIndex,F_DeviceCommandIndex,F_NumParam1,F_NumParam2,F_NumParam3,F_NumParam4,F_NumParam5,F_NumParam6,F_TxtParam,F_AheadDetect) ").
Append("values(2,").Append(ccf.GetRouteIDsub(stackno)).Append(",").
Append(hidx).Append(",4,").Append(hmindx).Append(",").Append(stackno).
Append(",").Append(order).Append(",").Append(zc).Append(",").Append(xc).Append(",").Append(yc).Append(",").Append(zc1).Append(",").Append(xc1).Append(",").Append(yc1).Append(",'brbrbr','-')");
dbo.ExecuteSql(sql.ToString());
}
}
catch (Exception ex)
{
CControlError = string.Format("²åÈ뻥³â¶Ñ¶â»ú±ÜÈÃÖ¸Áîʱ£º{0}", ex.StackTrace + ex.Message);
}
finally
{
dv.Dispose();
}
}
int GetNowDevice(int taskindex)
{
DataView dvb = new DataView();
try
{
sql.Remove(0, sql.Length);
sql.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(taskindex).Append(")");
dvb = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvb.Count > 0)
{
return Convert.ToInt32(dvb[0]["F_NumParam1"]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dvb.Dispose();
}
}
/// <summary>
/// É豸ָÁî¶ÓÁÐÖÐÊÇ·ñ´æÔÚ¿ÉÒÔ¹ØÁª¶Ñ¶â»úµÄÈ¡»õÃüÁî
/// </summary>
/// <param name="Stackdev">¶Ñ¶â»ú</param>
/// <param name="zxy">È¡»õ»õλ</param>
/// <param name="Correlzxy">¹ØÁª»õλ</param>
/// <param name="nottaskindex">´Ë´ÎÉ豸ָÁîË÷Òý</param>
/// <returns></returns>
bool IFHaveStackCorrelGetCommand(int Stackdev, string zxy, string Correlzxy, int nottaskindex)
{
DataView dv = new DataView();
char[] cc = new char[1] { '-' };
string[] zxystr = zxy.Split(cc);
string[] zxystrCorrl = Correlzxy.Split(cc);
try
{
int laneway = ccf.GetLaneWayNoFromStack(Stackdev);
int corrdev = 0;
dv = dbo.ExceSQL(string.Format("SELECT F_LaneGateDeviceIndex FROM T_Base_Lane_Gate WHERE (F_LaneIndex = {0}) AND (F_ZXY = '{1}')", laneway, Correlzxy)).Tables[0].DefaultView;
if (dv.Count > 0)
{
corrdev = Convert.ToInt32(dv[0]["F_LaneGateDeviceIndex"]);
}
object[] ob = new object[8] { Stackdev, nottaskindex, Convert.ToInt32(zxystr[0]), Convert.ToInt32(zxystr[1]),Convert.ToInt32(zxystr[2]),
Convert.ToInt32(zxystrCorrl[0]),Convert.ToInt32(zxystrCorrl[1]),Convert.ToInt32(zxystrCorrl[2]) };
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_DeviceIndex = {0}) AND (F_DeviceCommandIndex =4) AND (F_MonitorIndex<>{1}) and (((F_NumParam1 = {2}) AND (F_NumParam2 = {3}) AND (F_NumParam3 = {4})) or ((F_NumParam1 = {5}) AND (F_NumParam2 = {6}) AND (F_NumParam3 = {7})))", ob)).Tables[0].DefaultView;
if (dv.Count > 0)
{//20120906²»ÊÇÒѾ­µÈ´ý¶à²æ¹ØÁªÈÎÎñ
sql.Remove(0, sql.Length);//ÊäËÍ»úµÈ´ýË«²æÈÎÎñºÅµÈÓڶѶâ»úÈ¡»õTaskIdx
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(Convert.ToInt32(dv[0]["F_MonitorIndex"])).Append(") AND (F_DeviceIndex=").Append(corrdev).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return false;
}
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
cc = null;
zxystrCorrl = null;
zxystr = null;
}
}
int GetDeviceOrderFromManTaskReserve(int manTaskReserve, int deviceIndex)
{
DataView dv = new DataView();
try
{
int mti = Convert.ToInt32(manTaskReserve.ToString().Substring(0, 1));
int fid = Convert.ToInt32(manTaskReserve.ToString().Substring(1));
dv = dbo.ExceSQL(string.Format("SELECT F_DeviceIndex,F_DeviceCommandIndex FROM T_Monitor_Task WHERE (F_ManageTASKKINDINDEX = {0}) AND (F_ManageTaskIndex = {1}) order by F_MonitorIndex asc", mti, fid)).Tables[0].DefaultView;
if (dv.Count > 0)
{
if (deviceIndex == Convert.ToInt32(dv[0]["F_DeviceIndex"]))
{
return Convert.ToInt32(dv[0]["F_DeviceCommandIndex"]);
}
else
{
return -1;
}
}
else
{
return -1;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
int GetLayerHigh(int Zcoor, int Xcoor)
{
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT LayerHigh FROM T_Base_BarcodeCoor WHERE (ZCoor = {0}) AND (XCoor = {1})", Zcoor, Xcoor)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0][0]);
}
else
{
return 3;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
void InsertUpDeviceUP(int updevice, int Mankind, int ManFID, int mindex)
{
DataRowView drv = null; DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorTaskLevel, F_RouteID, F_TxtParam, F_UseAwayFork,F_PriorMonitor FROM T_Monitor_Task WHERE F_MonitorIndex={0}", mindex)).Tables[0].DefaultView;
if (dv.Count > 0)
{
mindex = Convert.ToInt32(dv[0]["F_PriorMonitor"]);
drv = dv[0];
}
else
return;
StringBuilder ah = new StringBuilder();
ah.Append("D-").Append(updevice).Append(".7;D").Append(updevice).Append(".0;I").Append(updevice);
if (DeviceAndOrderExitInMonitor(Mankind, ManFID, updevice, 9, 0) == false)
{
#region Éú³ÉÊäËÍ»úÃüÁî
sql.Remove(0, sql.Length);
sql.Append("INSERT INTO T_Monitor_Task ").Append(
"(F_ManageTaskIndex, F_ManageTASKKINDINDEX, F_MonitorIndex,F_MonitorTaskLevel,").Append(
" F_DeviceIndex, F_DeviceCommandIndex, F_RouteID, F_Status,F_NumParam1, F_NumParam4,").Append(
" F_AheadDetect,F_TxtParam,F_UseAwayFork)").Append(
"VALUES (").Append(ManFID).Append(",").Append(Mankind).Append(",").Append(mindex).Append(",").Append(drv["F_MonitorTaskLevel"]
).Append(",").Append(updevice).Append(",").Append(9).Append(",").Append(drv["F_RouteID"]).Append(",").Append(0).Append(",").Append(updevice).Append("," + 0
).Append(",'").Append(ah).Append("','").Append(drv["F_TxtParam"]).Append("','").Append(drv["F_UseAwayFork"]).Append("')");
dbo.ExceSQL(sql.ToString());
#endregion
}
}
catch (Exception ex)
{
CControlError = "²åÈë¶¥Éý»úÉÏÉýÖ¸Áîʱ£º" + ex.StackTrace + ex.Message;
}
finally
{
dv.Dispose();
drv = null;
}
}
/// <summary>
/// Åжϵ÷¶È±íT_Monitor_TaskÊÇ·ñ´æÔÚµ÷¶ÈÈÎÎñµÄÉ豸ºÍÃüÁî
/// </summary>
/// <param name="Mankind">µ÷¶ÈÈÎÎñÀàÐÍ</param>
/// <param name="ManFID">µ÷¶ÈÈÎÎñË÷Òý</param>
/// <param name="DeviceIndex">É豸ËùÒý</param>
/// <param name="Order">É豸ÃüÁî</param>
/// <returns></returns>
public bool DeviceAndOrderExitInMonitor(int Mankind, int ManFID, int DeviceIndex, int Order, int ArrowAddress)
{
DataView dv = new DataView();
try
{
if (Order == -1) return true;
sql.Remove(0, sql.Length);
switch (ccf.GetDeviceKindIdx(DeviceIndex))
{
case 1://¶Ñ¶â»ú
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
break;
case 2://ÊäËÍ»ú
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
break;
case 4://RGV
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
" AND (F_DeviceCommandIndex = ").Append(Order).Append(") and F_NumParam1=").Append(ArrowAddress);
break;
case 6://AGV
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
break;
default:
sql.Append("SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = ").Append(ManFID).Append(")").Append(
" AND (F_ManageTASKKINDINDEX = ").Append(Mankind).Append(") AND (F_DeviceIndex = ").Append(DeviceIndex).Append(")").Append(
" AND (F_DeviceCommandIndex = ").Append(Order).Append(")");
break;
}
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
CControlError = "ControlSystem.CControl.DeviceAndOrderExitInMonitor:" + ex.StackTrace + ex.Message;
return false;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// ¶Ñ¶â»úÊÇ·ñ´æÔÚ±ÜÈÃÖ¸ÁîÕýÔÚÔËÐÐ
/// </summary>
/// <param name="DeviceIndex"></param>
/// <returns></returns>
bool DeviceHandTaskIfRun(int DeviceIndex)
{
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_ManageTASKKINDINDEX=4 and F_DeviceIndex={0} and F_Status>0", DeviceIndex)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// ¶Ñ¶â»úÊÇ·ñ´æÔÚ±ÜÈÃÖ¸ÁîµÈ´ýÔËÐÐ
/// </summary>
/// <param name="DeviceIndex"></param>
/// <returns></returns>
bool DeviceHandTaskIfWaitRun(int DeviceIndex)
{
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_ManageTASKKINDINDEX=4 and F_DeviceIndex={0} and F_Status=0", DeviceIndex)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
bool StackIfExitTask(int stackno)
{
DataView dv = new DataView();
try
{
dv = dbo.ExceSQL(string.Format("SELECT F_MonitorIndex FROM T_Monitor_Task where F_DeviceIndex={0}", stackno)).Tables[0].DefaultView;
if (dv.Count > 0)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
dv.Dispose();
}
}
void GetSpecialStackNo(int virStack, int startZ, int startX, int endZ, int endX, out int stackno, out bool IfCombinedWork)
{
stackno = 0; IfCombinedWork = false;
int Getdevice = 0, Sendevice = 0;
char[] fcc = new char[1] { ';' };
char[] dcc = new char[1] { ',' };
char[] hcc = new char[1] { '-' };
DataView dv = new DataView();
string[] zxys; string[] zx_x; string[] x_x;
try
{
dv = dbo.ExceSQL(string.Format("SELECT T_Base_StackInfo.F_StackIndex, T_Base_StackInfo.F_SpecialZXArea,T_Base_StackInfo.F_PRIZXArea FROM T_Base_StackInfo WHERE T_Base_StackInfo.F_Mutex IS NOT NULL and T_Base_StackInfo.F_VirtualStack={0}", virStack)).Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
zxys = dv[i]["F_SpecialZXArea"].ToString().Split(fcc);//1,0-2;2,0-5
for (int d = 0; d < zxys.GetLength(0); d++)
{
zx_x = zxys[d].Split(dcc);
if (zx_x.GetLength(0) > 1)
{
for (int h = 1; h < zx_x.GetLength(0); h++)
{
x_x = zx_x[h].Split(hcc);
if (x_x.GetLength(0) > 1)
{
if ((Convert.ToInt32(zx_x[0]) == startZ) && (startX >= Convert.ToInt32(x_x[0])) && (startX <= Convert.ToInt32(x_x[1])))
{
Getdevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
}
if ((Convert.ToInt32(zx_x[0]) == endZ) && (endX >= Convert.ToInt32(x_x[0])) && (endX <= Convert.ToInt32(x_x[1])))
{
Sendevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
}
}
}
}
}
}
stackno = Getdevice;
if (Getdevice != Sendevice)
{
devinfo = Model.CGetInfo.GetDeviceInfo(Getdevice);
if (Sendevice == devinfo.VirtualStack)
{
IfCombinedWork = true;
}
else
{
IfCombinedWork = false;
}
}
else
{
IfCombinedWork = false;
}
}
catch (Exception ex)
{
CControlError = "·ÖÅä¶Ñ¶â»úºÅGetSpecialStackNo:" + ex.StackTrace + ex.Message;
}
finally
{
}
}
int GetPRIStackNo(int virStack, int startZ, int startX, int endZ, int endX)
{
int Getdevice = 0;
char[] fcc = new char[1] { ';' };
char[] dcc = new char[1] { ',' };
char[] hcc = new char[1] { '-' };
DataView dv = new DataView();
string[] zxys; string[] zx_x; string[] x_x;
try
{
dv = dbo.ExceSQL(string.Format("SELECT T_Base_StackInfo.F_StackIndex, T_Base_StackInfo.F_SpecialZXArea,T_Base_StackInfo.F_PRIZXArea FROM T_Base_StackInfo WHERE T_Base_StackInfo.F_Mutex IS NOT NULL and T_Base_StackInfo.F_VirtualStack={0}", virStack)).Tables[0].DefaultView;
for (int i = 0; i < dv.Count; i++)
{
zxys = dv[i]["F_PRIZXArea"].ToString().Split(fcc);//1,0-2;2,0-5
for (int d = 0; d < zxys.GetLength(0); d++)
{
zx_x = zxys[d].Split(dcc);
if (zx_x.GetLength(0) > 1)
{
for (int h = 1; h < zx_x.GetLength(0); h++)
{
x_x = zx_x[h].Split(hcc);
if (x_x.GetLength(0) > 1)
{
if ((Convert.ToInt32(zx_x[0]) == startZ) && (startX >= Convert.ToInt32(x_x[0])) && (startX <= Convert.ToInt32(x_x[1])))
{
Getdevice = Convert.ToInt32(dv[i]["F_StackIndex"]);
}
}
}
}
}
}
return Getdevice;
}
catch (Exception ex)
{
CControlError = "·ÖÅä¶Ñ¶â»úºÅGetPRIStackNo:" + ex.StackTrace + ex.Message;
return Getdevice;
}
finally
{
dv.Dispose();
}
}
/// <summary>
/// »ñÈ¡¿É¹ØÁªµÄÈÎÎñ½øÐÐÅä¶à²æ¹ØÁª
/// </summary>
/// <param name="DevLanewayIOInfo">ÏïµÀ³öÈë¿ÚÐÅÏ¢</param>
/// <param name="TaskIdx">É豸ָÁîË÷Òý</param>
/// <param name="CONTROLTASKTYPE">¿ØÖÆÈÎÎñÀàÐÍ</param>
/// <param name="mti">¿ØÖÆÈÎÎñÀà±ð</param>
/// <param name="fid">¿ØÖÆÈÎÎñ±àºÅ</param>
/// <param name="dtime">µ±Ç°Ê±¼ä</param>
/// <returns></returns>
bool GetCorrManageTask(string[] DevLanewayIOInfo, int TaskIdx, int CONTROLTASKTYPE, int mti, int fid, string dtime, out bool IfCorrTaskEnd)
{
IfCorrTaskEnd = false;
DataView dv = new DataView();
try
{
sql.Remove(0, sql.Length);//ÊäËÍ»úµÈ´ýË«²æÈÎÎñºÅµÈÓڶѶâ»úÈ¡»õTaskIdx
sql.Append("SELECT F_TaskIndex,F_DeviceIndex,F_Remark FROM T_Base_PLC_Ask WHERE (F_TaskIndex =").Append(Convert.ToInt32(TaskIdx)).Append(") AND (F_Remark <> '') AND (F_DeviceIndex=").Append(DevLanewayIOInfo[0]).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
#region ÓÐÈÎÎñµÈ´ý¹ØÁªÈÎÎñ
string zxy = DevLanewayIOInfo[9];
int waitdevice = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
//DevLanewayIOInfo[8]°üº¬¶à¸ö¹ØÁªÉ豸ÐÅÏ¢ÖðÒ»¼ì²é20120906
char[] cc = new char[1] { ';' };
string[] CorrStations = DevLanewayIOInfo[8].Split(cc);
foreach (string cs in CorrStations)
{
DevLanewayIOInfo = ccf.GetLanewayDeviceInfoFromStackDev(devinfo.DeviceIndex, Convert.ToInt32(cs));//¹ØÁªÕ¾Ì¨µÄÐÅÏ¢
string Correlzxy = DevLanewayIOInfo[9];
DateTime dtq = Convert.ToDateTime(dv[0]["F_Remark"]).AddSeconds(Convert.ToInt32(CStaticClass.DoubleForkWaitTime));
if ((GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN) && (dtq > DateTime.Now))
{
#region û³¬Ê±,²»Êǵ¥²æÔËÐÐ
//20111231û³¬Ê±,²»Êǵ¥²æÔËÐÐ
//²éÕÒ±¾µØ¹ÜÀíÈÎÎñ×ö¶à²æ¹ØÁªÅä¶Ô£¬¹ØÁªÈÎÎñ·ÖÅä»õ²æ
int mfid = GetEnableDoubleForkManageTask(CONTROLTASKTYPE, devinfo.DeviceIndex, int.Parse(DevLanewayIOInfo[0]), fid);
if (mfid > 0)
{
#region Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ
if ((IfInSameLimitX(fid, mfid, mti) == true) && (mti == 1))
{
sql.Remove(0, sql.Length);
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(fid).Append(")");
dboM.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append(" update IO_CONTROL set CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKSINGLEFORKRUN).Append(" WHERE (CONTROL_ID = ").Append(mfid).Append(")");
dboM.ExecuteSql(sql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔ­Òò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "Ë«²æÍ¬ÎªÇ°¼«ÏÞºóÕߺó¼«ÏÞ²»¹ØÁª£¬µ¥¶ÀÖ´ÐÐ");
IfCorrTaskEnd = true;
return true;
}
#endregion
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(fid);
dbo.ExecuteSql(sql.ToString());
sql.Remove(0, sql.Length);
sql.Append("update T_Manage_Task set F_RELATIVECONTORLID=").Append(fid).Append(" where F_ManageTaskKindIndex=").Append(mti).Append(" and FID=").Append(mfid);
dbo.ExecuteSql(sql.ToString());
//ÅжÏÊÇ·ñΪ1²æµÄ¹ØÁªÈÎÎñ:ÊÇ£¬Å䲿½áÊø
if (ccf.GetManageTaskStackFork(mti, mfid) == "1")
{
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_Remark='' where (F_TaskIndex=").Append(TaskIdx).Append(")");
dbo.ExecuteSql(sql.ToString());
IfCorrTaskEnd = true;
}
continue;
}
else
{
//20110505
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "Ë«²æ¶Ñ¶â»úµÈ´ý¶à²æ¹ØÁªÈ¡»õÈÎÎñ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, TaskIdx);
continue;
}
#endregion
}
else
{
#region 20111230µ¥²æÖ´Ðм«ÏÞ»õλÐèÒªµ¹»õ²æ
#region ¶Ñ¶â»úÔÚ¶¥Éý»úÈ¡µ¥²æÈÎÎñ£¬ÑéÖ¤ÊÇ·ñÐèÒª»»»õ²æ
string ChangeForkCell = ccf.IfLimitCellChangeFork(TaskIdx, devinfo.DeviceIndex);
if (ChangeForkCell != "-")//Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ
{
ccf.ChangeEndCellCode(TaskIdx, ChangeForkCell, devinfo.DeviceIndex);
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(waitdevice).Append(")");
dbo.ExecuteSql(sql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔ­Òò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "Ö÷ÈÎÎñÐèÒªµ¹»»»õ²æ");
IfCorrTaskEnd = true;
return true;
}
#endregion
#endregion
if ((IFHaveStackCorrelGetCommand(devinfo.DeviceIndex, zxy, Correlzxy, TaskIdx) == true) && (GetIOControlStatus(TaskIdx) != Model.CGeneralFunction.TASKSINGLEFORKRUN))//20101124
{//¶ÓÁÐÖÐÓпÉÒÔ¹ØÁªµÄÈÎÎñ£¬ÖØÐ¼ÆÊ±
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_Remark='").Append(dtime).Append("' where (F_DeviceIndex=").Append(waitdevice).Append(")");
dbo.ExecuteSql(sql.ToString());
//20110505
AheadDetectUnallow.Append(devinfo.DeviceIndex.ToString() + "Ë«²æ¶Ñ¶â»úÔÚË«²æ¶ÔµÈվ̨ȡ»õ" + "£¬µÈ´ý¶à²æ¹ØÁªÈÎÎñ£¡");
UpdateAheadDetectUnallow(AheadDetectUnallow, TaskIdx);
return false;
}
else
{//³¬Ê±»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ
sql.Remove(0, sql.Length);
sql.Append("update T_Base_PLC_Ask set F_TaskIndex=0,F_Remark='' where (F_DeviceIndex=").Append(waitdevice).Append(")");
dbo.ExecuteSql(sql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("µ¥²æÖ´ÐÐÔ­Òò", TaskIdx.ToString(), devinfo.DeviceIndex.ToString(), "³¬Ê±»òÕß¹ÜÀíÇ¿ÖÆÖ´Ðе¥²æÈÎÎñ");
IfCorrTaskEnd = true;
return true;
}
}
}
#endregion
}
return false;
}
catch (Exception ex)
{
CControlError = "»ñÈ¡¶Ñ¶â»ú¹ØÁªÅ䲿GetCorrManageTask:" + ex.StackTrace + ex.Message;
return false;
}
finally
{
dv.Dispose();
}
}
/*
* ·½·¨Ãû:getStackNum
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º¸ù¾ÝÌõ¼þΪÏàÓ¦µÄÈÎÎñ·ÖÅä¶Ñ¶â»ú
* ²ÎÊý½éÉÜ£ºtasknum±íʾÈÎÎñºÅ£»deviceIndx±íʾÉ豸Ë÷Òý£»order±íʾÃüÁî×Ö
* ·µ »Ø Öµ£º¶Ñ¶â»ú±àºÅ £¬Èç¹ûֵΪÁãÔòû·Öµ½¶Ñ¶â»ú£¬Èç¹ûÖµ´óÓÚÁãÔò±íʾ·µ»Ø¶Ñ¶â»ú±àºÅ
* Íê³ÉÈÕÆÚ£º2018/01/11
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public int getStacknum(int tasknum, int deviceIndx, int order)
{
int stacknum1 = 0;
int stacknum = 0;
int ordernum = 0;
int x = 0;
int z = 0;
int laneInfo = 0;
int lanesimple = 0;
string lanefromz = string.Empty;
DataView dvlane;
DataView dvmanager;
DataView dvlanestack;
StringBuilder mysql = new StringBuilder();
Model.MDevice deviceinfo = null;
long managernum = 0;
DBOperator dbo = CStaticClass.dbo;
int goallane = 0;
int x1 = 0;
try
{
ordernum = Model.CGeneralFunction.GetDeviceOrderFromMonitor(tasknum);
x = Model.CGeneralFunction.GetXCoorFromMonitor(tasknum, deviceIndx, ordernum);
z = Model.CGeneralFunction.GetZCoorFromMonitor(tasknum, deviceIndx, ordernum);
managernum = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(tasknum);
goallane = getStackGoalLaneNo(tasknum, deviceIndx, ordernum);
if (z > 0)
{
mysql.Append("select top 1 * from ST_CELL where F_Z=").Append(z);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
laneInfo = Convert.ToInt32(dvlane[0]["FLaneWay"]);
}
if (laneInfo > 0)
{
switch (laneInfo)
{
case 18001:
lanesimple = 1;
break;
case 18002:
lanesimple = 2;
break;
case 18003:
lanesimple = 3;
break;
case 18004:
lanesimple = 4;
break;
}
#region add by lyj 20171207 ±¾ÏïµÀÓжѶâ»úÔò²»·ÖÅä
mysql.Remove(0, mysql.Length);
mysql.Append("select * from T_Base_StackLaneAndLayuerInfo where F_StackStatus<>0 and F_LaneNum=").Append(lanesimple);
dvlanestack = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if(dvlanestack.Count>0)
{
return 0;
}
#endregion
#region add by lyj 20171206 Èç¹û¸ÃÏïµÀÓÐÕýÔÚÖ´ÐеĹÜÀíÈÎÎñÔò ²»·ÖÅä¶Ñ¶â»ú
mysql.Remove(0, mysql.Length);
// mysql.Append("select * from T_Manage_Task where FSTATUS=1 and (FSTARTDEVICE=").Append(laneInfo).Append(" or FENDDEVICE=").Append(laneInfo).Append(")");
mysql.Append("select F_ManageTaskIndex from T_Monitor_Task where F_NumParam1 in (select distinct F_Z from ST_CELL where FLaneWay=").Append(laneInfo).Append(") and F_Status=1");
dvmanager = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvmanager.Count > 0)
{
return 0;
}
#endregion
if (order == 4)
{
mysql.Remove(0, mysql.Length);
mysql.Append("select * from T_Base_StackLaneAndLayuerInfo where F_LaneNum=").Append(lanesimple).Append(" order by F_Col desc");
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
#region ¹ÜÀíÏ´ïÈÎÎñËùÔÚÏïµÀµÄ¶Ñ¶â»ų́Êý
if (dvlane.Count>0)
{
stacknum1 = Convert.ToInt32(dvlane[0]["F_DeviceIndex"]);
if (dvlane.Count == 1)
{
deviceinfo = Model.CGetInfo.GetDeviceInfo(stacknum1);
//if (deviceinfo.RunState == 0 && deviceinfo.ManTaskReserve == 0)
if (deviceinfo.RunState == 0)
{
stacknum = stacknum1;
}
}
else if (dvlane.Count == 2)
{
x1 = Convert.ToInt32(dvlane[0]["F_Col"]);
int inlane = getStackInLaneNo(stacknum1);
if (x1 <= x&&inlane!=goallane)//Ä¿±êλÖò»ÊDZ¾ÏïµÀ£¬ÈÎÎñ·ÖÅä¸øÔ¶ÊäËÍÏ߶˵ĶѶâ»ú
{
deviceinfo = Model.CGetInfo.GetDeviceInfo(stacknum1);
//if (deviceinfo.RunState == 0 && deviceinfo.ManTaskReserve == 0)
if (deviceinfo.RunState == 0)
{
stacknum = stacknum1;
}
}
else
{
deviceinfo = Model.CGetInfo.GetDeviceInfo(stacknum1);
//if (deviceinfo.RunState == 0 && deviceinfo.ManTaskReserve == 0)
if (deviceinfo.RunState == 0 )
{
sentStackLeave(stacknum1);
}
}
}
}
else if (dvlane.Count == 0)
{
mysql.Remove(0, mysql.Length);
mysql.Append("select top 1 * from T_Base_StackLaneAndLayuerInfo where abs(F_LaneNum-").Append(lanesimple).Append(")>=1 and F_StackStatus=0 order by abs(F_LaneNum-").Append(lanesimple).Append("), F_Col desc");
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
stacknum1 = Convert.ToInt32(dvlane[0]["F_DeviceIndex"]);
}
deviceinfo = Model.CGetInfo.GetDeviceInfo(stacknum1);
// if (deviceinfo.RunState == 0 &&deviceinfo.ManTaskReserve == 0)
if (deviceinfo.RunState == 0)
{
stacknum = stacknum1;
}
#region add by lyj20190310ÑÝʾģʽÏÂÒ»ÏïµÀÖ»·ÖÅäÒ»ºÅ¶Ñ¶â»ú
//mysql.Remove(0, mysql.Length);
//mysql.Append("select * from T_WareHouse_DemoSet where FWarehouseType='T' and FDemoFlag=1");
//dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
//if (dvlane.Count > 0)
//{
if (lanesimple == 1 || lanesimple == 2)
{
stacknum = 11001;
}
//}
#endregion
}
if (stacknum > 0)
{
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Manage_Task set FSTACK=").Append(stacknum).Append(" where FID=").Append(managernum);
int a = dbo.ExecuteSql(mysql.ToString());
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Monitor_Task set F_DeviceIndex=").Append(stacknum).Append(",F_AheadDetect=REPLACE(F_AheadDetect,'11000','").Append(stacknum.ToString()).Append(" ') where F_DeviceIndex=11000 and F_ManageTaskIndex=").Append(managernum);
int b = dbo.ExecuteSql(mysql.ToString());
}
}
else if (order == 5)
{
//mysql.Remove(0, mysql.Length);
//mysql.Append("select F_StackNum from T_Base_Device where F_DeviceKindIndex=10 and F_DeviceIndex=").Append(laneInfo);
//dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
//if (dvlane.Count > 0)
//{
// stacknumonlane = Convert.ToInt32(dvlane[0]["F_StackNum"]);
// if (stacknumonlane > 0)
// {
// deviceinfo1 = Model.CGetInfo.GetDeviceInfo(stacknumonlane);
// //if (deviceinfo1.RunState == 0 && deviceinfo1.ManTaskReserve == 0)
// if (deviceinfo1.RunState == 0)
// {
// sentStackLeave(stacknumonlane);
// }
// }
//}
}
#endregion
}
}
return stacknum; ;
}
catch (Exception gsn)
{
return 0;
}
}
/*
* ·½·¨Ãû:sentStackLeave
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º°ÑÄ¿±êÏïµÀµÄ¿ÕÏжѶâ»úµ÷×ß
* ²ÎÊý½éÉÜ£ºstacknum±íʾ¶Ñ¶â»ú±àºÅ
* ·µ »Ø Öµ£ºtrue±íʾµ÷Àë³É¹¦£¬false±íʾµ÷Àëʧ°Ü
* Íê³ÉÈÕÆÚ£º2018/01/11
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public bool sentStackLeave(int stacknum)
{
int temlanenum = 0;
StringBuilder mysqlleave = new StringBuilder();
DataView dvlanee;
string sxy = "-36-01";
string sz = string.Empty;
string goalcell = string.Empty;
bool blreturn = false;
#region
mysqlleave.Remove(0, mysqlleave.Length);
// mysqlleave.Append("select F_DeviceIndex from T_Base_Device where F_DeviceKindIndex=10 and F_IsShuttleBorad=0 and F_IsVirtualDevice=0 and F_StackNum=0").Append(" and F_DeviceIndex<>").Append(laneno).Append(" order by F_DeviceIndex desc");
mysqlleave.Append("select F_DeviceIndex from T_Base_Device where F_DeviceKindIndex=10 and F_IsShuttleBorad=0 and F_IsVirtualDevice=0 and F_StackNum=0 order by F_DeviceIndex desc");
dvlanee = dbo.ExceSQL(mysqlleave.ToString()).Tables[0].DefaultView;
if (dvlanee.Count > 0)
{
temlanenum = Convert.ToInt32(dvlanee[0]["F_DeviceIndex"]);
}
switch (temlanenum)
{
case 18001:
sz = "01";
break;
case 18002:
sz = "03";
break;
case 18003:
sz = "05";
break;
case 18004:
sz = "07";
break;
}
#endregion
if (sz != null && !sz.Equals(""))
{
goalcell = sz + sxy;
}
string errorfinfo = string.Empty;
//SControlMonitor scm = new SControlMonitor();
try
{
Model.HandTask ht = new Model.HandTask(stacknum, 2, 0, "0", goalcell, goalcell, 0, "");
if(compareGoalAndSearchManageGoal(goalcell)==false)
{
//blreturn = scm.InsertHandTask(ht, out errorfinfo);
blreturn = ccf.InsertHandTask(ht, out errorfinfo);
}
CommonClassLib.CCarryConvert.WriteDarkCasket("²åÈëµ÷Àë¶Ñ¶â»úÈÎÎñ", "·µ»Ø²åÈëµÄ²¼¶ûÐͽá¹û:" + blreturn.ToString(), "¶Ñ¶â»úµÄÉ豸±àºÅ:" + stacknum.ToString(), "Ä¿±êλÖÃ:" + goalcell);
return true;
}
catch (Exception ee116) { return false; }
finally
{
// scm = null;
goalcell = null;
}
}
/// <summary>
/// »õÎïÒÑ·¢Ë͵ĶѶâ»úÈÎÎñÊý add by lyj 20171124
/// </summary>
/// <returns></returns>
public int getSentStackTask()
{
int senttasknum = 0;
StringBuilder mysql = new StringBuilder();
DBOperator dbo = CStaticClass.dbo;
DataView dvlane;
try
{
mysql.Append("select * from T_Monitor_Task where F_Status=1 and F_DeviceIndex like '1100%'");
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
senttasknum = dvlane.Count;
}
return senttasknum; ;
}
catch (Exception gsn)
{
return 0;
}
finally
{
dvlane = null;
mysql = null;
}
}
/*
* ·½·¨Ãû:getStackInLaneNo
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º»ñÈ¡¶Ñ¶â»úËùÔÚµÄÏïµÀºÅ
* ²ÎÊý½éÉÜ£ºdeviceindex±íʾÉ豸Ë÷Òý
* ·µ »Ø Öµ£º·µ»Ø¶Ñ¶â»úËùÔÚµÄÏïµÀºÅ
* Íê³ÉÈÕÆÚ£º2018/01/12
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public int getStackInLaneNo(int deviceindex)
{
int laneno = 0;
StringBuilder mysql = new StringBuilder();
DataView dvlane;
try
{
mysql.Append("select F_LaneNumAll from T_Base_StackLaneAndLayuerInfo where F_DeviceIndex=").Append(deviceindex);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
laneno = Convert.ToInt32(dvlane[0]["F_LaneNumAll"]);
}
return laneno; ;
}
catch (Exception gsn)
{
return 0;
}
finally
{
//dbo = null;
dvlane = null;
mysql = null;
}
}
/*
* ·½·¨Ãû:getStackGoalLaneNo
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º»ñÈ¡¶Ñ¶â»úËùÔÚµÄÏïµÀºÅ
* ²ÎÊý½éÉÜ£ºtasknum±íʾÈÎÎñºÅ, deviceIndx±íʾÉ豸Ë÷Òý, ordernum±íʾ¶Ñ¶â»úÃüÁî
* ·µ »Ø Öµ£º·µ»Ø¶Ñ¶â»úËÍ»õλÖÃËùÔÚµÄÏïµÀºÅ
* Íê³ÉÈÕÆÚ£º2018/01/15
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public int getStackGoalLaneNo(int tasknum, int deviceIndx, int ordernum)
{
int laneno = 0;
int z = 0;
StringBuilder mysql = new StringBuilder();
DataView dvlane;
try
{
z = Model.CGeneralFunction.GetZCoorFromMonitor(tasknum, deviceIndx, ordernum);
if (z > 0)
{
mysql.Append("select top 1 * from ST_CELL where F_Z=").Append(z);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
laneno = Convert.ToInt32(dvlane[0]["FLaneWay"]);
}
}
return laneno; ;
}
catch (Exception gsn)
{
return 0;
}
finally
{
dvlane = null;
mysql = null;
}
}
/*
* ·½·¨Ãû:sentStackLeaveOuter
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º¶Ñ¶â»úËÍ»õʱ£¬Èç¹ûÄ¿±êÏïµÀÓпÕÏеĶѶâ»ú£¬Ôò½«Æäµ÷Àë
* ²ÎÊý½éÉÜ£ºtasknum±íʾÈÎÎñºÅ, deviceIndx±íʾÉ豸Ë÷Òý, ordernum±íʾ¶Ñ¶â»úÃüÁî
* ·µ »Ø Öµ£º·µ»Øtrue±íʾµ÷Àë³É¹¦£¬false±íʾµ÷Àëʧ°Ü
* Íê³ÉÈÕÆÚ£º2018/01/12
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public bool sentStackLeaveOuter(int tasknum, int deviceIndx, int ordernum )
{
//int laneno = 0;
StringBuilder mysql = new StringBuilder();
int laneInfo = 0;
int stacknumonlane = 0;
DataView dvlane;
int z = 0;
Model.MDevice deviceinfo1 = null;
try
{
z = Model.CGeneralFunction.GetZCoorFromMonitor(tasknum, deviceIndx, ordernum);
if (z > 0)
{
mysql.Append("select top 1 * from ST_CELL where F_Z=").Append(z);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
laneInfo = Convert.ToInt32(dvlane[0]["FLaneWay"]);
}
}
mysql.Remove(0, mysql.Length);
mysql.Append("select F_StackNum from T_Base_Device where F_DeviceKindIndex=10 and F_DeviceIndex=").Append(laneInfo);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
stacknumonlane = Convert.ToInt32(dvlane[0]["F_StackNum"]);
if (stacknumonlane > 0)
{
deviceinfo1 = Model.CGetInfo.GetDeviceInfo(stacknumonlane);
//if (deviceinfo1.RunState == 0 && deviceinfo1.ManTaskReserve == 0)
if (deviceinfo1.RunState == 0)
{
sentStackLeave(stacknumonlane);
}
}
}
return true; ;
}
catch (Exception gsn)
{
return false;
}
finally
{
dvlane = null;
mysql = null;
}
}
/*
* ·½·¨Ãû:getJiangQuTaskNum
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º»ñÈ¡monitor±íÀォȡµÄÈÎÎñÊý
* ²ÎÊý½éÉÜ£º
* ·µ »Ø Öµ£º·µ»Ømonitor±íÀォȡµÄÈÎÎñÊý
* Íê³ÉÈÕÆÚ£º2018/01/15
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public int getJiangQuTaskNum()
{
int jiangqu = 0;
StringBuilder mysql = new StringBuilder();
DataView dvlane;
try
{
mysql.Append("select COUNT(*) as num from T_Monitor_Task where F_DeviceCommandIndex=2 and F_DeviceIndex in(11001,11002,11003)");
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
jiangqu = Convert.ToInt32(dvlane[0]["num"]);
}
return jiangqu; ;
}
catch (Exception gsn)
{
return 0;
}
finally
{
//dbo = null;
dvlane = null;
mysql = null;
}
}
/// <summary>
///
/// </summary>
/// <param name="MonitorIdx"></param>
/// <returns></returns>
public int GetMonitorStartStationfromMonitor(int MonitorIdx)
{
DataView dv = new DataView();
try
{
//20100108
//20101124
sql.Remove(0, sql.Length);
sql.Append("SELECT F_NumParam1 FROM T_Monitor_Task WHERE (F_MonitorIndex = ").Append(MonitorIdx).Append(")");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
return Convert.ToInt32(dv[0]["F_NumParam1"]);
}
else
{
return -1;
}
}
catch (Exception ex)
{//20100108
throw ex;
}
finally
{//20100108
dv.Dispose();
}
}
/*
* ·½·¨Ãû:compareGoalAndSearchManageGoal
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º±È½Ï´«ÈëµÄÄ¿±êλÖúͽ«È¡µÄÄ¿±êλÖÃÊÇ·ñÒ»Ö£¬Èç¹ûÒ»Ö·µ»Øtrue£¬²»Ò»Ö·µ»Øfalse
* ²ÎÊý½éÉÜ£ºgoalcellcode´«ÈëµÄÄ¿±êλÖÃ
* ·µ »Ø Öµ£º·µ»Øtrue±íʾÏàͬ£¬false±íʾ²»Í¬
* Íê³ÉÈÕÆÚ£º2018/01/15
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public bool compareGoalAndSearchManageGoal(string goalcellcode)
{
bool reflag = false;
StringBuilder mysql = new StringBuilder();
DataView dvlane;
try
{
mysql.Append("select * from T_Manage_Task where F_ManageTaskKindIndex=4 and FSTARTCELL='").Append(goalcellcode).Append("' or FENDCELL='").Append(goalcellcode).Append("'");
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
reflag=true;
}
return reflag; ;
}
catch (Exception gsn)
{
return false;
}
finally
{
//dbo = null;
dvlane = null;
mysql = null;
}
}
/*
* ·½·¨Ãû:compareGoalAndSearchManageGoal
* ×÷ ÕߣºLYJ
* ·½·¨¹¦ÄÜ£º±È½Ï´«ÈëµÄÄ¿±êλÖúͽ«È¡µÄÄ¿±êλÖÃÊÇ·ñÒ»Ö£¬Èç¹ûÒ»Ö·µ»Øtrue£¬²»Ò»Ö·µ»Øfalse
* ²ÎÊý½éÉÜ£ºgoalcellcode´«ÈëµÄÄ¿±êλÖÃ
* ·µ »Ø Öµ£º·µ»Øtrue±íʾÏàͬ£¬false±íʾ²»Í¬
* Íê³ÉÈÕÆÚ£º2018/01/15
* ά»¤ÈËÔ±£º
* ά»¤ÈÕÆÚ£º
* ά»¤Ô­Òò£º
* µ±Ç°°æ±¾£º1.0
* ǰ¼Ì°æ±¾£º1.0beta
*/
public int isOrNotExistStack(int laneno)
{
int reflag = 0;
StringBuilder mysql = new StringBuilder();
DataView dvlane;
try
{
mysql.Append("select * from T_Base_Device where F_StackNum<>0 and F_DeviceIndex=").Append(laneno);
dvlane = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
reflag = Convert.ToInt32(dvlane[0]["F_StackNum"]);
}
return reflag; ;
}
catch (Exception gsn)
{
return 0;
}
finally
{
//dbo = null;
dvlane = null;
mysql = null;
}
}
public int getShuttleBoradNum(int tasknum, int deviceIndx)
{
int ordernum = 0;
int x = 0;
int z = 0;
int y = 0;
int shutttleboardNum = 0;
DataView dv, dvlane, dvCurrent, dvRunStack;
StringBuilder mysql = new StringBuilder();
Model.MDevice deviceinfo = null;
long managernum = 0;
AheadDetectUnallow.Clear();
int uselifer = 0;//Ãñº½¶þËù
sql.Remove(0, sql.Length);
sql.Append("select * from T_WareHouse_DemoSet");
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
if (Convert.ToInt32(dv[0]["F_Lifter"]) == 1)
{
uselifer = 14005;
}
else if (Convert.ToInt32(dv[0]["F_Lifter"]) == 0)
{
uselifer = 14006;
}
}
try
{
ordernum = Model.CGeneralFunction.GetDeviceOrderFromMonitor(tasknum);
//int elevator = 8;
//Èç¹û³öÏÖ²ãÖµÏàͬ²»·Ö³µ
sql.Clear();
sql.Append(string.Format("select count(*)-count(distinct F_Postion) as num from SHUTTLE_POSITION where F_LaneOut=0 "));
dvCurrent = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvCurrent.Count > 0)
{
if (Convert.ToInt32(dvCurrent[0]["num"])!=0)
{
AheadDetectUnallow.Append("·Ö³µÊ±ÓгµÉϱ¨Í¬²ã");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
shutttleboardNum = 0;
return shutttleboardNum;
}
}
if (ordernum==2)
{
x = Model.CGeneralFunction.GetXCoorFromMonitor(tasknum, deviceIndx, ordernum);
z = Model.CGeneralFunction.GetZCoorFromMonitor(tasknum, deviceIndx, ordernum);
y = Model.CGeneralFunction.GetYCoorFromMonitor(tasknum, deviceIndx, ordernum);
int iTargetZ = Model.CGeneralFunction.GetZCoorFromMonitor(tasknum, deviceIndx, 5);
int iTargetX = Model.CGeneralFunction.GetXCoorFromMonitor(tasknum, deviceIndx, 5);
int iTargetY = Model.CGeneralFunction.GetYCoorFromMonitor(tasknum, deviceIndx, 5);
managernum = Model.CGeneralFunction.GetManageTaskIndexfromMonitor(tasknum);
mysql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_LaneOut=0 and F_Postion = ").Append(y); //F_LaneOut=0 ±íʾ³µÔÚÏïµÀÀï ³µ»µÁËÒÆ³öÈ¥F_LaneOut=1
dvCurrent = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
if (dvCurrent.Count > 0) //20210122_ÉϺ£êɵú£¬Èç¹ûÈÎÎñËùÔÚ²ãÓгµ£¬½«¸ÃÈÎÎñ·ÖÅ䏸¸Ã³µ
{
Model.MDevice devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(dvCurrent[0]["F_DeviceIndex"]));
if (devinfo.RunState >=2)
{
AheadDetectUnallow.Append("·Ö³µÊ±ËùÑ¡³µ" + Convert.ToInt32(dvCurrent[0]["F_DeviceIndex"]).ToString() + "״̬Ϊ¹ÊÕÏ¿ÕÏлòÍ£Óà ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
shutttleboardNum = 0;
return shutttleboardNum;
}
//ÓÉÓÚµçÆø»»²ãʱ²ãÖµÖͺ󣬴˴¦ÐèÒªÔö¼ÓÅжÏÓиòãµÄÕâ¸ö³µÃ»Óл»²ãÈÎÎñ,Óл»²ãÈÎÎñÒ»Ö±µÈ
sql.Clear();
sql.Append("SELECT * FROM T_Manage_Task WHERE ( FCONTROLTASKTYPE=5 ) and FSTACK = ").Append(Convert.ToInt32(dvCurrent[0]["F_DeviceIndex"]));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count == 0)
{
mysql.Remove(0, mysql.Length);
mysql.Append("SELECT F_SwitchLock FROM T_Base_Device WHERE F_DeviceIndex = ")
.Append(dvCurrent[0]["F_DeviceIndex"]);
if (Convert.ToInt32(dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView[0]["F_SwitchLock"]) ==
0)
{
shutttleboardNum = Convert.ToInt32(dvCurrent[0]["F_DeviceIndex"]);
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Manage_Task set FSTACK=").Append(dvCurrent[0]["F_DeviceIndex"].ToString()).Append(" where FID=").Append(managernum);
int a = dbo.ExecuteSql(mysql.ToString());
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Monitor_Task set F_DeviceIndex=").Append(dvCurrent[0]["F_DeviceIndex"].ToString()).Append(",F_AheadDetect=REPLACE(F_AheadDetect,'11000','").Append(shutttleboardNum.ToString()).Append("') where F_DeviceIndex=11000 and F_ManageTaskIndex=").Append(managernum);
int b = dbo.ExecuteSql(mysql.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient",
"ÒѾ­·Ö³µ:",
shutttleboardNum.ToString(),
"³µºÅ£º" + shutttleboardNum.ToString() + "FID£º" + managernum.ToString());
}
}
}
//Èç¹ûÈÎÎñËùÔÚ²ãyûÓгµ£¬²é¿´ÆäËû²ãÊÇ·ñÓпÕÏеijµ
else
{
//Ò»°ãy=iTargetY,ÅжÏûÓе½Õâ²ãµÄ»»²ãÈÎÎñÒÔ¼°´ÓÕâ²ã³ö·¢µÄ»»²ãÈÎÎñ
mysql.Remove(0, mysql.Length);
mysql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 5 AND ((FEndLayer = ").Append(iTargetY).Append(") or (FStartLayer = ").Append(iTargetY).Append("))");
if (dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView.Count <= 0)
{
mysql.Remove(0, mysql.Length);
mysql.Append("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 6 AND ((FEndLayer = ").Append(iTargetY).Append(") or (FStartLayer = ").Append(iTargetY).Append("))");
if (dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView.Count <= 0)
{
mysql.Remove(0, mysql.Length);
mysql.Append(
"SELECT DISTINCT T_Base_Device.F_DeviceIndex FROM T_Base_Device, SHUTTLE_POSITION WHERE T_Base_Device.F_SwitchLock = 0 AND SHUTTLE_POSITION.F_LaneOut=0 and T_Base_Device.F_DeviceIndex = SHUTTLE_POSITION.F_DeviceIndex AND F_DeviceKindIndex = 1 AND T_Base_Device.F_DeviceIndex NOT IN ")
.Append(
"(SELECT DISTINCT(T_Manage_Task.FSTACK) FROM T_Manage_Task WHERE T_Manage_Task.FSTACK = T_Base_Device.F_DeviceIndex and ((T_Manage_Task.FCONTROLTASKTYPE=2 and T_Manage_Task.F_OutStatus<>10)or(T_Manage_Task.FCONTROLTASKTYPE<>2 and T_Manage_Task.F_OutStatus=0))")
.Append(
" AND T_Base_Device.F_DeviceKindIndex = 1 )");//Ôö¼Ó AND SHUTTLE_POSITION.F_LaneOut=0 not in ºóÃæ±ØÐ뽫ÓÐÈÎÎñµÄ³µ»òÕß½«ÒªÖ´ÐÐÈÎÎñµÄ³µÑ¡³öÀ´
dvRunStack = dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView;
//Èç¹ûÆäËû²ãÓпÕÏеijµ£¬·ÖÅ䏸¸Ã³µ
if (dvRunStack.Count > 0)
{
for (int i = 0; i < dvRunStack.Count; i++)
{
Model.MDevice devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]));
if (devinfo.RunState >= 2)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ"+ Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString()+ "״̬Ϊ¹ÊÕÏ»òÀëÏß»òÍ£Óà ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
sql.Remove(0, sql.Length);//³µÒѾ­±»±ðµÄÈÎÎñÔ¤Ô¼ Ò²²»ÄÜ·Ö
sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0} ) and F_ManTaskReserve<>0 ", Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"])));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "ÒѾ­±»±ðµÄÈÎÎñÔ¤Ô¼ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (devinfo.XCoor == 0 && devinfo.YCoor == 0 && devinfo.Battery_Status == 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "״̬¾ùΪ0 ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (uselifer == 14005)
{
if (devinfo.XCoor == 1)//ÁÐֵΪ1 ²»ÄÜ»»²ã
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "ÁÐֵΪ1 ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
else if (uselifer == 14006)
{
if (devinfo.XCoor == 32)//ÁÐֵΪ1 ²»ÄÜ»»²ã
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "ÁÐֵΪ1 ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
//´Ë´¦Ôö¼ÓÅжÏÈç¹ûÑ¡ÖеijµËùÔڲ㻹Óгö¿âÒÔ¼°ÒÆ¿âÈÎÎñ ¾Ícontinue £¬
//´Ë´¦Öزéһϣ¬²»Óà devinfo.YCoor;
sql.Clear();
sql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_LaneOut=0 and F_DeviceIndex = ").Append(Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
//if (Convert.ToInt32(dvlane[0]["F_Postion"]) == elevator)//µçÆø½«²ãÎó±¨ÔÚÌáÉý»úÉÏʱ ûÓл»²ãÈÎÎñÈ´ÔÚ8²ã
//{
// AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ"+ Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString()+ "ÔÚ8²ã ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
// continue;
//}
//Ñ¡³öÀ´µÄ³µÓÐËùÔÚ²ãÒÆ¿âÈÎÎñÒѾ­·Ö´Ë³µ ²»ÄÜ»»²ã
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=3 and FSTACK = {0} and FStartLayer = {1} ", Convert.ToInt32(dvlane[0]["F_DeviceIndex"]), Convert.ToInt32(dvlane[0]["F_Postion"])));
DataView dvlane2 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane2.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "»¹ÓÐÒÆ¿âÈÎÎñ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
//Ñ¡³öÀ´µÄ³µÓгäµçÈÎÎñÒѾ­·Ö´Ë³µ ÇÒû¹ýÌáÉý»ú ²»ÄÜ»»²ã
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=6 and FSTARTDEVICE = {0} and FStartLayer = {1} ", Convert.ToInt32(dvlane[0]["F_DeviceIndex"]), Convert.ToInt32(dvlane[0]["F_Postion"])));
DataView dvlane4 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane4.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "ËùÔÚ²ãÓгäµçÈÎÎñ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
//»»²ãÓÃ14005¼Ó³ö¿âÅÐ¶Ï Ãñº½¶þËù
//Ñ¡³öÀ´µÄ³µÓгö¿âÈÎÎñÒѾ­·Ö´Ë³µ ÇÒû¹ýÌáÉý»ú ²»ÄÜ»»²ã
if (uselifer == 14005)
{
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=2 and F_OutStatus=0 and FSTACK = {0} and FStartLayer = {1} ", Convert.ToInt32(dvlane[0]["F_DeviceIndex"]), Convert.ToInt32(dvlane[0]["F_Postion"])));
DataView dvlane3 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane3.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "»¹Óгö¿âÈÎÎñδ¹ýÌáÉý»ú ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
//»»²ãÓÃ14006¼ÓÈë¿âÅÐ¶Ï Ãñº½¶þËù
//´Ë´¦Ôö¼ÓÅжÏÈç¹ûÑ¡ÖеijµËùÔڲ㻹ÓÐÈë¿âÈÎÎñ ¶øÇÒÈë¿âÈÎÎñÒѾ­¹ýÌáÉý»ú F_OutStatus=20 ¾Ícontinue £¬
if (uselifer == 14006)
{
sql.Clear();
//sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=1 and F_OutStatus=20 and FSTACK = {0} and FEndLayer = {1} ", Convert.ToInt32(dvlane[0]["F_DeviceIndex"]), Convert.ToInt32(dvlane[0]["F_Postion"])));
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=1 and F_OutStatus=20 and FEndLayer = {0} ", Convert.ToInt32(dvlane[0]["F_Postion"])));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñʱËùÑ¡³µ" + Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]).ToString() + "µÄ²ã»¹ÓÐÈë¿âÈÎÎñÒѾ­¹ýÌáÉý»ú ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
}
//»»²ãÓÃ14005¼Ó³ö¿âÅÐ¶Ï Ãñº½¶þËù
//´Ë´¦Ôö¼ÓÈç¹û19003ºÍ19004 µ÷¶ÈÔ¤Ô¼Ëø²»Îª0,Ôò²»Éú³É»»²ãÈÎÎñ
if (uselifer == 14005)
{
sql.Remove(0, sql.Length);
sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0} or F_DeviceIndex = {1}) and F_ManTaskReserve<>0 ", 14003, 14004));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14003»ò14004µ÷¶ÈÔ¤Ô¼Ëø²»Îª0 ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
Model.MDevice devinfo14003 = Model.CGetInfo.GetDeviceInfo(14003);
Model.MDevice devinfo14004 = Model.CGetInfo.GetDeviceInfo(14004);
Model.MDevice devinfo14005 = Model.CGetInfo.GetDeviceInfo(14005);
if (devinfo14003.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14003Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (devinfo14004.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14004Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (devinfo14005.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14005Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
//»»²ãÓÃ14006¼Ó³ö¿âÅÐ¶Ï Ãñº½¶þËù
if (uselifer == 14006)
{
sql.Remove(0, sql.Length);
sql.Append(string.Format("SELECT * FROM T_Base_Device WHERE (F_DeviceIndex = {0} or F_DeviceIndex = {1}) and F_ManTaskReserve<>0 ", 14001, 14002));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14001»ò14002µ÷¶ÈÔ¤Ô¼Ëø²»Îª0 ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
Model.MDevice devinfo14001 = Model.CGetInfo.GetDeviceInfo(14001);
Model.MDevice devinfo14002 = Model.CGetInfo.GetDeviceInfo(14002);
Model.MDevice devinfo14006 = Model.CGetInfo.GetDeviceInfo(14006);
if (devinfo14001.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14001Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (devinfo14002.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14002Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
if (devinfo14006.SplitByte_0 == 1)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱ14006Óлõ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
// ÅжÏÄ¿±êµÄ²ã Èç¹ûÒѾ­·Ö³µµÄÈÎÎñ ²»·Ö Ä¿±ê²ãΪy
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=2 and F_OutStatus=0 and FSTACK >{0} and FStartLayer = {1} ", 11000, y));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³ÉʱºòÄ¿±ê²ã´æÔÚÒѾ­·Ö³µ³ö¿âÈÎÎñ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=3 and FSTACK > {0} and FStartLayer = {1} ",11000, y));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³ÉʱºòÄ¿±ê²ã´æÔÚÒѾ­·Ö³µÒÆ¿âÈÎÎñ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
sql.Clear();
sql.Append(string.Format("SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE=1 and FSTACK > {0} and FEndLayer = {1} ", 11000, y));
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³ÉʱºòÄ¿±ê²ã´æÔÚÒѾ­·Ö³µÈë¿âÈÎÎñ ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
//sql.Clear();
//sql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_Postion = ").Append(elevator);//»»²ãÈÎÎñÉú³Éʱ ²»ÄÜÓÐÈκÎÒ»¸ö³µ±¨ÔÚÌáÉý»úÉÏ
//dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
//if (dvlane.Count > 0)
//{
// AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱºò´æÔÚÓÐÔÚ8²ãµÄ´©Ëó°å ");
// UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
// continue;
//}
//Ãñº½¶þËù УÑéÈκÎÒ»¸ö³µµÄÁÐÖµ¶¼²»ÄÜΪ1 //Ãñº½¶þËù ÍòÒ»ÓгµÊÖ¶¯¿ªÔÚÌáÉý»úÉÏ ²¢ÇÒµçÆø¿ª¹Ø²»ÄÜÈ«¸²¸Ç »»²ãʱ´æÔÚ·çÏÕµ«Èí¼þÒѼì²âÁËËùÓÐÌõ¼þ û°ì·¨ÁË
int xcoor1 = 0;
if (uselifer == 14005)
{
xcoor1 = 1;
}
else if (uselifer == 14006)
{
xcoor1 = 32;
}
sql.Clear();
sql.Append("SELECT * FROM SHUTTLE_POSITION where F_LaneOut=0 ");//»»²ãÈÎÎñÉú³Éʱ ²»ÄÜÓÐÈκÎÒ»¸ö³µ±¨ÔÚÌáÉý»úÉÏ
dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dvlane.Count > 0)
{
int num = 0;
for (int s = 0; s < dvlane.Count; s++)
{
Model.MDevice devinfoaa = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(dvlane[s]["F_DeviceIndex"]));
if (devinfoaa.XCoor == xcoor1)
{
num = num + 1;
}
}
if (num > 0)
{
AheadDetectUnallow.Append("»»²ãÈÎÎñÉú³Éʱºò´æÔÚÓÐÉϱ¨ÁÐֵΪ"+ xcoor1 .ToString()+ "µÄ´©Ëó°å ");
UpdateAheadDetectUnallow(AheadDetectUnallow, tasknum);
continue;
}
}
shutttleboardNum = Convert.ToInt32(dvRunStack[i]["F_DeviceIndex"]);
//ͬÑù²»·Ö³µ£¬µÈ´ý³µÍê³ÉÈÎÎñʱÔÙ·Ö³µ
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Manage_Task set FSTACK=").Append(shutttleboardNum).Append(" where FID=").Append(managernum);
int a = dbo.ExecuteSql(mysql.ToString());
mysql.Remove(0, mysql.Length);
mysql.Append("update T_Monitor_Task set F_DeviceIndex=").Append(shutttleboardNum).Append(",F_AheadDetect=REPLACE(F_AheadDetect,'11000','").Append(shutttleboardNum.ToString()).Append("') where F_DeviceIndex=10000 and F_ManageTaskIndex=").Append(managernum);
int b = dbo.ExecuteSql(mysql.ToString());
//Éú³É»»²ãÈÎÎñ
mysql.Remove(0, mysql.Length);
mysql.Append("SELECT * FROM SHUTTLE_POSITION WHERE F_DeviceIndex = ")
.Append(shutttleboardNum);
int iCurrentLayer =
Convert.ToInt32(
dbo.ExceSQL(mysql.ToString()).Tables[0].DefaultView[0]["F_Postion"]);
string strTargetCell = string.Format("{0:D2}-{1:D2}-{2:D2}", z, x, y);
string strStartCell = string.Format("{0:D2}-{1:D2}-{2:D2}", 1, 1, iCurrentLayer);
//Éú³ÉÈÎÎñ
int hidx1 = ccf.GetTempManageIdx();
string dTime1 = DateTime.Now.ToString("u");
dTime1 = dTime1.Substring(0, dTime1.Length - 1);
string strBarcode = DateTime.Now.ToString("yyyyMMddhhmmss");
mysql.Remove(0, mysql.Length);
mysql.Append("INSERT INTO T_Manage_Task")
.Append(
"(FPALLETBARCODE,FID,F_ManageTaskKindIndex,F_RELATIVECONTORLID,FCONTROLTASKTYPE,FIntoStepOK,FSTARTDEVICE,FSTARTCELL,FENDDEVICE,FENDCELL,FBEGTIME,WORK_MODE,FUseAwayFork,FSTACK, FStartLayer, FEndLayer) values('")
.Append(managernum)
.Append("',")
.Append(hidx1)
.Append(",2,-1,5,0,'")
.Append(shutttleboardNum)
.Append("','").Append(strStartCell)
.Append("','")
.Append(uselifer.ToString())
.Append("','").Append(strTargetCell)
.Append("','").Append(dTime1)
.Append("',0,0,").Append(shutttleboardNum).Append(",").Append(iCurrentLayer).Append(",")
.Append(iTargetY).Append(")");
dbo.ExecuteSql(mysql.ToString());
#region 20210329_Éú³É»»²ãÈÎÎñ¾Í½«´©Ëó°åÓÃF_ManTaskReserve×Ö¶ÎËø¶¨³µ£¬±£Ö¤³µÖ»½øÐл»²ãÈÎÎñ
mysql.Remove(0, mysql.Length);
mysql.Append("UPDATE T_Base_Device SET F_ManTaskReserve = ").Append(2.ToString() + hidx1.ToString())
.Append(" WHERE F_DeviceIndex = ").Append(shutttleboardNum);
dbo.ExecuteSql(mysql.ToString());
#endregion
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient",
"×Ô¶¯Éú³É´©Ëó°æ»»²ãÈÎÎñ:",
shutttleboardNum.ToString(),
"ÆðʼµØÖ·£º" + strStartCell + "Ä¿±êλÖãº" + strTargetCell + "Òª»»²ãµÄFID£º" + managernum.ToString());
break;
}
}
}
}
//ûÓпÕÏеijµ£¬²»·Ö³µ
else
{
shutttleboardNum = 0;
}
}
}
return shutttleboardNum;
}
catch (Exception gsn)
{
return 0;
}
}
}
}