济宁李尔调度
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.

2180 lines
127 KiB

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using DBFactory;
using System.Threading;
using Microsoft.VisualBasic;
using CommonLib;
using ICommLayer;
using System.Linq;
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>
/// <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 //ÊÜÁ÷Á¿ÏÞÖÆµÄ³ö¿âÈÎÎñ£¬±äÁ¿³õʼ»¯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 ÊÜÁ÷Á¿ÏÞÖÆµÄ³ö¿âÈÎÎñ£¬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 ¿ØÖÆÈýËÄÂ¥µÄ³ö¿âÈÎÎñ£¬ÓÐÆäËûÅúºÅûͨ¹ýÖ÷µÀºÏÁ÷ɨÃèÆ÷¾Í²»»ñÈ¡ÈÎÎñ
////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(), 42664, 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 Ð޸ķ¾¶µÄ´ð¸´
#region
//ÀúÊ·
else if (dvIOC[i]["CONTROL_STATUS"].ToString() == Model.CGeneralFunction.TASKALTERROUTEREPLY.ToString() && false)
{
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;
//}
// yy -edit 2023-0205
int errManageTask = ccf.GetExceptionNOFromManageTask(Convert.ToInt32(dvIOC[i]["CONTROL_ID"]), 1);
//if (errManageTask == Model.CGeneralFunction.TASKREPEATINPUT )
if (errManageTask == Model.CGeneralFunction.PICKUPWEIGHTLEFT || errManageTask == Model.CGeneralFunction.PICKUPWEIGHTRIGHT)
{
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
//Àî¶ûÈë¿âÒì³£
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;
//}
// yy -edit 2023-0205
int errManageTask = ccf.GetExceptionNOFromManageTask(Convert.ToInt32(dvIOC[i]["CONTROL_ID"]), 1);
if (errManageTask == Model.CGeneralFunction.PICKUPWEIGHTLEFT || errManageTask == Model.CGeneralFunction.PICKUPWEIGHTRIGHT)
{
UseOldRoute = true;
}
}
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;
//20101124
//ÒѾ­¿ªÊ¼Ö´ÐеÄÐèÒª¸ü¸Äµ÷¶ÈÈÎÎñ)
//20101124
if (dvmi.Count > 0)
{
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());
int StartZ = Convert.ToInt32(dvmi[0]["F_NumParam1"]);
int EndZ = Convert.ToInt32(dvmi[0]["F_NumParam4"]);
string[] cell = FENDCELL.Split('-');
#region Àî¶û»õ²æ×ª»»--·ÏÆú
//int fork = 0;
//if (StartZ > 0)
//{
// if (StartZ % 4 != 0)
// {
// StartZ = StartZ % 4;
// }
// else
// {
// StartZ = 4;
// }
//}
//if (EndZ > 0)
//{
// if (EndZ % 4 != 0)
// {
// EndZ = EndZ % 4;
// }
// else
// {
// EndZ = 4;
// }
//}
//if (StartZ == 1)
//{
// fork = 12;
//}
//else if (StartZ == 2)
//{
// fork = EndZ < 3 ? 12 : 23;
//}
//else if (StartZ == 3)
//{
// fork = EndZ < 3 ? 12 : 23;
//}
//else if (StartZ == 4)
//{
// fork = 23;
//}
//else
//{
// fork = 0;
//}
//int useAwayFork = fork == 12 ? 1 : 2;
sbs.Remove(0, sbs.Length);
sbs.Append($"update T_Monitor_Task set F_Status = 0 ,F_NumParam4 ={cell[0]},F_NumParam5 ={cell[1]},F_NumParam6={cell[2]} WHERE (F_ManageTaskIndex = ").Append(Convert.ToInt32(dvIOC[i]["CONTROL_ID"])).Append(") AND (F_ManageTASKKINDINDEX =1) AND (F_Status = 3)");
dbo.ExceSQL(sbs.ToString());
#endregion
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());
//SControlMonitor smModel = new SControlMonitor();
//IControlMonitor icm;
ModifyMonitorTask_LR(Convert.ToInt32(dvmi[0]["F_DeviceIndex"]), Convert.ToInt32(dvmi[0]["F_MonitorIndex"]), 920, "µ÷¶ÈÈë¿âÈÎÎñÖÕµã»õλÐÞ¸ÄÖØ·¢", out string Errtext);
}
}
#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 == 42639)
{
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 == 42639)
{
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(int 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.ToInt32(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 = 9999;
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.ToInt32(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 == 22052 || FENDDEVICE == 22066)//µ½²ðÅ̼°µÄÈÎÎñ20170103
{
FTASKLEVEL = 100;
}
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[31] { 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];
RelativeBarCodes = new StringBuilder[amount];
//for (int i = 0; i < (amount - 1); i++)
for (int i = 0; i < (amount); 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));
sb.Append(dv[0]["F_FirstProject"].ToString().Substring(i * bclength, bclength));
//if (sb.ToString() != BarCode)
if (i < BarCode.Length)
{
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>
/// ÊÇ·ñ´æÔÚͬһÂß¼­ÇøÓòÇÒ²»Í¬ÅúºÅµÄ³ö¿âÈÎÎñû¹ý·ÖµÀɨÃèÆ÷
/// </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("»ñÈ¡ÈÎÎñʱ£¬ÅжÏÊÇ·ñ´æÔÚͬһÂß¼­ÇøÓòÇÒ²»Í¬ÅúºÅµÄ³ö¿âÈÎÎñ£º{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();
}
}
/// <summary>
/// Ö¸ÁîÍê³É¡¢É¾³ý¡¢ÖØ·¢
/// </summary>
/// <param name="DeviceIndex"></param>
/// <param name="MonitortaskID"></param>
/// <param name="ActionID">>״ֵ̬£º2 É豸ÇåÁã¡¢4 ¹ÊÕϸ´Î»¡¢900 ÊÖ¶¯ÈÎÎñɾ³ý¡¢920 ÈÎÎñÖØ·¢¡¢999 ÈÎÎñÍê³É</param>
/// <param name="text"></param>
/// <param name="Errtext"></param>
/// <returns></returns>
public static bool ModifyMonitorTask_LR(int DeviceIndex, int MonitortaskID, int ActionID, string text, out string Errtext)
{
//TODO£ºÖ¸ÁîÍê³É¡¢É¾³ý¡¢ÖØ·¢
int resetOrder = 4;//¹ÊÕϸ´Î»
DataView dv = new DataView(); DataView dv1 = new DataView(); DataView dv2 = new DataView(); DataView dv3 = new DataView();
try
{
string userDescription = text;
int mankind = ccf.GetManageTaskKindIndexFromMonitor(MonitortaskID);
int fid = ccf.GetManageTaskIndexfromMonitor(MonitortaskID);
dv = dbo.ExceSQL("SELECT * FROM T_Monitor_Task Where F_MonitorIndex=" +
MonitortaskID).Tables[0].DefaultView;
if (dv.Count > 0)
{
if (ActionID == Model.CGeneralFunction.TASKFINISH)
{
#region Ö¸ÁîÍê³É
CommonClassLib.CCarryConvert.WriteDarkCasket("É豸ָÁî¹ÜÀí", "ÊÖ¹¤±¨¸æÍê³É", "ÍÐÅÌÌõÂ룺" + dv[0]["F_TxtParam"].ToString(), "É豸Ë÷Òý:" + dv[0]["F_DeviceIndex"].ToString() + ";É豸ָÁîË÷Òý:" + MonitortaskID.ToString() + "," + userDescription);
cgs.ActionComplete(DeviceIndex, MonitortaskID, Convert.ToInt32(dv[0]["F_Status"]), ActionID);
//20111226ÓÐRGVµÄ¹ØÁªÈÎÎñÊǽӻõ¶¨¶Ñ¶â»ú»õ²æ£¬²»ÔÊÐí±¨¸æ¹ØÁªÈÎÎñÍê³É
#endregion
}
else if (ActionID == Model.CGeneralFunction.TASKDELETE)
{
#region Ö¸Áîɾ³ý
CommonClassLib.CCarryConvert.WriteDarkCasket("É豸ָÁî¹ÜÀí", "ÊÖ¹¤É¾³ýÉ豸ָÁî", "ÍÐÅÌÌõÂ룺" + dv[0]["F_TxtParam"].ToString(), "É豸Ë÷Òý:" + dv[0]["F_DeviceIndex"].ToString() + ";É豸ָÁîË÷Òý:" + MonitortaskID.ToString() + "," + userDescription);
cgs.ActionComplete(Convert.ToInt32(dv[0]["F_DeviceIndex"]), Convert.ToInt32(dv[0]["F_MonitorIndex"]), Model.CGeneralFunction.TASKDELETE);
#endregion
}
else if (ActionID == Model.CGeneralFunction.TASKRESTORE)
{
#region Ö¸ÁîÖØ·¢
int mindex = MonitortaskID;
int DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
int devKind = ccf.GetDeviceKindIdx(DeviceIdx);
string sss = "É豸Ë÷Òý:" + dv[0]["F_DeviceIndex"].ToString() + ";É豸ָÁîË÷Òý:" + dv[0]["F_MonitorIndex"].ToString() + "," + userDescription;
//20100108²Ù×÷ºÚÏ»×ÓÔö¼ÓÍÐÅÌÌõÂë
CommonClassLib.CCarryConvert.WriteDarkCasket("É豸ָÁî¹ÜÀí", "ÊÖ¹¤¸´Î»", "ÍÐÅÌÌõÂë:" + dv[0]["F_TxtParam"].ToString(), sss);
//¼ì²é¹ØÁªÃüÁîÒ»Æð¸´Î»
//Èç¹ûmindexÊÇÖ÷¶¯ÈÎÎñ£¨f_associatemonitorÓÐÊý¾Ý£©£¬Ïȸ´Î»±»¶¯µÄÈÎÎñ£»Èç¹ûmindexÊDZ»¶¯ÈÎÎñ£¬Ïȸ´Î»×Ô¼º£¬ÔÙ¸´Î»Ö÷¶¯ÈÎÎñ£»
dv1 = dbo.ExceSQL("select F_DeviceIndex,F_Associate from T_Monitor_Task where F_Associate IS NOT NULL and F_MonitorIndex=" + mindex).Tables[0].DefaultView;
if (dv1.Count > 0)
{
dv2 = dbo.ExceSQL("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_MonitorIndex=" + Convert.ToInt32(dv1[0]["F_Associate"])).Tables[0].DefaultView;
if (dv2.Count > 0)//ÓйØÁªÃüÁÏȸ´Î»¹ØÁªÃüÁî
{
DeviceIdx = Convert.ToInt32(dv2[0]["F_DeviceIndex"]);
SendDeviceReset(out Errtext, DeviceIdx, resetOrder);
SendDeviceReset(out Errtext, DeviceIdx, 2);
dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv2[0]["F_DeviceIndex"]));
dbo.ExceSQL("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv2[0]["F_MonitorIndex"]));
}
//ÔÙ¸´Î»×Ô¼º
DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
SendDeviceReset(out Errtext, DeviceIdx, resetOrder);
SendDeviceReset(out Errtext, DeviceIdx, 2);
dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
dbo.ExceSQL("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv[0]["F_MonitorIndex"]));
}
else
{
//×Ô¼ºÊÇ·ñ±»¹ØÁª,Ïȸ´Î»×Ô¼º£¬ÔÙ¸´Î»Ö÷ÈÎÎñ
dv3 = dbo.ExceSQL("select F_DeviceIndex,F_MonitorIndex from T_Monitor_Task where F_Associate ='" + mindex + "'").Tables[0].DefaultView;
if (dv3.Count > 0)
{ //Ïȸ´Î»×Ô¼º
DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
SendDeviceReset(out Errtext, DeviceIdx, resetOrder);
SendDeviceReset(out Errtext, DeviceIdx, 2);
dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
dbo.ExceSQL("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + mindex);
//ÔÙ¸´Î»Ö÷ÈÎÎñ
DeviceIdx = Convert.ToInt32(dv3[0]["F_DeviceIndex"]);
SendDeviceReset(out Errtext, DeviceIdx, resetOrder);
SendDeviceReset(out Errtext, DeviceIdx, 2);
dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv3[0]["F_DeviceIndex"]));
dbo.ExceSQL("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + Convert.ToInt32(dv3[0]["F_MonitorIndex"]));
}
else
{
//ÎÞ¹ØÁªÈÎÎñ£¬Ö»¸´Î»×Ô¼º
DeviceIdx = Convert.ToInt32(dv[0]["F_DeviceIndex"]);
SendDeviceReset(out Errtext, DeviceIdx, resetOrder);
SendDeviceReset(out Errtext, DeviceIdx, 2);
dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + Convert.ToInt32(dv[0]["F_DeviceIndex"]));
dbo.ExceSQL("update T_Monitor_Task set F_SendCount=0,F_Status=0 where F_MonitorIndex=" + mindex);
}
}
//¸ø¹ÜÀíFERRORCODEÇå¿Õ
if (mankind == 1)
{
DBFactory.DBOperator dboMan = CStaticClass.dboM;//20130510
dboMan.ExceSQL("UPDATE IO_CONTROL SET ERROR_TEXT ='' WHERE CONTROL_ID=" + fid + "");
}
dbo.ExceSQL("UPDATE T_Manage_Task SET FERRORCODE ='' WHERE FID=" + fid + " and F_ManageTaskKindIndex=" + mankind + "");
CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
OnDataChange("TASKRESTORE", cea);
#endregion
}
}
Errtext = string.Empty;
return true;
}
catch (Exception ex)
{
Errtext = ex.StackTrace + ex.Message;
return false;
}
finally
{
dv.Dispose();
dv1.Dispose();
dv2.Dispose();
dv3.Dispose();
}
}
/// <summary>
/// ·¢ËÍÉ豸ÖÃλÇåÁã
/// </summary>
/// <param name="errtext"></param>
/// <param name="deviceIndex"></param>
/// <returns></returns>
public static bool SendDeviceReset(out string errtext, int deviceIndex, int ResetOrder)
{
errtext = string.Empty;
try
{
sdo = CommLayerFactory.CommModeCreate.CreateSendDeviceOrder(deviceIndex);
int deviceKind = ccf.GetDeviceKindIdx(deviceIndex); //GetDeviceKindIndex(out errtext, deviceIndex);
if ((deviceKind == 1) || (deviceKind == 6))
{
sdo.SendDeviceOrder(ResetOrder, 0, 0, deviceIndex, 0, 0, 0, 0, 0, 0);
}
else
{
sdo.SendDeviceOrder(ResetOrder, 0, 0, deviceIndex, 0);
}
//_device = Model.CGetInfo.GetDeviceInfo(deviceIndex);
//_device.SendMessage = null;
//Model.CGetInfo.SetDeviceInfo(_device);
Thread.Sleep(500);//20131121richard
return true;
}
catch (Exception ex)
{
errtext = ex.StackTrace + ex.Message;
return false;
}
}
}
}