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.

2301 lines
141 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.ServiceModel;
using System.Security.Cryptography;
namespace WcfControlMonitorLib
{
/// <summary>
/// Creator:Richard.liu
/// »ñÈ¡µ÷¶ÈÈÎÎñ
/// </summary>
public static class CObtainTask
{
public static event CUpdateDBEventHandler UpdateDB;
public static void OnUpdateDB(CUpdateDBChangeEventArgs e)
{
if (UpdateDB != null)
{
UpdateDB(null, e);
}
}
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 object lockThis = new object();
static Model.MDevice devinfo;
static StringBuilder sbs = new StringBuilder();
static StringBuilder temp = new StringBuilder();
static string stacklane = "12001,12007,12014,12020,12027,12033,12040,12046,12053,12060,12069,12076,12085,12092,12101,12202,12204,12206,12208,12210,12212,12240,12247,12256,12263,12272,12279,12288,12295,12304,12311,12550,12720,24101,24108,24109,24110,24102,24111,24103,24104,24112,24105,24113,24106,24114,24107";
public static HashSet<string> hashSet = new HashSet<string>();//½â¾öίÍлýѹÎÊÌâ20240726±ßÖÇ
private static void BeginListenObtainTask()
{//20091107
while (!exitThread)
{
try
{
lock (lockThis)
{
GetManagerTask();
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
Thread.Sleep(1000);
}
}
}
public static void EndListenObtainTask()
{//20091107
exitThread = true;
if (mythread != null)
{
dbo.Close();
dboM.Close();
mythread.Abort();
mythread = null;
}
}
public static void StartListenObtainTask()
{
exitThread = false;
mythread = new Thread(new ThreadStart(BeginListenObtainTask));
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 = new DBOperator();// CStaticClass.dbo;
static DBOperator dboM = CStaticClass.dboM;//20130510
/// <summary>
/// »ñµÃµ÷¶ÈÈÎÎñ
/// </summary>
public static int GetManagerTask()
{
lock (lockThis)
{
//ÊÇ·ñ¿¼ÂÇͬʱ¶ÁÈ¡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();
DataView dvCopy = new DataView();
object obj = null;
#region //ÊÜÁ÷Á¿ÏÞÖÆµÄ³ö¿âÈÎÎñ£¬±äÁ¿³õʼ»¯20151120
StringBuilder startWarehouse = new StringBuilder("");
StringBuilder startcell = new StringBuilder("");
StringBuilder endcell = new StringBuilder("");
StringBuilder notin = new StringBuilder("");
#endregion
try
{
int RecCount = 0;
//string tmpdt0 = DateTime.Now.ToString("u") + DateTime.Now.Millisecond.ToString();
#region ÊÜÁ÷Á¿ÏÞÖÆµÄ³ö¿âÈÎÎñÓÅÏÈ»ñÈ¡
//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(" and END_DEVICE_CODE not in ('").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 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"]);
// }
// #region Ôö¼ÓÖÕµãÉ豸Óлõ»òÕß²»¿ÕÏеļì²â
// int[] states = CStaticClass.GetDeviceState(Convert.ToInt32(dvc[i]["F_DeviceIndex"]));
// int state = 0;
// if (states != null)
// {
// state = states[1];
// }
// if (CStaticClass.GetDevicePhotoelectric(dvc[i]["F_DeviceIndex"].ToString() + ".0") == 1 || state != 0)
// {
// leftTask--;
// }
// #endregion
// #region ÆðµãÊÇվ̨µÄ¿ØÖÆÁ÷Á¿µ¥¶À»ñÈ¡ÈÎÎñ
// if (leftTask > 0)
// {
// sbs.Clear();
// sbs.Append("select CONTROL_ID from IO_CONTROL where 1=1 ");
// sbs.Append(" and END_DEVICE_CODE='").Append(dvc[i]["F_DeviceIndex"]).Append("'");
// sbs.Append(" and CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKWAIT.ToString());
// //sbs.Append(" and (START_DEVICE_CODE>='12001' and START_DEVICE_CODE<='42202') ");
// sbs.Append(" and (START_DEVICE_CODE not like '%-%') ");
// sbs.Append(" order by CONTROL_TASK_LEVEL desc,CONTROL_BATCH asc,CONTROL_BEGIN_TIME asc,CONTROL_ID asc ");
// dvIOC = dboM.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
// if (dvIOC.Count > 0)
// {
// ObtainDoubleForkTask(dvIOC[0]["CONTROL_ID"], "0");
// leftTask = leftTask - 1;
// }
// }
// #endregion
// if (leftTask > 0)
// {
// #region µ½´ËÖÕµãµÄÈÎÎñ°´ÕÕÏïµÀµÈ´ýÖ´ÐкÍÖ´ÐÐÖÐÈÎÎñÊýÓÉСµ½´óÒÀ´Î³ö²æÊýÁ¿µÄÈÎÎñ
// dvnew = dbo.ExceSQL(string.Format("SELECT F_StartDevice,(SELECT COUNT(FID) FROM T_Manage_Task where FSTARTDEVICE=F_StartDevice) as aaa FROM T_Base_Route where F_EndDevice={0} and F_StartDevice = (select f_deviceindex from T_BASE_DEVICE where f_devicekindindex=10 and f_deviceindex=F_StartDevice) order by aaa asc,F_StartDevice", Convert.ToInt32(dvc[i]["F_DeviceIndex"]))).Tables[0].DefaultView;
// for (int xd = 0; xd < dvnew.Count; xd++)
// {
// //string tmpdt1 = DateTime.Now.ToString("u") + DateTime.Now.Millisecond.ToString();
// startcell.Clear(); endcell.Clear(); startWarehouse.Clear();
// dv = dbo.ExceSQL(string.Format("SELECT F_STARTCELL,F_ENDCELL,F_WAREHOUSE from T_BASE_LANEINFO where F_LANEDEVICEINDEX={0} ", dvnew[xd]["F_StartDevice"])).Tables[0].DefaultView;
// if (dv.Count > 0)
// {
// startcell.Append(dv[0]["F_STARTCELL"].ToString());
// startWarehouse.Append(dv[0]["F_WAREHOUSE"].ToString());
// endcell.Append(dv[0]["F_ENDCELL"].ToString());
// }
// else
// {
// startcell.Append("-");
// startWarehouse.Append("1");
// 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,CONTROL_TASK_TYPE,START_DEVICE_CODE,START_WAREHOUSE_CODE from IO_CONTROL where ");
// sbs.Append(" CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKWAIT.ToString());
// sbs.Append(" and START_WAREHOUSE_CODE='").Append(startWarehouse).Append("' ");
// 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_BATCH asc,CONTROL_BEGIN_TIME asc,CONTROL_ID asc OFFSET 0 ROWS FETCH NEXT ").Append(forkcount).Append(" ROWS ONLY");
// }
// else
// {
// sbs.Append("select top ").Append(forkcount).Append(" CONTROL_ID,CONTROL_TASK_TYPE,START_DEVICE_CODE,START_WAREHOUSE_CODE from IO_CONTROL where 1=1 ");
// sbs.Append(" and CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKWAIT.ToString());
// sbs.Append(" and START_WAREHOUSE_CODE='").Append(startWarehouse).Append("' ");
// 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_BATCH asc,CONTROL_BEGIN_TIME asc,CONTROL_ID asc ");
// }
// dvIOC = dboM.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
// //string tmpdt2 = DateTime.Now.ToString("u") + DateTime.Now.Millisecond.ToString();
// for (int inew = 0; inew < dvIOC.Count; inew++)
// {
// #region 20230815richard.liu¶«Ì¨¾§°ÄÁ¬Ðø³ö¿âÈÎÎñÔ¶»õλ³ö¿âʱ²éÕÒÊÇ·ñÓнü»õλµÄÈÎÎñ Èç¹ûÓÐÏÈ»ñÈ¡
// if (Convert.ToInt32(dvIOC[inew]["CONTROL_TASK_TYPE"]) == 2)
// {
// object slaneway = dbo.GetSingle(string.Format("select flaneway from ST_CELL where fcellcode='{0}' and FWAREHOUSE='{1}'", dvIOC[inew]["START_DEVICE_CODE"], dvIOC[inew]["START_WAREHOUSE_CODE"]));
// if (slaneway != null)
// {
// int wmsZ = Convert.ToInt32(Convert.ToString(dvIOC[inew]["START_DEVICE_CODE"]).Substring(0, 2));
// StringBuilder sql = new StringBuilder();
// sql.Append("select F_SENDZ from T_BASE_SENDROW WHERE F_WMSZ=").Append(wmsZ).Append(" and F_LANENO= ").Append(slaneway);
// object SENDZ = dbo.GetSingle(sql.ToString());//1,2,3,4
// if (SENDZ != null)
// {
// int tempZ = Convert.ToInt32(SENDZ);
// StringBuilder newcode =new StringBuilder("");
// if (tempZ== 4)
// {
// newcode.Append(string.Format("{0:D2}", wmsZ - 1) + Convert.ToString(dvIOC[inew]["START_DEVICE_CODE"]).Substring(2, 6));
// }
// else if (tempZ== 1)
// {
// if (Convert.ToInt32(dbo.GetSingle("select count(0) from T_BASE_SENDROW where F_LANENO=" + slaneway)) > 2)//Åж¨ÎªË«Éì
// {
// newcode.Append(string.Format("{0:D2}", wmsZ + 1) + Convert.ToString(dvIOC[inew]["START_DEVICE_CODE"]).Substring(2, 6));
// }
// }
// sbs.Remove(0, sbs.Length);
// sbs.Append("select * from IO_CONTROL where (CONTROL_STATUS= 0) and START_WAREHOUSE_CODE='").Append(dvIOC[inew]["START_WAREHOUSE_CODE"]).Append("' and START_DEVICE_CODE = '").Append(newcode).Append("'");
// dvCopy = dboM.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
// if (dvCopy.Count > 0)
// {
// ObtainDoubleForkTask(dvCopy[0]["CONTROL_ID"], "0");
// }
// }
// }
// }
// #endregion
// ObtainDoubleForkTask(dvIOC[inew]["CONTROL_ID"], "0");
// }
// leftTask = leftTask - dvIOC.Count;
// if (leftTask <= 0) break;
// }
// #endregion
// }
//}
////string tmpdt3 = DateTime.Now.ToString("u") + DateTime.Now.Millisecond.ToString();
//if (dvc.Count > 0)
//{
// notin.Append(")");
//}
#endregion
#region ѯ×é¼þ³µ¼ä»º´æ²¹ÈÎÎñµ½²ðÅÌ»úÈÎÎñ
//Ìí¼ÓÂÖѯ×é¼þ³µ¼ä»º´æ²¹ÈÎÎñµ½²ðÅÌ»úÈÎÎñ
//if (1 == 0)//¹¦ÄÜÆÁ±Î×é¼þ³µ¼ä»º´æ
{
DataView dvbcT; DataView dvbcTT; DataView dvbcTTT;
dvbcT = dbo.ExceSQL(String.Format("select * from T_BASE_HORT where status = 0")).Tables[0].DefaultView;//ÓÐÐèÇó
for (int i = 0; i < dvbcT.Count; i++)
{
if (Convert.ToInt32(dvbcT[i]["have_flag"]) == 1)//Óлõ
{
StringBuilder barcodeT = new StringBuilder();
try
{
dvbcTTT = dbo.ExceSQL(String.Format("select * from T_Manage_Task where FSTARTDEVICE = {0} AND FSTATUS = 0", Convert.ToInt32(dvbcT[i]["f_device_index"]))).Tables[0].DefaultView;
if (dvbcTTT.Count <= 0)
{
dvbcTT = dbo.ExceSQL(String.Format("select * from T_Manage_Task where FENDDEVICE = {1}", Convert.ToInt32(dvbcT[i]["f_device_index"]), Convert.ToInt32(dvbcT[i]["order_n"]))).Tables[0].DefaultView;
if (dvbcTT.Count <= 0)
{
int tempFid1 = ccf.GetTempManageIdx();
barcodeT.Clear();
barcodeT.Append(tempFid1.ToString());
object[] obt = new object[18] { tempFid1, 2, barcodeT.ToString(), 1, 4, 1, 1, ccf.GetWarehouseIndex(), ccf.GetWarehouseIndex(), "-", Convert.ToInt32(dvbcT[i]["f_device_index"]), Convert.ToInt32(dvbcT[i]["order_n"]), "-", 0, DateTime.Now.ToString("u"), 0, Model.CGeneralFunction.TASKABEND, 0 };
dbo.ExceSQL(string.Format("INSERT INTO T_Manage_Task(FID, F_ManageTaskKindIndex,FPALLETBARCODE,FMANAGETASKTYPE,FCONTROLTASKTYPE, FTASKLEVEL, FISRETURN,FSTARTWAREHOUSE,FENDWAREHOUSE, FSTARTCELL, FSTARTDEVICE, FENDDEVICE, FENDCELL, FSTATUS, FBEGTIME, FIntoStepOK,FExceptionNO,FLOGIC_AREA)VALUES({0},{1},'{2}',{3},{4},{5},{6},'{7}','{8}','{9}',{10},{11},'{12}',{13},'{14}','{15}',{16},{17})", obt));
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "×é¼þ³µ¼äÉêÇë³ö¿âÍÐÅ̶âÓлº´æÖ±½ÓÉú³Éվ̨¼äÒÆ¿âÈÎÎñ", Convert.ToString(dvbcT[i]["f_device_index"]), Convert.ToInt32(dvbcT[i]["order_n"]).ToString());
}
//¸üÐÂÎÞÐèÇó
dbo.ExecuteSql(string.Format("UPDATE T_BASE_HORT SET status =1 WHERE (order_n = {0}) ", Convert.ToInt32(dvbcT[i]["order_n"])));
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "×é¼þ³µ¼äÉêÇë³ö¿âÍÐÅ̶â¸üÐÂÉêÇë״̬Ϊ1", Convert.ToString(dvbcT[i]["order_n"]), Convert.ToString(dvbcT[i]["f_device_index"]));
break;
}
else
{
}
}
catch (Exception ex)
{
RefreshMonitorEventArgs rmea = new RefreshMonitorEventArgs("tsStatus", "SControlMonitor.Ö´ÐÐ×é¼þ³µ¼ä²¹¿ÕÍÐÅ̶âʱ" + ex.StackTrace + ex.Message);
OnRefreshMonitor(rmea);
continue;
}
CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "Éú³É×é¼þ³µ¼äÍÐÅ̶âÈÎÎñÒÆ¿âÈÎÎñ", Convert.ToString(dvbcT[i]["f_device_index"]), Convert.ToInt32(dvbcT[i]["order_n"]).ToString());
}
}
}
#endregion
#region »ñÈ¡Á÷Á¿±í¿ØÖÆÖ®ÍâµÄÈÎÎñ
sbs.Remove(0, sbs.Length);//»ñÈ¡Á÷Á¿±í¿ØÖÆÖ®ÍâµÄÈÎÎñ
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(")) ").Append(" ").Append(notin);
sbs.Append(" order by CONTROL_TASK_LEVEL desc,CONTROL_BATCH asc,CONTROL_BEGIN_TIME asc,CONTROL_ID asc");//20151120
dsIOC = dboM.ExceSQL(sbs.ToString());
dvIOC = dsIOC.Tables[0].DefaultView;
if (dvIOC.Count > 0)
{
string FENDCELL = ""; char[] cc = new char[1] { '-' };
int FENDDEVICE = 0;
int temponecount12202 = 0; int temponecount12001 = 0; int temponecount12007 = 0; int temponecount12014 = 0; int temponecount12020 = 0; int temponecount12027 = 0; int temponecount12033 = 0; int temponecount12040 = 0; int temponecount12046 = 0; int temponecount12053 = 0;
int temponecount12060 = 0; int temponecount12069 = 0; int temponecount12076 = 0; int temponecount12085 = 0; int temponecount12092 = 0; int temponecount12101 = 0; int temponecount12204 = 0; int temponecount12206 = 0; int temponecount12208 = 0; int temponecount12210 = 0;
int temponecount12212 = 0; int temponecount12240 = 0; int temponecount12247 = 0; int temponecount12256 = 0; int temponecount12263 = 0; int temponecount12272 = 0; int temponecount12279 = 0; int temponecount12288 = 0; int temponecount12295 = 0; int temponecount12304 = 0;
int temponecount12311 = 0; int temponecount12550 = 0; int temponecount12720 = 0; int temponecount24101 = 0; int temponecount24108 = 0; int temponecount24109 = 0; int temponecount24110 = 0; int temponecount24102 = 0; int temponecount24111 = 0; int temponecount24103 = 0;
int temponecount24104 = 0; int temponecount24112 = 0; int temponecount24105 = 0; int temponecount24113 = 0; int temponecount24106 = 0; int temponecount24114 = 0; int temponecount24115 = 0; int temponecount24107 = 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()))
{
bool Ifobtain = true;
#region Á÷Á¿¿ØÖÆ
if (Convert.ToInt32(dvIOC[i]["CONTROL_TASK_TYPE"]) == 2)
{
DataView dvsptaskcount = new DataView(); DataView dvOutCount1 = new DataView();
dvsptaskcount = dbo.ExceSQL(string.Format("select f_deviceindex,f_maxcount from T_BASE_TASKCOUNT where f_deviceindex = {0}", Convert.ToInt32(dvIOC[i]["end_device_code"]))).Tables[0].DefaultView;
int tempcount = 1000;
if (dvsptaskcount.Count > 0)
{
if (Convert.ToInt32(dvIOC[i]["end_device_code"]) == Convert.ToInt32(dvsptaskcount[0]["f_deviceindex"]))
{
Model.MDevice devinfoX = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(dvIOC[i]["end_device_code"]));
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FSTATUS FROM T_Manage_Task where FENDDEVICE = '").Append(Convert.ToInt32(dvIOC[i]["end_device_code"])).Append("'");
dvOutCount1 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
tempcount = 1000;
if (Convert.ToInt32(dvsptaskcount[0]["f_maxcount"]) < tempcount)
{
tempcount = Convert.ToInt32(dvsptaskcount[0]["f_maxcount"]);
}
if (stacklane.IndexOf(Convert.ToString(dvIOC[i]["end_device_code"])) >= 0)
{
switch (Convert.ToInt32(dvIOC[i]["end_device_code"]))
{
case 12202:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12202 >= tempcount)
{
Ifobtain = false;
}
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("'");
DataView dvOutCount12202 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (dvOutCount12202.Count > 0)
{
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FSTATUS FROM T_Manage_Task where FSTATUS = 0 and FENDDEVICE = 12202 and fstartdevice = ").Append(Convert.ToString(dvOutCount12202[0]["FLaneWay"]));
dvOutCount12202 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (dvOutCount12202.Count > 1)
{
Ifobtain = false;
}
}
break;
case 12001:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12001 >= tempcount)
{
Ifobtain = false;
}
break;
case 12007:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12007 >= tempcount)
{
Ifobtain = false;
}
break;
case 12014:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12014 >= tempcount)
{
Ifobtain = false;
}
break;
case 12020:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12020 >= tempcount)
{
Ifobtain = false;
}
break;
case 12027:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12027 >= tempcount)
{
Ifobtain = false;
}
break;
case 12033:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12033 >= tempcount)
{
Ifobtain = false;
}
break;
case 12040:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12040 >= tempcount)
{
Ifobtain = false;
}
break;
case 12046:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12046 >= tempcount)
{
Ifobtain = false;
}
break;
case 12053:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12053 >= tempcount)
{
Ifobtain = false;
}
break;
case 12060:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12060 >= tempcount)
{
Ifobtain = false;
}
break;
case 12069:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12069 >= tempcount)
{
Ifobtain = false;
}
break;
case 12076:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12076 >= tempcount)
{
Ifobtain = false;
}
break;
case 12085:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12085 >= tempcount)
{
Ifobtain = false;
}
break;
case 12092:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12092 >= tempcount)
{
Ifobtain = false;
}
break;
case 12101:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12101 >= tempcount)
{
Ifobtain = false;
}
break;
case 12204:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12204 >= tempcount)
{
Ifobtain = false;
}
break;
case 12206:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12206 >= tempcount)
{
Ifobtain = false;
}
break;
case 12208:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12208 >= tempcount)
{
Ifobtain = false;
}
break;
case 12210:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12210 >= tempcount)
{
Ifobtain = false;
}
break;
case 12212:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12212 >= tempcount)
{
Ifobtain = false;
}
break;
case 12240:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12240 >= tempcount)
{
Ifobtain = false;
}
break;
case 12247:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12247 >= tempcount)
{
Ifobtain = false;
}
break;
case 12256:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12256 >= tempcount)
{
Ifobtain = false;
}
break;
case 12263:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12263 >= tempcount)
{
Ifobtain = false;
}
break;
case 12272:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12272 >= tempcount)
{
Ifobtain = false;
}
break;
case 12279:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12279 >= tempcount)
{
Ifobtain = false;
}
break;
case 12288:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12288 >= tempcount)
{
Ifobtain = false;
}
break;
case 12295:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12295 >= tempcount)
{
Ifobtain = false;
}
break;
case 12304:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12304 >= tempcount)
{
Ifobtain = false;
}
break;
case 12311:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12311 >= tempcount)
{
Ifobtain = false;
}
break;
case 12550:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12550 >= tempcount)
{
Ifobtain = false;
}
break;
case 12720:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount12720 >= tempcount)
{
Ifobtain = false;
}
break;
case 24101:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24101 >= tempcount)
{
Ifobtain = false;
}
break;
case 24108:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24108 >= tempcount)
{
Ifobtain = false;
}
break;
case 24109:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24109 >= tempcount)
{
Ifobtain = false;
}
break;
case 24110:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24110 >= tempcount)
{
Ifobtain = false;
}
break;
case 24102:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24102 >= tempcount)
{
Ifobtain = false;
}
break;
case 24111:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24111 >= tempcount)
{
Ifobtain = false;
}
break;
case 24103:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24103 >= tempcount)
{
Ifobtain = false;
}
break;
case 24104:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24104 >= tempcount)
{
Ifobtain = false;
}
break;
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24112 >= tempcount)
{
Ifobtain = false;
}
break;
case 24105:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24105 >= tempcount)
{
Ifobtain = false;
}
break;
case 24113:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24113 >= tempcount)
{
Ifobtain = false;
}
break;
case 24106:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24106 >= tempcount)
{
Ifobtain = false;
}
break;
case 24114:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24114 >= tempcount)
{
Ifobtain = false;
}
break;
case 24115:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24115 >= tempcount)
{
Ifobtain = false;
}
break;
case 24107:
if (devinfoX.SplitByte_0 + dvOutCount1.Count + temponecount24107 >= tempcount)
{
Ifobtain = false;
}
break;
}
}
}
}
}
DataView dvOutCount22128 = new DataView();
if (dvIOC[i]["END_DEVICE_CODE"].ToString() == "22128")
{
Model.MDevice devinfo22128;
devinfo22128 = Model.CGetInfo.GetDeviceInfo(22128);
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FSTATUS FROM T_Manage_Task where FENDDEVICE='").Append(22128).Append("'");
dvOutCount22128 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (devinfo22128.SplitByte_0 + dvOutCount22128.Count >= 1 && dvIOC[i]["END_DEVICE_CODE"].ToString() == "22128")
{
Ifobtain = false;
}
}
DataView dvOutCount22130 = new DataView();
if (dvIOC[i]["END_DEVICE_CODE"].ToString() == "22130")
{
Model.MDevice devinfo22130;
devinfo22130 = Model.CGetInfo.GetDeviceInfo(22130);
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FSTATUS FROM T_Manage_Task where FENDDEVICE='").Append(22130).Append("'");
dvOutCount22130 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (devinfo22130.SplitByte_0 + dvOutCount22128.Count >= 1 && dvIOC[i]["END_DEVICE_CODE"].ToString() == "22130")
{
Ifobtain = false;
}
}
DataView dvOutCount22155 = new DataView();
if (dvIOC[i]["END_DEVICE_CODE"].ToString() == "22155")
{
Model.MDevice devinfo22155;
devinfo22155 = Model.CGetInfo.GetDeviceInfo(22155);
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FSTATUS FROM T_Manage_Task where FENDDEVICE='").Append(22155).Append("'");
dvOutCount22155 = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (devinfo22155.SplitByte_0 + dvOutCount22155.Count >= 1 && dvIOC[i]["END_DEVICE_CODE"].ToString() == "22155")
{
Ifobtain = false;
}
}
#endregion
#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");
}
}
#region 20230815richard.liu¶«Ì¨¾§°ÄÁ¬Ðø³ö¿âÈÎÎñÔ¶»õλ³ö¿âʱ²éÕÒÊÇ·ñÓнü»õλµÄÈÎÎñ Èç¹ûÓÐÏÈ»ñÈ¡
if (Convert.ToInt32(dvIOC[i]["CONTROL_TASK_TYPE"]) == 2)
{
object slaneway = dbo.GetSingle(string.Format("select flaneway from ST_CELL where fcellcode='{0}' and FWAREHOUSE='{1}'", dvIOC[i]["START_DEVICE_CODE"], dvIOC[i]["START_WAREHOUSE_CODE"]));
if (slaneway != null)
{
int wmsZ = Convert.ToInt32(Convert.ToString(dvIOC[i]["START_DEVICE_CODE"]).Substring(0, 2));
StringBuilder sql = new StringBuilder();
sql.Append("select F_SENDZ from T_BASE_SENDROW WHERE F_WMSZ=").Append(wmsZ).Append(" and F_LANENO= ").Append(slaneway);
object SENDZ = dbo.GetSingle(sql.ToString());//1,2,3,4
if (SENDZ != null)
{
int tempZ = Convert.ToInt32(SENDZ);
StringBuilder newcode = new StringBuilder("");
if (tempZ == 4)
{
newcode.Append(string.Format("{0:D2}", wmsZ - 1) + Convert.ToString(dvIOC[i]["START_DEVICE_CODE"]).Substring(2, 6));
}
else if (tempZ == 1)
{
if (Convert.ToInt32(dbo.GetSingle("select count(0) from T_BASE_SENDROW where F_LANENO=" + slaneway)) > 2)//Åж¨ÎªË«Éì
{
newcode.Append(string.Format("{0:D2}", wmsZ + 1) + Convert.ToString(dvIOC[i]["START_DEVICE_CODE"]).Substring(2, 6));
}
}
sbs.Remove(0, sbs.Length);
sbs.Append("select * from IO_CONTROL where (CONTROL_STATUS= 0) and START_WAREHOUSE_CODE='").Append(dvIOC[i]["START_WAREHOUSE_CODE"]).Append("' and START_DEVICE_CODE = '").Append(newcode).Append("'");
dvCopy = dboM.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (dvCopy.Count > 0)
{
ObtainDoubleForkTask(dvCopy[0]["CONTROL_ID"], "0");
if (stacklane.IndexOf(Convert.ToString(dvCopy[0]["end_device_code"])) >= 0)
{
switch (Convert.ToInt32(dvCopy[0]["end_device_code"]))
{
case 12202:
temponecount12202++;
break;
case 12001:
temponecount12001++;
break;
case 12007:
temponecount12007++;
break;
case 12014:
temponecount12014++;
break;
case 12020:
temponecount12020++;
break;
case 12027:
temponecount12027++;
break;
case 12033:
temponecount12033++;
break;
case 12040:
temponecount12040++;
break;
case 12046:
temponecount12046++;
break;
case 12053:
temponecount12053++;
break;
case 12060:
temponecount12060++;
break;
case 12069:
temponecount12069++;
break;
case 12076:
temponecount12076++;
break;
case 12085:
temponecount12085++;
break;
case 12092:
temponecount12092++;
break;
case 12101:
temponecount12101++;
break;
case 12204:
temponecount12204++;
break;
case 12206:
temponecount12206++;
break;
case 12208:
temponecount12208++;
break;
case 12210:
temponecount12210++;
break;
case 12212:
temponecount12212++;
break;
case 12240:
temponecount12240++;
break;
case 12247:
temponecount12247++;
break;
case 12256:
temponecount12256++;
break;
case 12263:
temponecount12263++;
break;
case 12272:
temponecount12272++;
break;
case 12279:
temponecount12279++;
break;
case 12288:
temponecount12288++;
break;
case 12295:
temponecount12295++;
break;
case 12304:
temponecount12304++;
break;
case 12311:
temponecount12311++;
break;
case 12550:
temponecount12550++;
break;
case 12720:
temponecount12720++;
break;
case 24101:
temponecount24101++;
break;
case 24108:
temponecount24108++;
break;
case 24109:
temponecount24109++;
break;
case 24110:
temponecount24110++;
break;
case 24102:
temponecount24102++;
break;
case 24111:
temponecount24111++;
break;
case 24103:
temponecount24103++;
break;
case 24104:
temponecount24104++;
break;
case 24112:
temponecount24112++;
break;
case 24105:
temponecount24105++;
break;
case 24113:
temponecount24113++;
break;
case 24106:
temponecount24106++;
break;
case 24114:
temponecount24114++;
break;
case 24115:
temponecount24115++;
break;
case 24107:
temponecount24107++;
break;
}
}
}
}
}
}
#endregion
ObtainDoubleForkTask(dvIOC[i]["CONTROL_ID"], "0");
if (Convert.ToInt32(dvIOC[i]["CONTROL_TASK_TYPE"]) == 2)
{
if (stacklane.IndexOf(Convert.ToString(dvIOC[i]["end_device_code"])) >= 0)
{
switch (Convert.ToInt32(dvIOC[i]["end_device_code"]))
{
case 12202:
temponecount12202++;
break;
case 12001:
temponecount12001++;
break;
case 12007:
temponecount12007++;
break;
case 12014:
temponecount12014++;
break;
case 12020:
temponecount12020++;
break;
case 12027:
temponecount12027++;
break;
case 12033:
temponecount12033++;
break;
case 12040:
temponecount12040++;
break;
case 12046:
temponecount12046++;
break;
case 12053:
temponecount12053++;
break;
case 12060:
temponecount12060++;
break;
case 12069:
temponecount12069++;
break;
case 12076:
temponecount12076++;
break;
case 12085:
temponecount12085++;
break;
case 12092:
temponecount12092++;
break;
case 12101:
temponecount12101++;
break;
case 12204:
temponecount12204++;
break;
case 12206:
temponecount12206++;
break;
case 12208:
temponecount12208++;
break;
case 12210:
temponecount12210++;
break;
case 12212:
temponecount12212++;
break;
case 12240:
temponecount12240++;
break;
case 12247:
temponecount12247++;
break;
case 12256:
temponecount12256++;
break;
case 12263:
temponecount12263++;
break;
case 12272:
temponecount12272++;
break;
case 12279:
temponecount12279++;
break;
case 12288:
temponecount12288++;
break;
case 12295:
temponecount12295++;
break;
case 12304:
temponecount12304++;
break;
case 12311:
temponecount12311++;
break;
case 12550:
temponecount12550++;
break;
case 12720:
temponecount12720++;
break;
case 24101:
temponecount24101++;
break;
case 24108:
temponecount24108++;
break;
case 24109:
temponecount24109++;
break;
case 24110:
temponecount24110++;
break;
case 24102:
temponecount24102++;
break;
case 24111:
temponecount24111++;
break;
case 24103:
temponecount24103++;
break;
case 24104:
temponecount24104++;
break;
case 24112:
temponecount24112++;
break;
case 24105:
temponecount24105++;
break;
case 24113:
temponecount24113++;
break;
case 24106:
temponecount24106++;
break;
case 24114:
temponecount24114++;
break;
case 24115:
temponecount24115++;
break;
case 24107:
temponecount24107++;
break;
}
}
}
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());
CUpdateDBChangeEventArgs e = new CUpdateDBChangeEventArgs(dbo, sbs);
OnUpdateDB(e);
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());
e = new CUpdateDBChangeEventArgs(dbo, sbs);
OnUpdateDB(e);
}
}
RecCount++;
}
}
#endregion
#region Ð޸ķ¾¶µÄ´ð¸´
#endregion
}
if (RecCount > 0)
{
//ÏÔʾµ÷¶ÈÈÎÎñ
CDataChangeEventArgs cea = new CDataChangeEventArgs(null, null);
OnDataChange("»ñÈ¡µ½¹ÜÀíÈÎÎñ", cea);
return RecCount;
}
else
{
//_CObtainTaskError = "ûÓлñµÃÈκε÷¶ÈÈÎÎñ£¡";
return 0;
}
}
else
{
//_CObtainTaskError = "¹ÜÀí³ÌÐòûÓÐÏ´ïеİáÔËÈÎÎñ£¡";
return 0;
}
#endregion
}
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();
}
}
}
public static int dealwithHash(string operate, string sql)//½â¾öίÍлýѹÎÊÌâ20240726±ßÖÇ
{
lock (lockThis)
{
int a = 0;
try
{
if (operate == "add")
{
hashSet.Add(sql);
a = 1;
}
if (operate == "remove")
{
hashSet.Remove(sql);
a = 1;
}
if (operate == "find")
{
if (hashSet.Contains(sql))
{
a = 1;
}
}
return a;
}
catch
{
return 0;
}
}
}
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_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_Task_Index_Auto_Task SET F_ManageTaskIndex =" ).Append( fid);
//dbo.ExceSQL(sql.ToString());
CUpdateDBChangeEventArgs e = new CUpdateDBChangeEventArgs(dbo, sql);
OnUpdateDB(e);
}
}
else
{
//20101124
sql.Append("INSERT INTO T_Base_Task_Index_Auto_Task (F_ManageTaskIndex)VALUES (" ).Append( fid ).Append( ")");
//dbo.ExceSQL(sql.ToString());
CUpdateDBChangeEventArgs e = new CUpdateDBChangeEventArgs(dbo, sql);
OnUpdateDB(e);
}
}
/// <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)
{
StringBuilder sbs = new StringBuilder();
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_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("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 = 2) 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(") ");
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 = 2) 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"]);
//DTJAÔö¼Ó³ö¿âµ½102³µ¼äÈÎÎñ
if (((dvIOC[i]["CONTROL_TASK_TYPE"].ToString() == "2") && (Convert.ToInt32(dvIOC[i]["END_DEVICE_CODE"])) > 24000) || (dvIOC[i]["CONTROL_TASK_TYPE"].ToString() == "3"))
{
FTASKLEVEL = 3;
}
else
{
FTASKLEVEL = 0;
}
#region ÑïÖݾ§°ÄЧÂÊÌí¼ÓÂß¼­¶©µ¥Åú´ÎºÅ
//sbs.Remove(0, sbs.Length);
//sbs.Append("SELECT HAVE_FLAG from T_BASE_HORT where F_DEVICE_INDEX= 22222");
//DataView dvTime = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
//int TImeLong = Convert.ToInt32(dvTime[0]["HAVE_FLAG"]);
//DateTime TimeTask = Convert.ToDateTime(dvIOC[i]["CONTROL_BEGIN_TIME"]);
//if ((DateTime.Now > TimeTask.AddMinutes(TImeLong)) && (Convert.ToInt32(dvIOC[i]["CONTROL_TASK_TYPE"]) == 2) && (FENDDEVICE != 14053))//Èç¹ûʱ¼äÒѾ­³¬³öÉèÖÃÖµ
//{
// sbs.Remove(0, sbs.Length);
// sbs.Append("update IO_CONTROL SET CONTROL_TASK_LEVEL = 5 , CONTROL_REMARK = 1 where LOGIC_AREA = ").Append(dvIOC[i]["LOGIC_AREA"]).Append(" and CONTROL_REMARK != 1");
// int UPS = dboM.ExecuteSql(sbs.ToString());
// if (UPS > 0)
// {
// sbs.Remove(0, sbs.Length);
// sbs.Append("update T_Manage_Task SET FTASKLEVEL = 5 where FLOGIC_AREA = ").Append(dvIOC[i]["LOGIC_AREA"]);
// dbo.ExecuteSql(sbs.ToString());
// sbs.Remove(0, sbs.Length);
// sbs.Append("update T_Monitor_Task SET F_MonitorTaskLevel = 5 where F_ChangeStackCell = ").Append(Convert.ToInt32(dvIOC[i]["LOGIC_AREA"]));
// dbo.ExecuteSql(sbs.ToString());
// FTASKLEVEL = 5;
// }
//}
#endregion
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);
}
}
}
}
//20230718richard.liu
string CELL_MODEL = "1";//ºãοâ´óС»õλ£º1С»õ룬2´ó»õλ
int BOXBOS = 0;//°æÐͱêÖ¾
int CONTROL_FLAG = 0;//´ò´ø·½Ê½
string CONTROL_BATCH = "-";//³ÉÆ··¢»õ×°³µ¶©µ¥»òÕßÅú´ÎºÅÓÉСµ½´ó˳Ðò»ñÈ¡
if (dvIOC[i]["CONTROL_TALL_LOW"] !=DBNull.Value)
{
CELL_MODEL =dvIOC[i]["CONTROL_TALL_LOW"].ToString();
}
if (dvIOC[i]["PALLET_LENGTH_TYPE"] != DBNull.Value)
{
BOXBOS = Convert.ToInt32(dvIOC[i]["PALLET_LENGTH_TYPE"].ToString());
}
if (dvIOC[i]["PALLET_STRAPPING_NUM"] != DBNull.Value)
{
CONTROL_FLAG = Convert.ToInt32(dvIOC[i]["PALLET_STRAPPING_NUM"]);
}
if (dvIOC[i]["CONTROL_BATCH"] != DBNull.Value)
{
CONTROL_BATCH = Convert.ToString(dvIOC[i]["CONTROL_BATCH"]);
}
int FSTATUS = 0;
#region ³õʼ»¯LOGIC_AREA
//LOGIC_AREA = FENDDEVICE.ToString();
if (dvIOC[i]["LOGIC_AREA"] != DBNull.Value)
{
if (Convert.ToInt32(dvIOC[i]["CONTROL_TASK_TYPE"]) == 2)
{
LOGIC_AREA = Convert.ToString(dvIOC[i]["LOGIC_AREA"]);
}
else
{
LOGIC_AREA = "0";
}
}
else
{
LOGIC_AREA = FENDDEVICE.ToString();
}
//ÑïÖݾ§°Ä´Ë×Ö¶ÎֵΪÂß¼­¶©µ¥Åú´ÎºÅ
#endregion
//20111020
//P¹¤×°°å,B±ê×¼,G¸ß»õλ,D´ó»õλ
//object[] ob = new object[34] { dvIOC[i]["CONTROL_ID"], 1, dvIOC[i]["MANAGE_ID"], dvIOC[i]["RELATIVE_CONTROL_ID"], dvIOC[i]["STOCK_BARCODE"].ToString(),
object[] ob = new object[34] { dvIOC[i]["CONTROL_ID"], 1, dvIOC[i]["MANAGE_ID"],-1, dvIOC[i]["STOCK_BARCODE"].ToString(),
dvIOC[i]["MANAGE_TASK_TYPE"], 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,CONTROL_BATCH,
LOGIC_AREA,FStartCol,FStartLayer,FEndCol,FEndLayer,FSTARTUCODE,FENDUCODE,BOXBOS,CONTROL_FLAG,CELL_MODEL};
sbs.Clear();
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,BOXBOS,CONTROL_FLAG,CELL_MODEL)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},'{31}','{32}','{33}')", ob));
//int rc = dbo.ExecuteSql(sbs.ToString());
StringBuilder[] sbArray=new StringBuilder[2];//ÊÔÊÔ»¹ÓÐÎ¥·´Ô¼ÊøÌõ¼þ²»
StringBuilder[] dbFactoryArray = new StringBuilder[2];
if (dealwithHash("find", sbs.ToString()) == 0)//½â¾öίÍлýѹÎÊÌâ20240726±ßÖÇ
{
sbArray[0] = new StringBuilder(sbs.ToString());
dbFactoryArray[0] = new StringBuilder("DBFactory");
dealwithHash("add", sbs.ToString());
}
else
{
return "0";
}
//sbArray[0] = new StringBuilder(sbs.ToString());
//dbFactoryArray[0]= new StringBuilder("DBFactory");
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.Clear();
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());//ÊÔÊÔ»¹ÓÐÎ¥·´Ô¼ÊøÌõ¼þ²»
if (dealwithHash("find", sbs.ToString()) == 0)//½â¾öίÍлýѹÎÊÌâ20240726±ßÖÇ
{
sbArray[1] = new StringBuilder(sbs.ToString());
dbFactoryArray[1] = new StringBuilder("ManDBFactory");
dealwithHash("add", sbs.ToString());
}
else
{
return "0";
}
//sbArray[1] = sbs;
//dbFactoryArray[1] = new StringBuilder("ManDBFactory");
}
CUpdateDBChangeEventArgs e = new CUpdateDBChangeEventArgs(dbFactoryArray, sbArray);
OnUpdateDB(e);
return UseAwayFork;
//}
}
catch (Exception ex)
{
CObtainTaskError = "ObtainDoubleForkTask,"+ex.StackTrace+ex.Message ;
return "0";
}
}
//add for qdty
static string ObtainNewTask(object RelativeControlID)
{
int i = 0;
int AutoManageIdx = 0;
DataView dvl;
string FSTARTCELL = ""; string FENDCELL = ""; char[] cc = new char[1] { '-' };
int FSTARTDEVICE = 0; int FENDDEVICE = 0; int FSTARTUCODE = 0; int FENDUCODE = 0;
int FControlTaskType = 0;
string LOGIC_AREA = string.Empty;
string flaneway = "-1";
int stackno = -1;
int FStartCol = 0, FStartLayer = 0, FEndCol = 0, FEndLayer = 0;
string slocation = "";
string dlocation = "";
try
{
//20101124
sbs.Remove(0, sbs.Length);//20101208
sbs.Append("select * from IDX_ASRS_RECEIVE where GROUPTASKID='").Append(RelativeControlID).Append("'");
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.FREMARK = '");
sbs.Append(RelativeControlID).Append("'");
dvl = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
//20101124
if (dvl.Count > 0)// ²åÈëµ÷¶ÈÈÎÎñмǼ
{
return "-";
}
int a = 0;
if (int.TryParse(dvIOC[i]["SLOCATION"].ToString(), out a) == true)
{
FSTARTDEVICE = Convert.ToInt32(dvIOC[i]["SLOCATION"]);
FSTARTCELL = "-";
}
else
{//»õλ±àÂë
//wms¸ø»Ø¸´µÄ»õλ±àÂëÀàËÆÎªR1B-01-02-01,ËùÒÔÐèҪȥµôÎÞÓõÄǰËĸö×Ö·û
if (dvIOC[i]["SLOCATION"].ToString().Length > 4)
{
slocation = dvIOC[i]["SLOCATION"].ToString().Substring(4);
}
//slocation = "01-02-01";
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FLaneWay,FUCODE,FUCONVEYOR,FStack FROM ST_CELL where FCELLCODE='").Append(slocation).Append("'");
dvl = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (dvl.Count > 0)
{
flaneway = dvl[0]["FLaneWay"].ToString();
stackno = Convert.ToInt32(dvl[0]["FStack"]);//20101028
FSTARTDEVICE = Convert.ToInt32(dvl[0]["FLaneWay"]);
FSTARTCELL = slocation;
FStartCol = Convert.ToInt32(slocation.Substring(3, 2));
FStartLayer = Convert.ToInt32(slocation.Substring(6, 2));
}
else
{
CObtainTaskError = string.Format("»ñÈ¡ÈÎÎñʱ£ºÃ»ÕÒµ½µ÷¶ÈÈÎÎñË÷Òý£º{0},µÄÆðµãλÖã¡", slocation);
sbs.Remove(0, sbs.Length);
sbs.Append("update IDX_ASRS_RECEIVE set TASKSTATUS=").Append(8).Append(",READTIME=sysdate")
.Append(" where TASKTYPE = 'PK' and (TASKSTATUS=0 or TASKSTATUS=3) and GROUPTASKID='").Append(dvIOC[i]["GROUPTASKID"]).Append("'");
dboM.ExecuteSql(sbs.ToString());
return "-";
}
}
if (int.TryParse(dvIOC[i]["DLOCATION"].ToString(), out a) == true)
{
FENDDEVICE = Convert.ToInt32(dvIOC[i]["DLOCATION"]);
FENDCELL = "-";
}
else
{//»õλ±àÂë
//wms¸ø»Ø¸´µÄ»õλ±àÂëÀàËÆÎªR1B-01-02-01,ËùÒÔÐèҪȥµôÎÞÓõÄǰËĸö×Ö·û
if (dvIOC[i]["DLOCATION"].ToString().Length > 4)
{
dlocation = dvIOC[i]["DLOCATION"].ToString().Substring(4);
}
sbs.Remove(0, sbs.Length);
sbs.Append("SELECT FLaneWay,FUCODE,FUCONVEYOR,FStack FROM ST_CELL where FCELLCODE='").Append(dlocation).Append("'");
dvl = dbo.ExceSQL(sbs.ToString()).Tables[0].DefaultView;
if (dvl.Count > 0)
{
flaneway = dvl[0]["FLaneWay"].ToString();
stackno = Convert.ToInt32(dvl[0]["FStack"]);
FENDDEVICE = Convert.ToInt32(dvl[0]["FLaneWay"]);
FENDCELL = dlocation;
FEndCol = Convert.ToInt32(dlocation.Substring(3, 2));
FEndLayer = Convert.ToInt32(dlocation.Substring(6, 2));
}
else
{
CObtainTaskError = string.Format("»ñÈ¡ÈÎÎñʱ£ºÃ»ÕÒµ½µ÷¶ÈÈÎÎñË÷Òý£º{0},µÄÖÕµãλÖã¡", dlocation);
sbs.Remove(0, sbs.Length);
sbs.Append("update IDX_ASRS_RECEIVE set TASKSTATUS=").Append(8).Append(",READTIME=sysdate")
.Append(" where TASKTYPE = 'PK' and (TASKSTATUS=0 or TASKSTATUS=3) and GROUPTASKID='").Append(dvIOC[i]["GROUPTASKID"]).Append("'");
dboM.ExecuteSql(sbs.ToString());
return "-";
}
//20111020
}
if ((FENDCELL == "-") && (FSTARTCELL == "-"))
{
FControlTaskType = 4;//Õ¾Ì¨ÒÆ¿â
}
else if ((FENDCELL == "-") && (FSTARTCELL != "-"))
{
FControlTaskType = 2;//³ö¿â
}
else if ((FENDCELL != "-") && (FSTARTCELL == "-"))
{
FControlTaskType = 1;//Èë¿â
}
else
{
FControlTaskType = 3;//ÒÆ¿â
}
//¼Ç¼²¢¸üÐÂ×î´óË÷ÒýFIDµ½±íT_Base_Task_Index_Auto_Task
AutoManageIdx = ccf.GetAndUpdateAutoManageIdx();
//RecordMaxManageTaskFID(Convert.ToInt32(dvIOC[i]["CONTROL_ID"]));
int FTASKLEVEL = 0;//¿ÕÍÐÅÌ×é³ö¿âµÄÓÅÏȼ¶Ó¦¸Ã×î´ó
FTASKLEVEL = dvIOC[i]["PRIORITY"] == DBNull.Value ? 0 : Convert.ToInt32(dvIOC[i]["PRIORITY"]);
int FSTATUS = 0;
#region ³õʼ»¯LOGIC_AREA
LOGIC_AREA = FENDDEVICE.ToString();
#endregion
string createtime = " ";
if (dvIOC[i]["CREATIONTIME"].ToString() != "")
{
createtime = Convert.ToDateTime(dvIOC[i]["CREATIONTIME"]).ToString("yyyy-MM-dd HH:mm:ss");
}
//ÑïÖݾ§°ÄÓÃÏÖÓÐ×ֶμǼÊÇ·ñµþÍкʹò´øÀàÐÍ 0ΪÎÞ¶¯×÷
int BOXBOS = 0;//µþÅ̱êÖ¾
int CONTROL_FLAG = 0;//´ò´ø·½Ê½
if (dvIOC[i]["CELL_MODEL"].ToString() != "")
{
BOXBOS = Convert.ToInt32(dvIOC[i]["CELL_MODEL"]);
}
if (dvIOC[i]["CELL_MODEL"].ToString() != "")
{
CONTROL_FLAG = Convert.ToInt32(dvIOC[i]["TASK_FLAG"]);
}
//20111020
//P¹¤×°°å,B±ê×¼,G¸ß»õλ,D´ó»õλ
object[] ob = new object[33] { AutoManageIdx, 1, dvIOC[i]["GROUPTASKSEQUENCE"], -1, dvIOC[i]["PALLETID"].ToString(),
dvIOC[i]["FULLFLAG"], FControlTaskType,FTASKLEVEL,0,1,FSTARTCELL,FSTARTDEVICE,
1 ,FENDCELL,FENDDEVICE,FSTATUS,createtime,
dvIOC[i]["COMPLETIONTIME"].ToString(),0,dvIOC[i]["GROUPTASKID"].ToString().Replace("'",""),flaneway,stackno,0,dvIOC[i]["PICKINGCARTONS"].ToString(),
LOGIC_AREA,FStartCol,FStartLayer,FEndCol,FEndLayer,FSTARTUCODE,FENDUCODE,BOXBOS,CONTROL_FLAG};
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,BOXBOS,CONTROL_FLAG)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},'{31}','{32}')", ob));
int rc = dbo.ExecuteSql(sbs.ToString());
CommonClassLib.CCarryConvert.WriteDarkCasket("CObtainTask", "»ñÈ¡ÈÎÎñ:", ",ÌõÂë[" + dvIOC[i]["PALLETID"].ToString() + "]", ",GROUPTASKID:" + dvIOC[i]["GROUPTASKID"].ToString());
ob = null;
//20111020
if (rc == 0) return "-";
else
{
if (dvIOC[i]["TASKSTATUS"].ToString() != Model.CGeneralFunction.TASKSINGLEFORKRUN.ToString())
{
sbs.Remove(0, sbs.Length);
sbs.Append("update IDX_ASRS_RECEIVE set TASKSTATUS=").Append(3).Append(",READTIME=sysdate")
.Append(" where TASKTYPE = 'PK' and (TASKSTATUS=0) and GROUPTASKID='").Append(dvIOC[i]["GROUPTASKID"]).Append("'");
dboM.ExecuteSql(sbs.ToString());
}
return "0";
}
}
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, 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();
}
}
}
}