using System ;
using System.Collections.Generic ;
using System.Text ;
using System.Data ;
using DBFactory ;
using System.Threading ;
using Microsoft.VisualBasic ;
using CommonLib ;
using ICommLayer ;
namespace WcfControlMonitorLib
{
/// <summary>
/// Creator:Richard.liu
/// ��ȡ��������
/// </summary>
public static class CObtainTask
{
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 ) ;
}
}
static ISendDeviceOrder sdo ;
static StringBuilder [ ] wv = { new StringBuilder ( "2" ) } ;
static StringBuilder [ ] witemnames = { new StringBuilder ( "" ) } ;
static CGetState cgs = new CGetState ( ) ;
static CCommonFunction ccf = new CCommonFunction ( ) ;
static Thread mythread ;
static bool exitThread = false ; //20091107
static Model . MDevice devinfo ;
static StringBuilder sbs = new StringBuilder ( ) ;
static StringBuilder temp = new StringBuilder ( ) ;
private static void BeginListen ( )
{ //20091107
while ( ! exitThread )
{
GetManagerTask ( ) ;
}
}
public static void EndListen ( )
{ //20091107
exitThread = true ;
if ( mythread ! = null )
{
dbo . Close ( ) ;
dboM . Close ( ) ;
mythread . Abort ( ) ;
mythread = null ;
}
}
public static void StartListen ( )
{
exitThread = false ;
mythread = new Thread ( new ThreadStart ( BeginListen ) ) ;
mythread . IsBackground = true ;
mythread . Start ( ) ;
}
static string _ CObtainTaskError = "" ;
public static string CObtainTaskError
{
get { return _ CObtainTaskError ; }
set { _ CObtainTaskError = value ;
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs ( "tsStatus" , _ CObtainTaskError ) ;
OnRefreshMonitor ( rme ) ;
}
}
static DBOperator dbo = CStaticClass . dbo ; //20130510
static DBOperator dboM = CStaticClass . dboM ; //20130510
/// <summary>
/// ���õ�������
/// </summary>
public static int GetManagerTask ( )
{
//�Ƿ�����ͬʱ��ȡIO_CONTROLDETAIL�������ݵ��������ݿ�
DataSet dsIOC = new DataSet ( ) ;
DataView dvIOC = new DataView ( ) ;
DataView dv = new DataView ( ) ;
DataView dvnew = new DataView ( ) ;
DataView dvmi = new DataView ( ) ;
DataView DMAN = new DataView ( ) ;
DataView dvc = new DataView ( ) ;
object obj = null ;
#region //���������Ƶij�����������ʼ��20151120
StringBuilder startcell = new StringBuilder ( "" ) ;
StringBuilder endcell = new StringBuilder ( "" ) ;
StringBuilder notin = new StringBuilder ( " and END_DEVICE_CODE not in (" ) ;
#endregion
try
{
int RecCount = 0 ;
#region ���������Ƶij���������T_Base_TaskCountӦ�ÿ��Ƕ��������Ƶ������������ȼ�//20151120
dvc = dbo . ExceSQL ( "SELECT F_DeviceIndex,F_MAXCOUNT FROM T_Base_TaskCount where F_MAXCOUNT>0" ) . Tables [ 0 ] . DefaultView ;
for ( int i = 0 ; i < dvc . Count ; i + + )
{
if ( i = = 0 )
{
notin . Append ( "'" ) . Append ( dvc [ i ] [ "F_DeviceIndex" ] ) . Append ( "'" ) ;
}
else
{
notin . Append ( ",'" ) . Append ( dvc [ i ] [ "F_DeviceIndex" ] ) . Append ( "'" ) ;
}
int leftTask = 0 ;
dvnew = dbo . ExceSQL ( string . Format ( "SELECT count(fid) as fids FROM T_Manage_Task where FCONTROLTASKTYPE=2 and FENDDEVICE='{0}'" , dvc [ i ] [ "F_DeviceIndex" ] ) ) . Tables [ 0 ] . DefaultView ; //�ɵ� ����
if ( dvnew . Count > 0 )
{
leftTask = Convert . ToInt32 ( dvc [ i ] [ "F_MAXCOUNT" ] ) - Convert . ToInt32 ( dvnew [ 0 ] [ "fids" ] ) ;
}
else
{
leftTask = Convert . ToInt32 ( dvc [ i ] [ "F_MAXCOUNT" ] ) ;
}
if ( leftTask > 0 )
{
#region �����յ����������������ȴ�ִ�к�ִ������������С�������γ�������������
//
dvnew = dbo . ExceSQL ( string . Format ( "SELECT F_StartDevice,(SELECT COUNT(FID) FROM T_Manage_Task where FSTARTDEVICE=F_StartDevice)+(SELECT count(F_MonitorIndex) FROM T_Monitor_Task where F_DeviceIndex =convert(int,'11'+ substring(convert(varchar,F_StartDevice),3,3)) and F_DeviceCommandIndex=5) as aaa FROM T_Base_Route where F_EndDevice={0} and F_RouteKind=2 order by aaa asc" , Convert . ToInt32 ( dvc [ i ] [ "F_DeviceIndex" ] ) ) ) . Tables [ 0 ] . DefaultView ; //�ɵ������Ƴ���
for ( int xd = 0 ; xd < dvnew . Count ; xd + + )
{
startcell . Clear ( ) ;
if ( CStaticClass . DBFactory = = "OracleDBFactory" )
{ //20151120����ϵͳoracle����������
obj = dbo . GetSingle ( string . Format ( "SELECT FCELLCODE from ST_CELL where rownum=1 and FLaneWay={0} order by FCELLCODE asc" , dvnew [ xd ] [ "F_StartDevice" ] ) ) ;
}
else
{
obj = dbo . GetSingle ( string . Format ( "SELECT top 1 FCELLCODE from ST_CELL where FLaneWay={0} order by FCELLCODE asc" , dvnew [ xd ] [ "F_StartDevice" ] ) ) ;
}
if ( obj ! = null )
{
startcell . Append ( obj . ToString ( ) ) ;
}
else
{
startcell . Append ( "-" ) ;
}
endcell . Clear ( ) ;
if ( CStaticClass . DBFactory = = "OracleDBFactory" )
{ //20151120����ϵͳoracle����������
obj = dbo . GetSingle ( string . Format ( "SELECT FCELLCODE from ST_CELL where rownum=1 and FLaneWay={0} order by FCELLCODE desc" , dvnew [ xd ] [ "F_StartDevice" ] ) ) ;
}
else
{
obj = dbo . GetSingle ( string . Format ( "SELECT top 1 FCELLCODE from ST_CELL where FLaneWay={0} order by FCELLCODE desc" , dvnew [ xd ] [ "F_StartDevice" ] ) ) ;
}
if ( obj ! = null )
{
endcell . Append ( obj . ToString ( ) ) ;
}
else
{
endcell . Append ( "-" ) ;
}
obj = dbo . GetSingle ( string . Format ( "SELECT F_ForkAmount from T_Base_StackInfo where F_LaneNo like '%{0}%'" , dvnew [ xd ] [ "F_StartDevice" ] ) ) ;
int forkcount = 1 ;
if ( obj ! = null )
{
forkcount = Convert . ToInt32 ( obj ) ;
}
sbs . Remove ( 0 , sbs . Length ) ;
if ( CStaticClass . ManDBFactory = = "OracleDBFactory" )
{ //20151120����ϵͳoracle����������
sbs . Append ( "select CONTROL_ID from IO_CONTROL where rownum<=" ) . Append ( forkcount ) ;
}
else
{
sbs . Append ( "select top " ) . Append ( forkcount ) . Append ( " CONTROL_ID from IO_CONTROL where CONTROL_TASK_TYPE=2 AND 1=1 " ) ; //�ɵ� �����Ƴ���
}
sbs . Append ( " and CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKWAIT . ToString ( ) ) ; //
sbs . Append ( " and START_DEVICE_CODE>='" ) . Append ( startcell ) . Append ( "' " ) ;
sbs . Append ( " and START_DEVICE_CODE<='" ) . Append ( endcell ) . Append ( "' " ) ;
sbs . Append ( " and END_DEVICE_CODE='" ) . Append ( dvc [ i ] [ "F_DeviceIndex" ] ) . Append ( "'" ) ;
sbs . Append ( " order by CONTROL_TASK_LEVEL desc,CONTROL_BEGIN_TIME asc,CONTROL_ID asc " ) ;
dvIOC = dboM . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
{
for ( int inew = 0 ; inew < dvIOC . Count ; inew + + )
ObtainDoubleForkTask ( dvIOC [ inew ] [ "CONTROL_ID" ] , "0" ) ;
}
leftTask = leftTask - dvIOC . Count ;
if ( leftTask < = 0 ) break ;
}
#endregion
}
}
notin . Append ( ")" ) ;
#endregion
#region ���ƻ�ȡ���Ż�λ����
temp . Remove ( 0 , temp . Length ) ; //20101208
if ( CStaticClass . ManZWhere . ToString ( ) . Length > 0 ) //20101124
{
temp . Append ( CStaticClass . ManZWhere . ToString ( ) ) ;
temp . Replace ( "or" , "and (" , 0 , 4 ) ;
temp . Append ( ")" ) ;
}
else
{
temp . Append ( " and 1=1" ) ;
}
#endregion
#region 20210324_�Ϻ��ɵ�����ѯ�жϼ�ѡվָ̨ʾ��״̬������������״̬�Ƿ�һ��
//dvIOC = dbo.ExceSQL("SELECT * FROM IO_Station_Status").Tables[0].DefaultView;
//if(dvIOC.Count > 0)
//{
// int iDeviceIndex;
// int iStatus;
// Model.MDevice deviceInfo = new Model.MDevice();
// for (int i = 0; i < dvIOC.Count; i++)
// {
// iDeviceIndex = Convert.ToInt32(dvIOC[i]["F_StationID"]);
// iStatus = Convert.ToInt32(dvIOC[i]["F_Status"]);
// deviceInfo = Model.CGetInfo.GetDeviceInfo(iDeviceIndex * 10 + 1);
// if(deviceInfo.ReturnMessage == null || deviceInfo.ReturnMessage[0] != iStatus)
// {
// witemnames[0].Clear();
// witemnames[0].Append(Model.CGeneralFunction.DBSend).Append(".").Append(Convert.ToString(deviceInfo.Dbw1Address + 0)).Append(",b");
// wv[0].Clear();
// wv[0].Append(iStatus.ToString());
// sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(deviceInfo.DeviceIndex);
// sdo.WriteDBData(witemnames, wv, deviceInfo.S7Connection);
// int[] lStatus = { iStatus };
// deviceInfo.ReturnMessage = lStatus;
// CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "���ļ�ѡվ̨������ɫ", deviceInfo.DeviceIndex.ToString(), "����Ϊ��" + iStatus);
// }
// }
//}
#endregion
sbs . Remove ( 0 , sbs . Length ) ; //20110602���ӻ�ȡ����ʱ�Ķ�ȡ����ִ�е�״̬
sbs . Append ( "select * from IO_CONTROL where ((CONTROL_STATUS=" ) ;
sbs . Append ( Model . CGeneralFunction . TASKWAIT . ToString ( ) ) ;
sbs . Append ( ") or (CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKSINGLEFORKRUN . ToString ( ) ) . Append ( ") or (CONTROL_STATUS=" ) ;
sbs . Append ( Model . CGeneralFunction . TASKALTERROUTEREPLY . ToString ( ) ) ;
sbs . Append ( ")) " + temp . ToString ( ) ) . Append ( " " ) . Append ( "and (CONTROL_TASK_TYPE<>2 or (CONTROL_TASK_TYPE=2 " ) . Append ( notin ) . Append ( "))" ) ; //.Append(notin);//�ɵ�
sbs . Append ( " order by CONTROL_TASK_LEVEL desc,CONTROL_ID asc" ) ; //20151120
dsIOC = dboM . ExceSQL ( sbs . ToString ( ) ) ;
dvIOC = dsIOC . Tables [ 0 ] . DefaultView ;
//string sstite, estite;
if ( dvIOC . Count > 0 )
{
string FENDCELL = "" ; char [ ] cc = new char [ 1 ] { '-' } ;
int FENDDEVICE = 0 ;
for ( int i = 0 ; i < dvIOC . Count ; i + + )
{
#region ������ͣ�ͻָ�
////20091128
//if ((dvIOC[i]["CONTROL_STATUS"].ToString() == "0") && (dvIOC[i]["CONTROL_ISRETURN"].ToString() == "3"))
//{//�����ָ�
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK=0 where (FID = " + Convert.ToInt32(dvIOC[i]["FID"]) + ") AND (F_ManageTASKKINDINDEX =1) and (FIntoStepOK='-')");
// dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// continue;
//}
//if ((dvIOC[i]["CONTROL_STATUS"].ToString() == "0") && (dvIOC[i]["CONTROL_ISRETURN"].ToString() == "2"))
//{ //δ���ֵ�������ͣ
// int rs = dbo.ExecuteSql("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) and (FIntoStepOK='0')");
// if (rs == 0)
// {
// //�Ѳ���δִ�е�������ͣ
// dvMT = dbo.ExceSQL("select fid from T_Manage_Task where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) and (FIntoStepOK='1') and (FSTATUS=0)").Tables[0].DefaultView;
// if (dvMT.Count > 0)
// {
// dbo.ExceSQL("delete from T_Monitor_Task where (F_ManageTaskIndex= " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// }
// }
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// continue;
//}
//else
//{
// //�ϱ�����FSTATUS=940
// #region ����ִ�е�������ͣ
// if (dvIOC[i]["CONTROL_ISRETURN"].ToString() == "2")
// {
// //����ִ�е�������ͣ
// dvMT = dbo.ExceSQL("select fid from T_Manage_Task where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) and (FIntoStepOK='1') and (FSTATUS>0)").Tables[0].DefaultView;
// if (dvMT.Count > 0)
// {
// //ֻ����ͣ���������еĶѶ������ͻ�ָ����ߡ��ȴ�ִ�еĶѶ����ͻ�ָ������ͻ�����ͣ
// dvMT = dbo.ExceSQL("select F_MonitorIndex,F_Status,F_DeviceIndex,F_DeviceCommandIndex from T_Monitor_Task where (F_ManageTaskIndex= " +
// Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) order by F_MonitorIndex asc").Tables[0].DefaultView;
// if (dvMT.Count > 0)
// {
// if (ccf.GetDeviceKindIdx(Convert.ToInt32(dvMT[0]["F_DeviceIndex"])) == 1)
// {
// if ((dvMT[0]["F_DeviceCommandIndex"].ToString() == "5") && (Convert.ToInt32(dvMT[0]["F_Status"]) == 0))
// {//�ȴ�ִ�еĶѶ����ͻ�ָ�����Ըĵ�ԭ��λ
// dbo.ExceSQL("update T_Manage_Task set FExceptionNO='940' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// dbo.ExceSQL("update T_Monitor_Task set F_AheadDetect='',F_NumParam4=F_NumParam1,F_NumParam5=F_NumParam2,F_NumParam6=F_NumParam3 where F_MonitorIndex=" + dvMT[0]["F_MonitorIndex"]);
// dbo.ExceSQL("update T_Monitor_Task set F_Status=-1 where F_MonitorIndex>" + dvMT[0]["F_MonitorIndex"]
// + " and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// dvMT = dbo.ExceSQL("select * from T_Monitor_Task where F_Status=-1 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// for (int ii = 0; ii < dvMT.Count; ii++)
// {
// cgs.ActionComplete(Convert.ToInt32(dvMT[ii]["F_DeviceIndex"]), Convert.ToInt32(dvMT[ii]["F_MonitorIndex"]), 900);
// }
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// else if (dvMT[0]["F_DeviceCommandIndex"].ToString() == "2")
// {//����ִ�жѶ�����ȡָ�����������ȡ�����ȴ�ִ�еĶѶ�����ȡָ���ͺ���������ȡ��
// dbo.ExceSQL("update T_Manage_Task set FExceptionNO='940' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// dbo.ExceSQL("update T_Monitor_Task set F_Status=-1 where F_MonitorIndex>=" + dvMT[0]["F_MonitorIndex"]
// + " and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// dvMT = dbo.ExceSQL("select * from T_Monitor_Task where F_MonitorIndex>=" + dvMT[0]["F_MonitorIndex"]
// + " and F_Status=-1 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// for (int ii = 0; ii < dvMT.Count; ii++)
// {
// cgs.ActionComplete(Convert.ToInt32(dvMT[ii]["F_DeviceIndex"]), Convert.ToInt32(dvMT[ii]["F_MonitorIndex"]), 900);
// }
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// else if (dvMT[0]["F_DeviceCommandIndex"].ToString() == "4")
// {//����ִ�жѶ���ȡ��ָ��������ĵ�ԭ��λ���ȴ�ִ�еĶѶ���ȡ��ָ���ͺ���������ȡ��
// dbo.ExceSQL("update T_Manage_Task set FExceptionNO='940' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// if (Convert.ToInt32(dvMT[0]["F_Status"]) >= 1)
// {
// dbo.ExceSQL("update T_Monitor_Task set F_AheadDetect='',F_NumParam4=F_NumParam1,F_NumParam5=F_NumParam2,F_NumParam6=F_NumParam3 where F_MonitorIndex>" +
// dvMT[0]["F_MonitorIndex"] + " and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// //ɾ���ͻ�֮�������ͻ�����
// dvSend = dbo.ExceSQL("select F_MonitorIndex from T_Monitor_Task where F_DeviceIndex=" + dvMT[0]["F_DeviceIndex"]
// + " and F_DeviceCommandIndex=5 and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// if (dvSend.Count > 0)
// {
// dbo.ExceSQL("update T_Monitor_Task set F_Status=-1 where F_MonitorIndex>" + dvSend[0]["F_MonitorIndex"]
// + " and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// dvMT = dbo.ExceSQL("select * from T_Monitor_Task where F_MonitorIndex>" + dvSend[0]["F_MonitorIndex"]
// + " and F_Status=-1 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// for (int ii = 0; ii < dvMT.Count; ii++)
// {
// cgs.ActionComplete(Convert.ToInt32(dvMT[ii]["F_DeviceIndex"]), Convert.ToInt32(dvMT[ii]["F_MonitorIndex"]), 900);
// }
// }
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// else if (dvMT[0]["F_Status"].ToString() == "0")
// {
// dbo.ExceSQL("update T_Monitor_Task set F_Status=-1 where F_MonitorIndex>=" + dvMT[0]["F_MonitorIndex"]
// + " and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// dvMT = dbo.ExceSQL("select * from T_Monitor_Task where F_MonitorIndex>=" + dvMT[0]["F_MonitorIndex"]
// + " and F_Status=-1 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["FID"])).Tables[0].DefaultView;
// for (int ii = 0; ii < dvMT.Count; ii++)
// {
// cgs.ActionComplete(Convert.ToInt32(dvMT[ii]["F_DeviceIndex"]), Convert.ToInt32(dvMT[ii]["F_MonitorIndex"]), 900);
// }
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// }
// else if (dvMT[0]["F_DeviceCommandIndex"].ToString() == "3")
// {//����ִ�жѶ�������ָ��������ĵ�ԭ��λ���ȴ�ִ�еĶѶ�������ָ���ͺ������ĵ�ԭ��λ
// dbo.ExceSQL("update T_Manage_Task set FExceptionNO='940' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// if (dvMT[0]["F_Status"].ToString() == "0")
// {
// dbo.ExceSQL("update T_Monitor_Task set F_AheadDetect='',F_NumParam4=F_NumParam1,F_NumParam5=F_NumParam2,F_NumParam6=F_NumParam3 where F_MonitorIndex>=" +
// dvMT[0]["F_MonitorIndex"] + " and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// else if (Convert.ToInt32(dvMT[0]["F_Status"]) >= 1)
// {
// dbo.ExceSQL("update T_Monitor_Task set F_AheadDetect='',F_NumParam4=F_NumParam1,F_NumParam5=F_NumParam2,F_NumParam6=F_NumParam3 where F_MonitorIndex>" +
// dvMT[0]["F_MonitorIndex"] + " and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// //dboM.ExceSQL("update IO_CONTROL set CONTROL_ISRETURN=0 where CONTROL_ID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// }
// //ɾ���ͻ�֮�������ͻ�����
// dvSend = dbo.ExceSQL("select F_MonitorIndex from T_Monitor_Task where F_DeviceIndex=" + dvMT[0]["F_DeviceIndex"]
// + " and F_DeviceCommandIndex=5 and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// if (dvSend.Count > 0)
// {
// dbo.ExceSQL("update T_Monitor_Task set F_Status=-1 where F_MonitorIndex>" + dvSend[0]["F_MonitorIndex"]
// + " and F_Status=0 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
// dvMT = dbo.ExceSQL("select * from T_Monitor_Task where F_MonitorIndex>" + dvSend[0]["F_MonitorIndex"]
// + " and F_Status=-1 and F_ManageTASKKINDINDEX=1 and F_ManageTaskIndex=" + Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Tables[0].DefaultView;
// for (int ii = 0; ii < dvMT.Count; ii++)
// {
// cgs.ActionComplete(Convert.ToInt32(dvMT[ii]["F_DeviceIndex"]), Convert.ToInt32(dvMT[ii]["F_MonitorIndex"]), 900);
// }
// }
// dbo.ExceSQL("update T_Manage_Task set FIntoStepOK='-' where (FID = " + Convert.ToInt32(dvIOC[i]["CONTROL_ID"]) + ") AND (F_ManageTASKKINDINDEX =1) ");
// }
// }
// continue;
// }
// }
// }
// #endregion
//}
#endregion
bool UseOldRoute = false ;
#region ������
if ( ( dvIOC [ i ] [ "CONTROL_STATUS" ] . ToString ( ) = = Model . CGeneralFunction . TASKWAIT . ToString ( ) ) | | ( dvIOC [ i ] [ "CONTROL_STATUS" ] . ToString ( ) = = Model . CGeneralFunction . TASKSINGLEFORKRUN . ToString ( ) ) )
{
//20120906
#region ��������¥�ij�������������������ûͨ����������ɨ�����Ͳ���ȡ����
////42529;32710
//if (dvIOC[i]["END_DEVICE_CODE"].ToString().Length == 5)
//{
// if (dvIOC[i]["END_DEVICE_CODE"].ToString().Substring(0, 1) == "3")
// {
// if (IFExitSameLayerUnSameEndDevice(dvIOC[i]["END_DEVICE_CODE"].ToString().Substring(0, 1), 32710, dvIOC[i]["END_DEVICE_CODE"].ToString()) == true)
// {
// continue;
// }
// }
// else if (dvIOC[i]["END_DEVICE_CODE"].ToString().Substring(0, 1) == "4")
// {
// if (IFExitSameLayerUnSameEndDevice(dvIOC[i]["END_DEVICE_CODE"].ToString().Substring(0, 1), 42529, dvIOC[i]["END_DEVICE_CODE"].ToString()) == true)
// {
// continue;
// }
// }
//}
#endregion
#region ��¥�춨�ؿ�һ�廯ƽ̨�����У�����16�䣩
//46006\46007\46008��վ̨��վ̨��ֱ��ת������
if ( ( "46006,46007,46008" . IndexOf ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) ) > = 0 ) & &
( "46006,46007,46008" . IndexOf ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ) > = 0 ) & &
( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) = = dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ) )
{
IntegrativeNotifyDischarging ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) , Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) ) ;
continue ;
}
#endregion
#region ��¥�춨�ؿ�����������������46007��46008��46006---42639
//�����������к����´�����һ������������д�������źţ������Լ����������к�¼���ţ���ͬ���Ž�ֹ�ظ�д�������ź�
//���ڷ��еĵ�Ԫ����һ��ͨ��42664��������¼���ţ���ȡ������Ԫ������42664��F_BoxBarcode��¼���ţ�F_TaskIndex��¼���е�Ԫ��
if ( "46007,46008,46006" . IndexOf ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) ) > = 0 )
{
if ( ManageSendDischargingTask ( Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) , dvIOC [ i ] [ "CONTORL_BATCH" ] . ToString ( ) , 4 2 6 6 4 , Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ) = = false )
{
continue ;
}
}
#endregion
bool Ifobtain = true ;
#region 20120906�ж��Ƿ��Ǽ���һ¥��������һ����������������������ʱһ����ȡ
StringBuilder [ ] relBarcodes = GetRelativeBarCodes ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) , dvIOC [ i ] [ "STOCK_BARCODE" ] . ToString ( ) ) ;
int [ ] relFID = null ;
if ( relBarcodes ! = null )
{
relFID = new int [ relBarcodes . GetLength ( 0 ) ] ;
int ri = 0 ; int tep = 0 ;
for ( int j = 0 ; j < relBarcodes . GetLength ( 0 ) ; j + + )
{
tep = GetIOControlFromBarcode ( relBarcodes [ j ] ) ;
if ( tep < = 0 )
{
Ifobtain = false ;
}
else
{
relFID [ ri ] = tep ;
ri + + ;
}
}
}
#endregion
if ( Ifobtain = = true )
{ //20120906ȫ����ȡ����һ��������������
if ( relFID ! = null )
{
for ( int j = 0 ; j < relFID . GetLength ( 0 ) ; j + + )
{
ObtainDoubleForkTask ( relFID [ j ] , "0" ) ;
}
}
ObtainDoubleForkTask ( dvIOC [ i ] [ "CONTROL_ID" ] , "0" ) ;
string FUseAwayFork = "0" ;
if ( relFID ! = null )
{
for ( int j = 0 ; j < relFID . GetLength ( 0 ) ; j + + )
{ //20120906����һ¥������������
FUseAwayFork = GetFUseForkFromManage ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) ; ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FUseAwayFork=" ) . Append ( FUseAwayFork ) . Append ( ",F_RELATIVECONTORLID=" ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( " where F_ManageTaskKindIndex=1" ) . Append ( " and FID=" ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) ;
dbo . ExecuteSql ( sbs . ToString ( ) ) ;
FUseAwayFork = GetFUseForkFromManage ( relFID [ j ] ) ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FUseAwayFork=" ) . Append ( FUseAwayFork ) . Append ( ",F_RELATIVECONTORLID=" ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( " where F_ManageTaskKindIndex=1" ) . Append ( " and FID=" ) . Append ( relFID [ j ] ) ;
dbo . ExecuteSql ( sbs . ToString ( ) ) ;
} //
}
else
{
if ( "12055,12054,12053,12052" . IndexOf ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) . Substring ( 0 , 5 ) ) > = 0 )
{
FUseAwayFork = GetFUseForkFromManage ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) ; ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FUseAwayFork=" ) . Append ( FUseAwayFork ) . Append ( " where F_ManageTaskKindIndex=1" ) . Append ( " and FID=" ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) ;
dbo . ExecuteSql ( sbs . ToString ( ) ) ;
}
}
RecCount + + ;
}
}
#endregion
#region ��·���Ĵ���
else if ( dvIOC [ i ] [ "CONTROL_STATUS" ] . ToString ( ) = = Model . CGeneralFunction . TASKALTERROUTEREPLY . ToString ( ) )
{
int a = 0 ;
if ( int . TryParse ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) , out a ) = = false )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay FROM ST_CELL where FCELLCODE='" ) . Append ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) . Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "END_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
//20101124
if ( obj ! = null )
{
FENDDEVICE = Convert . ToInt32 ( obj ) ;
}
else
{
CObtainTaskError = string . Format ( "��ȡ��������·���Ĵ�û�ҵ���������������{0},�ĺ����յ�λ�ã�" , dvIOC [ i ] [ "CONTROL_ID" ] . ToString ( ) ) ;
continue ;
}
FENDCELL = dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ;
//20100304
if ( ccf . GetExceptionNOFromManageTask ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) , 1 ) = = Model . CGeneralFunction . TASKREPEATINPUT )
{
UseOldRoute = true ;
}
}
else
{
FENDDEVICE = Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ;
//20090910
if ( ccf . GetExceptionNOFromManageTask ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) , 1 ) = = Model . CGeneralFunction . TASKREPEATINPUT )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_TASKKIND, F_DESTINATION FROM T_Base_Destination WHERE (F_TASKKIND = " ) . Append ( dvIOC [ i ] [ "CONTROL_TASK_TYPE" ] ) . Append ( ") and (F_AbendStation=1) and (F_DESTINATION=" ) . Append ( FENDDEVICE ) . Append ( ")" ) ;
dv = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
//20101124
if ( dv . Count > 0 ) //��Ӧ��վ̨����ԭ�����յ���Ϊ�����ĵ���Ӧ��վ̨
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FSTARTDEVICE=FENDDEVICE,FSTARTCELL=FENDCELL where (FID = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
else
{
UseOldRoute = true ;
}
}
FENDCELL = "-" ;
#region 20101028ת��AGV������Ϊͨ��
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_ChannelsIndex FROM T_Base_AGV_Gate WHERE (F_AGVGateDeviceIndex = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ) . Append ( ") " ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
if ( obj ! = null )
{
FENDDEVICE = Convert . ToInt32 ( obj ) ;
FENDCELL = dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ;
}
else
{
FENDDEVICE = Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ;
FENDCELL = "-" ;
}
#endregion
}
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FENDDEVICE='" ) . Append ( FENDDEVICE ) . Append ( "',FENDCELL='" ) . Append ( FENDCELL ) . Append ( "' where (FID = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//�Ѿ���ʼִ�е���Ҫ���ĵ�������)
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT * FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1) AND (F_Status =3) order by F_MonitorIndex asc" ) ;
dvmi = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvmi . Count > 0 )
{ //�Ѿ���ʼִ�е���Ҫ���ĵ�������
//�ж�������·���ĵ�һ������������
int monitorIndex = ( int ) dvmi [ 0 ] [ "F_MonitorIndex" ] ;
int associateMonitor = - 1 ;
if ( dvmi [ 0 ] [ "F_Associate" ] ! = DBNull . Value )
{
associateMonitor = Convert . ToInt32 ( dvmi [ 0 ] [ "F_Associate" ] ) ;
}
int devindex = Convert . ToInt32 ( dvmi [ 0 ] [ "F_DeviceIndex" ] ) ;
int devKind = ccf . GetDeviceKindIdx ( Convert . ToInt32 ( dvmi [ 0 ] [ "F_DeviceIndex" ] ) ) ;
int devCommand = Convert . ToInt32 ( dvmi [ 0 ] [ "F_DeviceCommandIndex" ] ) ;
int routeID = Convert . ToInt32 ( dvmi [ 0 ] [ "F_RouteID" ] ) ;
int NumParam1 = Convert . ToInt32 ( dvmi [ 0 ] [ "F_NumParam1" ] ) ;
int NumParam4 = Convert . ToInt32 ( dvmi [ 0 ] [ "F_NumParam4" ] ) ;
string AheadDetect = dvmi [ 0 ] [ "F_AheadDetect" ] . ToString ( ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "select * from T_Manage_Task where (FID = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1)" ) ;
DMAN = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( DMAN . Count > 0 )
{
//20091107
int routeidNew = 0 ;
if ( UseOldRoute = = false )
{
routeidNew = CDisassembleTask . MinRouteID ( Convert . ToInt32 ( DMAN [ 0 ] [ "FSTARTDEVICE" ] ) , Convert . ToInt32 ( DMAN [ 0 ] [ "FENDDEVICE" ] ) , DMAN [ 0 ] [ "FUseAwayFork" ] ) ;
}
else
{ //970�ͻ�ʱ�����л���������ԭ��·��
routeidNew = routeID ;
}
//20091005
if ( routeidNew = = - 1 )
{
//�������������������ĵ�
if ( CStaticClass . DeviceErrorAutoModifyRoutePath = = "1" )
{ //20091107
GetUsableDestination ( DMAN [ 0 ] ) ;
}
continue ;
}
//20091005
//ɾ��ԭ����������·���������µ���������ֻ���������豸��ʼ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "DELETE FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1) AND (F_Status =3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20090910
if ( CDisassembleTask . CreateMonitor ( 1 , Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) , routeidNew , DMAN [ 0 ] , 3 ) < = 0 )
{
//��������������·������������
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "INSERT INTO T_Monitor_Task " ) ;
sbs . Append ( "(F_ManageTaskIndex, F_ManageTASKKINDINDEX, F_MonitorIndex,F_MonitorTaskLevel," ) ;
sbs . Append ( " F_DeviceIndex, F_DeviceCommandIndex, F_RouteID, F_Status,F_NumParam1, F_NumParam4," ) ;
sbs . Append ( " F_AheadDetect,F_TxtParam)" ) ;
sbs . Append ( "VALUES (" ) . Append ( dvIOC [ i ] [ "CONTROL_ID" ] ) . Append ( ",1," ) . Append ( monitorIndex )
. Append ( ",1," ) . Append ( devindex ) . Append ( "," ) . Append ( devCommand ) . Append ( "," ) . Append ( routeID )
. Append ( ",3," ) . Append ( NumParam1 ) . Append ( "," ) . Append ( NumParam4 ) . Append ( ",'" ) . Append ( AheadDetect )
. Append ( "','" ) . Append ( dvIOC [ i ] [ "STOCK_BARCODE" ] ) . Append ( "')" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
continue ;
}
if ( devKind = = 4 )
{
if ( devCommand = = 7 )
{
int RGVsn = ccf . GetSerialNumberFromRouteDevice ( routeID , devindex ) ;
int Consn = ccf . GetSerialNumberFromRouteDevice ( routeID , NumParam1 ) ;
#region RGV�˶����ӻ���
if ( RGVsn > Consn )
{
//ɾ��RGV�˶����ӻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( NumParam1 ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
#region RGV�˶����ͻ���
if ( RGVsn < Consn )
{
int RGVsn1 = ccf . GetSerialNumberFromRouteDevice ( routeidNew , devindex ) ;
//�ҵ��ӻ����ͻ��豸����
List < int > nextcon = CDisassembleTask . GetNextDevice ( routeidNew , RGVsn1 ) ;
int condev = nextcon [ 0 ] ;
//ɾ��RGV�˶����ͻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( condev ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) ;
sbs . Append ( " and (F_ManageTaskIndex = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
}
#region RGV�ͻ�
if ( ( devCommand = = 3 ) | | ( devCommand = = 5 ) )
{
int RGVsn = ccf . GetSerialNumberFromRouteDevice ( routeidNew , devindex ) ;
//�ҵ��ӻ����ͻ��豸����
List < int > nextcon = CDisassembleTask . GetNextDevice ( routeidNew , RGVsn ) ;
int condev = nextcon [ 0 ] ;
//ɾ��RGV�˶����ͻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( condev ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
#region RGV�ӻ�
if ( ( devCommand = = 2 ) | | ( devCommand = = 4 ) )
{
int RGVsn = ccf . GetSerialNumberFromRouteDevice ( routeidNew , devindex ) ;
//�ҵ��ͻ����ͻ��豸����
List < int > priorcon = CDisassembleTask . GetPriorDevice ( routeidNew , RGVsn ) ;
int condev = priorcon [ 0 ] ;
//ɾ��RGV�˶����ӻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( condev ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
}
if ( devKind = = 2 )
{
#region ���ͻ��ͻ�
if ( devCommand = = 3 )
{
int consn = ccf . GetSerialNumberFromRouteDevice ( routeidNew , devindex ) ;
//�ҵ��ӻ�RGV�豸����
List < int > nextrgv = CDisassembleTask . GetNextDevice ( routeidNew , consn ) ;
int rgvdev = nextrgv [ 0 ] ;
//ɾ��RGV�˶����ӻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( rgvdev ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( devindex ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
#region ���ͻ��Ľӻ�
if ( devCommand = = 4 )
{
int consn = ccf . GetSerialNumberFromRouteDevice ( routeID , devindex ) ;
//�ҵ��ͻ�RGV�豸����
List < int > priorrgv = CDisassembleTask . GetPriorDevice ( routeID , consn ) ;
int rgvdev = priorrgv [ 0 ] ;
int rgvsn = ccf . GetSerialNumberFromRouteDevice ( routeidNew , rgvdev ) ;
List < int > nextdev = CDisassembleTask . GetNextDevice ( routeidNew , rgvdev ) ;
int condev = nextdev [ 0 ] ;
//ɾ��RGV�˶����ͻ���֮ǰ������
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( rgvdev ) . Append ( ") AND (F_DeviceCommandIndex = 7) AND (F_RouteID = " ) . Append ( routeidNew ) ;
sbs . Append ( ") AND (F_Status = 3) AND (F_NumParam1 = " ) . Append ( condev ) . Append ( ")" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
#region ���ͻ����ͳ�
if ( devCommand = = 6 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = 6) AND (F_RouteID = " ) . Append ( routeidNew ) . Append ( ") AND (F_Status = 3) " ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
int CurrentLocation = 0 ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FCurrentLocation FROM T_Manage_Task where FID=" ) . Append ( dvIOC [ i ] [ "CONTROL_ID" ] ) . Append ( " and F_ManageTaskKindIndex=1" ) ;
dvc = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvc . Count > 0 )
{
CurrentLocation = Convert . ToInt32 ( dvc [ 0 ] [ "FCurrentLocation" ] ) ;
}
if ( CurrentLocation = = 0 ) continue ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_DeviceIndex=" ) . Append ( CurrentLocation ) . Append ( " where F_MonitorIndex=" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20090910�Ѿ����˵�CurrentLocation��F_NumParam4=CurrentLocation�� ɾ���ͳ�����
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_DeviceIndex=" ) . Append ( CurrentLocation ) . Append ( " and F_NumParam4=" ) . Append ( CurrentLocation ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20091102
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Base_Device set F_LockedState=0 where F_LockedState=" ) . Append ( monitorIndex ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
}
#region �Ѷ������ͻ��غ���������
if ( devKind = = 1 )
{
//�Ѷ������ͻ��أ�ֻ�����Ѷ������ͻ�����
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_MonitorIndex FROM T_Monitor_Task WHERE (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_DeviceIndex = " ) ;
sbs . Append ( devindex ) . Append ( ") AND (F_DeviceCommandIndex = " ) . Append ( devCommand ) . Append ( ") AND (F_RouteID = " ) . Append ( routeidNew ) . Append ( ") AND (F_Status = 3)" ) ;
dvnew = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvnew . Count > 0 )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "delete from T_Monitor_Task where F_MonitorIndex<" ) . Append ( dvnew [ 0 ] [ "F_MonitorIndex" ] ) . Append ( " and (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" ) . Append ( devindex ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Monitor_Task set F_Status =0 where (F_ManageTaskIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX = 1) AND (F_Status = 3)" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
}
#endregion
} //20090910
}
else //δ���ֵģ���Ŀ��λ�ú�״̬(FSTATUS='40'���ò��ֵ�FIntoStepOK='-'��ΪFIntoStepOK='0'��
{
//20091128����ʹ��FENDCELL
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update T_Manage_Task set FENDDEVICE='" ) . Append ( FENDDEVICE ) . Append ( "',FENDCELL='" ) . Append ( FENDCELL ) . Append ( "', FIntoStepOK=0 where (FID = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1) and (FIntoStepOK='-')" ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
}
//��T_Manage_Task��FLANEWAY��FSTACK
int flaneway = - 1 , stackno = - 1 ;
if ( int . TryParse ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) , out a ) = = false )
{ //�����
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay FROM ST_CELL where FCELLCODE='" ) . Append ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) . Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "START_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
if ( obj ! = null )
{
flaneway = Convert . ToInt32 ( obj ) ;
}
}
else
{
if ( int . TryParse ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) , out a ) = = false )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay FROM ST_CELL where FCELLCODE='" ) . Append ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) . Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "END_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
if ( obj ! = null )
{
flaneway = Convert . ToInt32 ( obj ) ;
}
}
}
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_StackIndex, F_LaneNo FROM T_Base_StackInfo " ) ;
sbs . Append ( " where (F_LaneNo='" ) . Append ( flaneway ) . Append ( "') OR (F_LaneNo like '%" ) . Append ( ";" ) . Append ( flaneway ) . Append ( "') OR (F_LaneNo='" ) . Append ( flaneway ) . Append ( ";" ) . Append ( "%') " ) ;
dv = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
stackno = Convert . ToInt32 ( dv [ 0 ] [ "F_StackIndex" ] ) ;
}
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update dbo.T_Manage_Task set FLANEWAY=" ) . Append ( flaneway ) . Append ( ",FSTACK=" ) . Append ( stackno ) . Append ( " where F_ManageTaskKindIndex=1 and FID=" ) . Append ( dvIOC [ i ] [ "CONTROL_ID" ] ) ;
dbo . ExceSQL ( sbs . ToString ( ) ) ;
//20091107
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update IO_control set CONTROL_status=" ) . Append ( Model . CGeneralFunction . TASKRUN ) . Append ( " where (CONTROL_ID = " ) . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) . Append ( ")" ) ;
dboM . ExceSQL ( sbs . ToString ( ) ) ;
CDataChangeEventArgs cea = new CDataChangeEventArgs ( null , null ) ;
OnDataChange ( "��ȡ������GetManagerTask" , cea ) ;
}
#endregion
}
if ( RecCount > 0 )
{
//��ʾ��������
CDataChangeEventArgs cea = new CDataChangeEventArgs ( null , null ) ;
OnDataChange ( "��ȡ����������" , cea ) ;
return RecCount ;
}
else
{
//_CObtainTaskError = "û�л����κε���������";
return 0 ;
}
}
else
{
//_CObtainTaskError = "��������û���´��µİ���������";
return 0 ;
}
//20091107
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "���õ�������ʧ��,{0}��" , ex . StackTrace + ex . Message ) ;
//throw ex;
return 0 ;
}
finally
{
dsIOC . Dispose ( ) ;
dvIOC . Dispose ( ) ;
DMAN . Dispose ( ) ;
dv . Dispose ( ) ;
dvc . Dispose ( ) ;
dvmi . Dispose ( ) ;
dvnew . Dispose ( ) ;
}
}
private static bool ManageSendDischargingTask ( int startdev , string batch , int ScanDeviceIdx , int arrowDev )
{
//startdev46006/46007/46008����֪ͨPLC���ж�Ӧ�豸�ţ��豸��+��3��
//ScanDeviceIdx42664��F_BoxBarcode��¼���ţ�F_TaskIndex��¼���е�Ԫ��
//arrowDev��42639�������ŷ��У��������
DataView dv = new DataView ( ) ;
try
{
if ( arrowDev = = 4 2 6 3 9 )
{
sbs . Clear ( ) ;
sbs . Append ( string . Format ( "SELECT F_TaskIndex,F_BoxBarcode FROM T_Base_PLC_Ask WHERE (F_TaskIndex>0 and F_DeviceIndex = {0})" , ScanDeviceIdx ) ) ;
dv = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
if ( dv [ 0 ] [ "F_TaskIndex" ] . ToString ( ) = = startdev . ToString ( ) & & dv [ 0 ] [ "F_BoxBarcode" ] . ToString ( ) = = batch )
{
return true ;
}
else
{
return false ;
}
}
}
devinfo = Model . CGetInfo . GetDeviceInfo ( Convert . ToInt32 ( startdev . ToString ( ) + "3" ) ) ;
witemnames [ 0 ] . Clear ( ) ;
witemnames [ 0 ] . Append ( "DB1." + devinfo . Dbw1Address . ToString ( ) ) . Append ( ",b" ) ;
wv [ 0 ] . Clear ( ) ;
wv [ 0 ] . Append ( "2" ) ;
sdo = CommLayerFactory . CommModeCreate . CreateSendDeviceOrder ( devinfo . DeviceIndex ) ;
if ( sdo . WriteDBData ( witemnames , wv , devinfo . S7Connection ) = = true )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "OPCClient" , "����֪ͨPLC����" , startdev . ToString ( ) , "���ţ�" + batch ) ;
if ( arrowDev = = 4 2 6 3 9 )
{
dbo . ExecuteSql ( string . Format ( "UPDATE T_Base_PLC_Ask SET F_TaskIndex = {0}, F_BoxBarcode = '{1}' WHERE (F_DeviceIndex = {2})" , startdev , batch , ScanDeviceIdx ) ) ;
}
}
return true ;
}
catch ( Exception ex )
{
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs ( "tsStatus" , string . Format ( "��ȡ����IntegrativeNotifyDischargingʱ��{0}" , ex . StackTrace + ex . Message ) ) ;
OnRefreshMonitor ( rme ) ;
return false ;
}
finally
{
dv . Dispose ( ) ;
}
}
private static bool IFExitSameLayerUnSameEndDevice ( string layer , int barcodeBindDevice , string endDevice )
{
DataView dv = new DataView ( ) ;
try
{
dv = dbo . ExceSQL ( string . Format ( "SELECT T_Monitor_Task.F_MonitorIndex, T_Manage_Task.FENDDEVICE, T_Monitor_Task.F_NumParam4 FROM T_Manage_Task,T_Monitor_Task where T_Manage_Task.FID = T_Monitor_Task.F_ManageTaskIndex and T_Manage_Task.F_ManageTaskKindIndex = T_Monitor_Task.F_ManageTASKKINDINDEX and (T_Manage_Task.FENDDEVICE LIKE '{0}%') AND (T_Manage_Task.FENDDEVICE <> '{1}') AND (T_Monitor_Task.F_NumParam4 = {2})" , layer , endDevice , barcodeBindDevice ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return true ;
}
else
{
return false ;
}
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ���ж��Ƿ���ͬ�㲻ͬ�춨��Ԫ����δͨ������ɨ����IFExitSameLayerUnSameEndDevice��{0}" , ex . StackTrace + ex . Message ) ;
return false ;
}
finally
{
dv . Dispose ( ) ;
}
}
private static string GetFUseForkFromManage ( int p )
{
DataView dv = new DataView ( ) ;
try
{
dv = dboM . ExceSQL ( string . Format ( "SELECT START_DEVICE_CODE FROM IO_CONTROL WHERE (CONTROL_ID ={0})" , p ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return dv [ 0 ] [ "START_DEVICE_CODE" ] . ToString ( ) . Trim ( ) . Substring ( 5 , 1 ) ;
}
else
{
return "0" ;
}
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ�����������Ļ���GetFUseForkFromManage��{0}" , ex . StackTrace + ex . Message ) ;
return "0" ;
}
finally
{
dv . Dispose ( ) ;
}
}
static void RecordMaxManageTaskFID ( long fid )
{
//20101124
StringBuilder sql = new StringBuilder ( ) ;
DataSet ds = dbo . ExceSQL ( "select F_ManageTaskIndex from T_Base_Manage_Task_Index_Auto_Task" ) ;
DataView dv = ds . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
if ( fid > Convert . ToInt64 ( dv [ 0 ] [ "F_ManageTaskIndex" ] ) )
{
//20101124
sql . Append ( "UPDATE T_Base_Manage_Task_Index_Auto_Task SET F_ManageTaskIndex =" ) . Append ( fid ) ;
dbo . ExceSQL ( sql . ToString ( ) ) ;
}
}
else
{
//20101124
sql . Append ( "INSERT INTO T_Base_Manage_Task_Index_Auto_Task (F_ManageTaskIndex)VALUES (" ) . Append ( fid ) . Append ( ")" ) ;
dbo . ExceSQL ( sql . ToString ( ) ) ;
}
}
/// <summary>
/// 20091005
/// ��ȡ���õ�Ŀ��λ�ã��������������߳���վ̨
/// </summary>
/// <param name="dr">T_Manage_Task�����м�¼</param>
/// <returns></returns>
public static void GetUsableDestination ( DataRowView dr )
{
//20100610����һ��·�����ã����������ٵ��յ��豸
Dictionary < int , int > advDev = new Dictionary < int , int > ( ) ;
object ob ;
//ֻ�������ĵ���������·�������ĵ����Զ�����·��
if ( dr [ "F_ManageTaskKindIndex" ] . ToString ( ) ! = "1" ) return ;
StringBuilder sql = new StringBuilder ( ) ; //20101124
string adviceDev = "" ;
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 ( ")" ) ; //20101124
DataTable dtd = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] ; //20101124
if ( dtd . Rows . Count > 0 ) //ԭ���յ���Ӧ��վ̨��ô����������վ̨������Ҫ�ı�
{
adviceDev = dtd . Rows [ 0 ] [ "F_DESTINATION" ] . ToString ( ) ;
//20091005
return ;
}
else
{
//���ҿ���Ŀ��λ��
//20101124
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)" ) ;
DataTable dt = dbo . ExceSQL ( sql . ToString ( ) ) . Tables [ 0 ] ;
//20101124
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ͳ�Ƶ��յ��豸����ִ�е�������
//20101124
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 adviceDev = dt.Rows[i]["F_DESTINATION"].ToString();
//break;
}
}
if ( advDev . Count = = 0 ) //20100610
{
return ;
}
else
{ //20100610
int mincount = 9 9 9 9 ;
foreach ( int aaa in advDev . Keys )
{
if ( advDev [ aaa ] < mincount )
{
mincount = advDev [ aaa ] ;
adviceDev = aaa . ToString ( ) ;
}
}
if ( adviceDev = = "" )
{
return ;
}
}
}
else
{
return ;
}
}
//DataView DV = dboM.ExceSQL("select IO_CONTROL_APPLY_SEQ.NEXTVAL FROM DUAL").Tables[0].DefaultView;
//20101108int fid = dboM.GetManageTableIndex("IO_CONTROL_APPLY");
string dtime = DateTime . Now . ToString ( "u" ) ;
dtime = dtime . Substring ( 0 , dtime . Length - 1 ) ;
//20091128
dboM . TransBegin ( ) ;
try
{
//20101124
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( " update IO_CONTROL set CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKALTERROUTEAPPLY ) . Append ( " where CONTROL_ID=" ) . Append ( dr [ "FID" ] ) ;
dboM . ExceSQL ( sql . ToString ( ) ) ;
//����������������//
//20101124
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, " ) ;
sql . 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 ( ) ;
//20091102�ĵ�������Ϊ���ɲ���״̬
//20101124
sql . Remove ( 0 , sql . Length ) ;
sql . Append ( "update T_Manage_Task set FIntoStepOK='-' where (FID = " ) . Append ( Convert . ToInt32 ( dr [ "FID" ] ) ) . Append ( ") AND (F_ManageTASKKINDINDEX =1)" ) ;
dbo . ExceSQL ( sql . ToString ( ) ) ;
CommonClassLib . CCarryConvert . WriteDarkCasket ( "CObtainTask.GetUsableDestination" , "��ȡ����ʱ�������������ĵ�" , "����������" + dr [ "FID" ] . ToString ( ) , "���룺" + dr [ "FPALLETBARCODE" ] . ToString ( ) . ToUpper ( ) ) ;
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ�������������ĵ���{0}" , ex . StackTrace + ex . Message ) ;
dboM . TransRollback ( ) ;
}
}
public static bool IfDeleteOutTask ( int fid , int deleteflag )
{ //20101124
try
{
if ( 1 ! = deleteflag )
{
return false ;
}
StringBuilder strsql = new StringBuilder ( "select FIntoStepOK from T_Manage_Task where F_ManageTaskKindIndex=1 and FID= " ) ;
strsql . Append ( fid ) . Append ( " and FIntoStepOK <> '1' " ) ;
DataView dv = dbo . ExceSQL ( strsql . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
strsql . Remove ( 0 , strsql . Length ) ;
strsql . Append ( "DELETE FROM T_Manage_Task WHERE (F_ManageTaskKindIndex = 1) AND (FID = " ) . Append ( fid ) . Append ( ")" ) ;
dbo . ExceSQL ( strsql . ToString ( ) ) ;
strsql . Remove ( 0 , strsql . Length ) ;
strsql . Append ( "update IO_Control set CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKCANCEL ) . Append ( " where CONTROL_ID=" ) . Append ( fid ) ;
dboM . ExceSQL ( strsql . ToString ( ) ) ;
return true ;
}
else
{
return false ;
}
}
catch ( Exception ex )
{
throw ex ;
}
}
/// <summary>
/// 20101028��ȡ����������ͬʱ������������Ӧ�÷����Ļ��棺�������ƹ��ɽ���Զ������������1,2,3,4;'-'����δ��������
/// </summary>
/// <param name="RelativeControlID">��������FID</param>
/// <param name="UseAwayFork">�Ƿ�ʹ��Զ���棬Ĭ��ֵ"-"</param>
/// <returns></returns>
static string ObtainDoubleForkTask ( object RelativeControlID , string UseAwayFork )
{
int i = 0 ;
DataView dvl ;
object obj = null ;
string FSTARTCELL = "" ; string FENDCELL = "" ; char [ ] cc = new char [ 1 ] { '-' } ;
int FSTARTDEVICE = 0 ; int FENDDEVICE = 0 ; int FSTARTUCODE = 0 ; int FENDUCODE = 0 ;
string LOGIC_AREA = string . Empty ;
string flaneway = "-1" ;
int stackno = - 1 ;
int FStartCol = 0 , FStartLayer = 0 , FEndCol = 0 , FEndLayer = 0 ;
try
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ; //20101208
sbs . Append ( "select * from IO_CONTROL where CONTROL_ID=" ) . Append ( RelativeControlID ) ;
DataView dvIOC = dboM . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvIOC . Count = = 0 ) return "-" ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT T_Base_Manage_Task_Kind.F_TaskKindIndex, " ) ;
sbs . Append ( "T_Manage_Task.F_ManageTaskKindIndex, T_Manage_Task.FID " ) ;
sbs . Append ( "FROM T_Base_Manage_Task_Kind , T_Manage_Task where " ) ;
sbs . Append ( "T_Base_Manage_Task_Kind.F_TaskKindIndex = T_Manage_Task.F_ManageTaskKindIndex " ) ;
sbs . Append ( " and T_Base_Manage_Task_Kind.F_TaskKindIndex=1 and T_Manage_Task.FID = " ) ;
sbs . Append ( RelativeControlID ) ;
dvl = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
//20101124
if ( dvl . Count > 0 ) // �������������¼�¼
{
return "-" ;
}
int a = 0 ;
if ( int . TryParse ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) , out a ) = = false )
{ //�����
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay,FStack FROM ST_CELL where FCELLCODE='" ) ;
sbs . Append ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) . Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "START_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
dvl = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
//20101124
if ( dvl . Count > 0 )
{
flaneway = dvl [ 0 ] [ "FLaneWay" ] . ToString ( ) ;
stackno = Convert . ToInt32 ( dvl [ 0 ] [ "FStack" ] ) ; //20101028
FStartCol = Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) . Substring ( 3 , 2 ) ) ;
FStartLayer = Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) . Substring ( 6 , 2 ) ) ;
}
}
else
{
if ( int . TryParse ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) , out a ) = = false )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay,FStack FROM ST_CELL where FCELLCODE='" ) ;
sbs . Append ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ;
sbs . Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "END_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
dvl = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
//20101124
if ( dvl . Count > 0 )
{
flaneway = dvl [ 0 ] [ "FLaneWay" ] . ToString ( ) ;
stackno = Convert . ToInt32 ( dvl [ 0 ] [ "FStack" ] ) ; //20101028
FEndCol = Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) . Substring ( 3 , 2 ) ) ;
FEndLayer = Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) . Substring ( 6 , 2 ) ) ;
}
}
}
//20101028
//��¼����������������FID����T_Base_Manage_Task_Index_Auto_Task
RecordMaxManageTaskFID ( Convert . ToInt64 ( dvIOC [ i ] [ "CONTROL_ID" ] ) ) ;
if ( int . TryParse ( dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) , out a ) = = true )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT T_Base_AGV_Gate.F_ChannelsIndex FROM T_Base_Device,T_Base_AGV_Gate where T_Base_Device.F_DeviceIndex = T_Base_AGV_Gate.F_AGVGateDeviceIndex and (T_Base_Device.F_DeviceKindIndex = 9) and (F_AGVGateDeviceIndex = " ) ;
sbs . Append ( Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) ) . Append ( ") " ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
if ( ( obj ! = null ) )
{ //AGVվ̨����
FSTARTDEVICE = Convert . ToInt32 ( obj ) ;
FSTARTCELL = dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) ;
}
else
{ //վ̨����
FSTARTDEVICE = Convert . ToInt32 ( dvIOC [ i ] [ "START_DEVICE_CODE" ] ) ;
FSTARTCELL = "-" ;
}
}
else
{ //�����
//20111020
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay,FUCODE,FUCONVEYOR FROM ST_CELL where FCELLCODE='" ) . Append ( dvIOC [ i ] [ "START_DEVICE_CODE" ] )
. Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "START_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
dvl = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvl . Count > 0 )
{
FSTARTDEVICE = Convert . ToInt32 ( dvl [ 0 ] [ "FLaneWay" ] ) ;
if ( dvl [ 0 ] [ "FUCODE" ] . ToString ( ) ! = "0" )
{
FSTARTCELL = dvl [ 0 ] [ "FUCONVEYOR" ] . ToString ( ) ;
FSTARTUCODE = Convert . ToInt32 ( dvl [ 0 ] [ "FUCODE" ] ) ;
}
else
{
FSTARTCELL = dvIOC [ i ] [ "START_DEVICE_CODE" ] . ToString ( ) ;
}
}
else
{
CObtainTaskError = string . Format ( "��ȡ����ʱ��û�ҵ���������������{0},������λ�ã�" , dvIOC [ i ] [ "CONTROL_ID" ] . ToString ( ) ) ;
return "-" ;
}
//20111020
}
if ( int . TryParse ( dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) , out a ) = = true )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT T_Base_AGV_Gate.F_ChannelsIndex FROM T_Base_Device,T_Base_AGV_Gate where T_Base_Device.F_DeviceIndex = T_Base_AGV_Gate.F_AGVGateDeviceIndex and (T_Base_Device.F_DeviceKindIndex = 9) and (F_AGVGateDeviceIndex = " )
. Append ( Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ) . Append ( ") " ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) ;
if ( ( obj ! = null ) )
{ //AGVվ̨����
FENDDEVICE = Convert . ToInt32 ( obj ) ;
FENDCELL = dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ;
}
else
{ //վ̨����
FENDDEVICE = Convert . ToInt32 ( dvIOC [ i ] [ "END_DEVICE_CODE" ] ) ;
FENDCELL = "-" ;
}
}
else
{ //�����
//20111020
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FLaneWay,FUCODE,FUCONVEYOR FROM ST_CELL where FCELLCODE='" ) . Append ( dvIOC [ i ] [ "END_DEVICE_CODE" ] )
. Append ( "' and FWAREHOUSE='" ) . Append ( dvIOC [ i ] [ "END_WAREHOUSE_CODE" ] ) . Append ( "'" ) ;
dvl = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dvl . Count > 0 )
{
FENDDEVICE = Convert . ToInt32 ( dvl [ 0 ] [ "FLaneWay" ] ) ;
if ( dvl [ 0 ] [ "FUCODE" ] . ToString ( ) ! = "0" )
{
FENDCELL = dvl [ 0 ] [ "FUCONVEYOR" ] . ToString ( ) ;
FENDUCODE = Convert . ToInt32 ( dvl [ 0 ] [ "FUCODE" ] ) ;
}
else
{
FENDCELL = dvIOC [ i ] [ "END_DEVICE_CODE" ] . ToString ( ) ;
}
}
else
{
CObtainTaskError = string . Format ( "��ȡ����ʱ��û�ҵ���������������{0},���յ�λ�ã�" , dvIOC [ i ] [ "CONTROL_ID" ] . ToString ( ) ) ;
return "-" ;
}
//20111020
}
int FTASKLEVEL = 0 ; //�����������������ȼ�Ӧ������
FTASKLEVEL = dvIOC [ i ] [ "CONTROL_TASK_LEVEL" ] = = DBNull . Value ? 0 : Convert . ToInt32 ( dvIOC [ i ] [ "CONTROL_TASK_LEVEL" ] ) ;
if ( FENDDEVICE = = 2 2 0 5 2 | | FENDDEVICE = = 2 2 0 6 6 ) //�����̼�������20170103
{
FTASKLEVEL = 1 0 0 ;
}
if ( UseAwayFork = = "0" )
{
string [ ] lc = new string [ 2 ] { "0" , "0" } ;
devinfo = Model . CGetInfo . GetDeviceInfo ( FSTARTDEVICE ) ;
if ( devinfo ! = null )
{
if ( int . TryParse ( FSTARTCELL . ToString ( ) , out a ) = = true )
{
//20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_UseAwayFork FROM T_Base_AGV_Gate WHERE (F_ChannelsIndex=" ) . Append ( FSTARTDEVICE )
. Append ( ") and ( F_AGVGateDeviceIndex= " ) . Append ( FSTARTCELL ) . Append ( ")" ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) . ToString ( ) ;
//20101124
if ( obj ! = null )
{ //AGVվ̨��˫������
UseAwayFork = obj . ToString ( ) ;
}
}
else
{
if ( devinfo . DeviceKind = = 2 )
{
UseAwayFork = devinfo . DoubleFork ;
}
}
if ( FEndCol > 0 )
{
UseAwayFork = ccf . GetLimitXForkNo ( FEndCol , FENDDEVICE ) ;
}
}
if ( UseAwayFork = = "0" )
{
devinfo = Model . CGetInfo . GetDeviceInfo ( FENDDEVICE ) ;
if ( devinfo ! = null )
{
if ( int . TryParse ( FENDCELL . ToString ( ) , out a ) = = true )
{
////20101124
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_UseAwayFork FROM T_Base_AGV_Gate WHERE (F_ChannelsIndex=" ) . Append ( FENDDEVICE )
. Append ( ") and ( F_AGVGateDeviceIndex= " ) . Append ( FENDCELL ) . Append ( ")" ) ;
obj = dbo . GetSingle ( sbs . ToString ( ) ) . ToString ( ) ;
//20101124
if ( obj ! = null )
{
UseAwayFork = obj . ToString ( ) ;
}
}
else
{
if ( devinfo . DeviceKind = = 2 )
{
UseAwayFork = devinfo . DoubleFork ;
}
}
if ( FStartCol > 0 )
{
UseAwayFork = ccf . GetLimitXForkNo ( FStartCol , FSTARTDEVICE ) ;
}
}
}
}
int FSTATUS = 0 ;
#region ��ʼ��LOGIC_AREA
LOGIC_AREA = FENDDEVICE . ToString ( ) ;
#endregion
//20111020
//P��װ��,B��,G��λ,D����λ
object [ ] ob = new object [ 3 1 ] { dvIOC [ i ] [ "CONTROL_ID" ] , 1 , dvIOC [ i ] [ "MANAGE_ID" ] , dvIOC [ i ] [ "RELATIVE_CONTROL_ID" ] , dvIOC [ i ] [ "STOCK_BARCODE" ] . ToString ( ) ,
1 , dvIOC [ i ] [ "CONTROL_TASK_TYPE" ] , FTASKLEVEL , 0 , dvIOC [ i ] [ "START_WAREHOUSE_CODE" ] , FSTARTCELL , FSTARTDEVICE ,
dvIOC [ i ] [ "END_WAREHOUSE_CODE" ] , FENDCELL , FENDDEVICE , FSTATUS , Convert . ToDateTime ( dvIOC [ i ] [ "CONTROL_BEGIN_TIME" ] ) . ToString ( "yyyy-MM-dd HH:mm:ss" ) ,
dvIOC [ i ] [ "CONTROL_END_TIME" ] . ToString ( ) , 0 , dvIOC [ i ] [ "CONTROL_REMARK" ] . ToString ( ) . Replace ( "'" , "" ) , flaneway , stackno , UseAwayFork , "" ,
LOGIC_AREA , FStartCol , FStartLayer , FEndCol , FEndLayer , FSTARTUCODE , FENDUCODE } ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . AppendFormat ( string . Format ( "INSERT INTO T_Manage_Task(FID, F_ManageTaskKindIndex,FMANAGEID,F_RELATIVECONTORLID,FPALLETBARCODE,FMANAGETASKTYPE," +
"FCONTROLTASKTYPE, FTASKLEVEL, FISRETURN,FSTARTWAREHOUSE, FSTARTCELL, FSTARTDEVICE,FENDWAREHOUSE,FENDCELL,FENDDEVICE, FSTATUS, FBEGTIME, FENDTIME," +
"FIntoStepOK,FREMARK,FLANEWAY,FSTACK,FUseAwayFork,FCONTORL_BATCH,FLOGIC_AREA,FStartCol,FStartLayer,FEndCol,FEndLayer,FSTARTUCODE,FENDUCODE)VALUES ({0},{1},{2},{3},'{4}'," +
"'{5}',{6},{7},{8},'{9}','{10}',{11},'{12}','{13}',{14},{15},'{16}','{17}','{18}','{19}',{20},{21},'{22}','{23}','{24}',{25},{26},{27},{28},{29},{30})" , ob ) ) ;
int rc = dbo . ExecuteSql ( sbs . ToString ( ) ) ;
CommonClassLib . CCarryConvert . WriteDarkCasket ( "CObtainTask" , "��ȡ����:" , ",����[" + dvIOC [ i ] [ "STOCK_BARCODE" ] . ToString ( ) + "]" , ",CONTROL_ID:" + dvIOC [ i ] [ "CONTROL_ID" ] . ToString ( ) ) ;
ob = null ;
//20111020
if ( rc = = 0 ) return "-" ;
else
{
if ( dvIOC [ i ] [ "CONTROL_STATUS" ] . ToString ( ) ! = Model . CGeneralFunction . TASKSINGLEFORKRUN . ToString ( ) )
{
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update IO_CONTROL set CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKCONTROLREADED )
. Append ( " where CONTROL_ID=" ) . Append ( dvIOC [ i ] [ "CONTROL_ID" ] ) ;
dboM . ExecuteSql ( sbs . ToString ( ) ) ;
}
return UseAwayFork ;
}
}
catch ( Exception ex )
{
CObtainTaskError = "ObtainDoubleForkTask," + ex . StackTrace + ex . Message ;
return "0" ;
}
}
private static int GetIOControlFromBarcode ( StringBuilder stringBuilder )
{
DataView dv = new DataView ( ) ;
try
{
dv = dboM . ExceSQL ( string . Format ( "SELECT CONTROL_ID FROM IO_CONTROL WHERE (STOCK_BARCODE = '{0}')" , stringBuilder ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
return Convert . ToInt32 ( dv [ 0 ] [ "CONTROL_ID" ] ) ;
}
else
{
return 0 ;
}
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ��ͨ��������������GetIOControlFromBarcode��{0}" , ex . StackTrace + ex . Message ) ;
return 0 ;
}
finally
{
dv . Dispose ( ) ;
}
}
private static StringBuilder [ ] GetRelativeBarCodes ( string startdevice , string BarCode )
{ //20140218
int binddev = 0 ;
int . TryParse ( startdevice . Substring ( 0 , 5 ) , out binddev ) ;
if ( binddev = = 0 ) return null ;
StringBuilder [ ] RelativeBarCodes ;
DataView dv = new DataView ( ) ;
try
{
dv = dbo . ExceSQL ( string . Format ( "SELECT F_FirstProject,F_BarcodeLength FROM T_Base_PLC_Ask WHERE F_BindingDevice ={1} and (F_FirstProject LIKE '%{0}%')" , BarCode , binddev ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
int bclength = Convert . ToInt32 ( dv [ 0 ] [ "F_BarcodeLength" ] ) ;
int amount = Convert . ToInt32 ( dv [ 0 ] [ "F_FirstProject" ] . ToString ( ) . Length ) / bclength ;
if ( amount < = 1 ) return null ;
RelativeBarCodes = new StringBuilder [ amount - 1 ] ;
for ( int i = 0 ; i < ( amount - 1 ) ; i + + )
{
RelativeBarCodes [ i ] = new StringBuilder ( "" ) ;
}
int getAmount = 0 ;
StringBuilder sb = new StringBuilder ( ) ;
for ( int i = 0 ; i < amount ; i + + )
{
sb . Clear ( ) ;
sb . Append ( dv [ 0 ] [ "F_FirstProject" ] . ToString ( ) . Substring ( i * bclength + i , bclength ) ) ;
if ( sb . ToString ( ) ! = BarCode )
{
RelativeBarCodes [ getAmount ] . Append ( sb ) ;
getAmount + + ;
}
}
return RelativeBarCodes ;
}
else
{
return null ;
}
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ��GetRelativeBarCodes�ж��Ƿ����ڶ��������������������룺{0}" , ex . StackTrace + ex . Message ) ;
return null ;
}
finally
{
dv . Dispose ( ) ;
}
}
/// <summary>
/// �Ƿ�����ͬһ�������Ҳ�ͬ���ŵij�������û���ֵ�ɨ����
/// </summary>
/// <param name="Batch">����</param>
/// <param name="Area">������</param>
/// <returns></returns>
static bool IfSameAreaExitElseBatch ( string Batch , string Area )
{
try
{
object ob = null ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT FID FROM T_Manage_Task WHERE FCONTROLTASKTYPE=2 and F_ManageTaskKindIndex=1 and FLOGIC_AREA ='" ) . Append ( Area ) . Append ( "'" ) ; // 20110331AND FCONTORL_BATCH <> '").Append(Batch).Append("'
DataView dv = dbo . ExceSQL ( sbs . ToString ( ) ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
for ( int i = 0 ; i < dv . Count ; i + + )
{
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "SELECT F_NumParam4 FROM T_Monitor_Task WHERE F_ManageTASKKINDINDEX = 1 AND F_ManageTaskIndex = " ) . Append ( Convert . ToInt32 ( dv [ i ] [ "FID" ] ) ) ; //20110331
ob = dbo . ExecuteSql ( sbs . ToString ( ) ) ;
if ( ob ! = null )
{
if ( ob . ToString ( ) = = "12030" )
{
return true ;
}
}
else
{
return true ;
}
}
return false ;
}
else
{
return false ;
}
}
catch ( Exception ex )
{
CObtainTaskError = string . Format ( "��ȡ����ʱ���ж��Ƿ�����ͬһ�������Ҳ�ͬ���ŵij���������{0}" , ex . StackTrace + ex . Message ) ;
return false ;
}
}
static void ManageTaskComplete ( int fid , int mti )
{
DataView dv = dbo . ExceSQL ( "SELECT F_ManageTaskKindIndex, F_ManageTaskIndex,F_DeviceIndex,F_MonitorIndex,F_Status,F_DeviceCommandIndex " +
",F_NumParam2,F_NumParam5,F_TxtParam FROM T_Monitor_Task Where F_ManageTaskIndex=" + fid + " and F_ManageTaskKindIndex= " +
mti ) . Tables [ 0 ] . DefaultView ;
if ( dv . Count > 0 )
{
for ( int i = 0 ; i < dv . Count ; i + + )
{
if ( Convert . ToInt32 ( dv [ i ] [ "F_Status" ] ) > = 1 )
{
cgs . ActionComplete ( Convert . ToInt32 ( dv [ i ] [ "F_DeviceIndex" ] ) , Convert . ToInt32 ( dv [ i ] [ "F_MonitorIndex" ] ) , 1 ) ;
}
else
{
cgs . ActionComplete ( Convert . ToInt32 ( dv [ i ] [ "F_DeviceIndex" ] ) , Convert . ToInt32 ( dv [ i ] [ "F_MonitorIndex" ] ) , Model . CGeneralFunction . TASKFINISH ) ;
}
}
}
}
static void IntegrativeNotifyDischarging ( int fid , int DeviceIdx )
{ //һ�廯ƽ̨֪ͨ�����ж�Ӧ�豸��DeviceIdx+��1��
DataView dv = new DataView ( ) ;
try
{
devinfo = Model . CGetInfo . GetDeviceInfo ( Convert . ToInt32 ( DeviceIdx . ToString ( ) + "1" ) ) ;
witemnames [ 0 ] . Clear ( ) ;
witemnames [ 0 ] . Append ( "DB1." + devinfo . Dbw1Address . ToString ( ) ) . Append ( ",b" ) ;
wv [ 0 ] . Clear ( ) ;
wv [ 0 ] . Append ( "2" ) ;
sdo = CommLayerFactory . CommModeCreate . CreateSendDeviceOrder ( devinfo . DeviceIndex ) ;
if ( sdo . WriteDBData ( witemnames , wv , devinfo . S7Connection ) = = true )
{
CommonClassLib . CCarryConvert . WriteDarkCasket ( "OPCClient" , "һ�廯ƽ̨֪ͨ������" , DeviceIdx . ToString ( ) , "CONTROL_ID��" + fid . ToString ( ) ) ;
sbs . Remove ( 0 , sbs . Length ) ;
sbs . Append ( "update IO_CONTROL set CONTROL_STATUS=" ) . Append ( Model . CGeneralFunction . TASKFINISH )
. Append ( " where CONTROL_ID=" ) . Append ( fid ) ;
dboM . ExecuteSql ( sbs . ToString ( ) ) ;
}
}
catch ( Exception ex )
{
RefreshMonitorEventArgs rme = new RefreshMonitorEventArgs ( "tsStatus" , string . Format ( "��ȡ����IntegrativeNotifyDischargingʱ��{0}" , ex . StackTrace + ex . Message ) ) ;
OnRefreshMonitor ( rme ) ;
return ;
}
finally
{
dv . Dispose ( ) ;
}
}
}
}