328 lines
14 KiB
C#
328 lines
14 KiB
C#
using Microsoft.VisualBasic;
|
||
using RGD.DBUtility;
|
||
using System;
|
||
using System.Data;
|
||
|
||
namespace RGD.DataService
|
||
{
|
||
/// <summary>
|
||
/// 调度任务服务类
|
||
/// </summary>
|
||
public class ManageTaskService
|
||
{
|
||
#region 移库任务
|
||
|
||
public bool CreateMove(string TASK_NO, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, 0, "", false, false, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, int ManageTaskKindIndex, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, ManageTaskKindIndex, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, 0, "", false, false, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, int ManageTaskKindIndex, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, int PICKUP_LOCATION, string PICKUP_TYPE, bool IS_PICKUP, bool IS_LASTBOX, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, ManageTaskKindIndex, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, PICKUP_LOCATION, PICKUP_TYPE, IS_PICKUP, IS_LASTBOX, 1, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, int TASK_LEVEL, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, 1, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, 0, "", false, false, TASK_LEVEL, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, bool IS_LASTBOX, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, 0, "", false, IS_LASTBOX, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, int PICKUP_LOCATION, string PICKUP_TYPE, bool IS_PICKUP, bool IS_LASTBOX, out string sResult)
|
||
{
|
||
return CreateMove(TASK_NO, 1, CONTROL_TASK_TYPE, START_DEVICE, END_DEVICE, STOCK_BARCODE, PICKUP_LOCATION, PICKUP_TYPE, IS_PICKUP, IS_LASTBOX, 1, out sResult);
|
||
}
|
||
|
||
public bool CreateMove(string TASK_NO, int ManageTaskKindIndex, string CONTROL_TASK_TYPE, string START_DEVICE, string END_DEVICE, string STOCK_BARCODE, int PICKUP_LOCATION, string PICKUP_TYPE, bool IS_PICKUP, bool IS_LASTBOX, int TASK_LEVEL, out string sResult)
|
||
{
|
||
bool bResult = true;
|
||
sResult = "";
|
||
try
|
||
{
|
||
//等待执行的;已批复的申请改道的
|
||
string UseAwayFork = "-";
|
||
DataView dvt = DbHelperSQL.Query("select * from T_Manage_Task where FPALLETBARCODE = '" + STOCK_BARCODE + "'").Tables[0].DefaultView;//dzf20120822
|
||
if (dvt.Count > 0)
|
||
{
|
||
sResult = "此托盘任务已存在。";
|
||
return false;
|
||
}
|
||
|
||
DataView dvl;
|
||
|
||
object obj = null;
|
||
string FSTARTCELL = ""; string FENDCELL = ""; char[] cc = new char[1] { '-' };
|
||
int FSTARTDEVICE = 0; int FENDDEVICE = 0;
|
||
string flaneway = "-1";
|
||
int stackno = -1;
|
||
int FStartCol = 0, FStartLayer = 0, FEndCol = 0, FEndLayer = 0;
|
||
|
||
if (Information.IsNumeric(START_DEVICE) == false)
|
||
{
|
||
dvl = DbHelperSQL.Query("SELECT FLaneWay,FStack FROM ST_CELL where FCELLCODE='" + START_DEVICE + "'").Tables[0].DefaultView;
|
||
if (dvl.Count > 0)
|
||
{
|
||
flaneway = dvl[0]["FLaneWay"].ToString();
|
||
stackno = Convert.ToInt32(dvl[0]["FStack"]);//20101028
|
||
FStartCol = Convert.ToInt32(START_DEVICE.Substring(3, 2));
|
||
FStartLayer = Convert.ToInt32(START_DEVICE.Substring(6, 2));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (Information.IsNumeric(END_DEVICE) == false)//dzf理解 终点设备不是数字的情况
|
||
{
|
||
//20101028
|
||
dvl = DbHelperSQL.Query("SELECT FLaneWay,FStack FROM ST_CELL where FCELLCODE='" + END_DEVICE + "'").Tables[0].DefaultView;
|
||
if (dvl.Count > 0)
|
||
{
|
||
flaneway = dvl[0]["FLaneWay"].ToString();
|
||
stackno = Convert.ToInt32(dvl[0]["FStack"]);//20101028
|
||
FEndCol = Convert.ToInt32(END_DEVICE.Substring(3, 2));
|
||
FEndLayer = Convert.ToInt32(END_DEVICE.Substring(6, 2));
|
||
}
|
||
}
|
||
}
|
||
|
||
int AutoManageIdx = GetAutoManageIdx();
|
||
|
||
if (Information.IsNumeric(START_DEVICE) == true)
|
||
{
|
||
FSTARTDEVICE = Convert.ToInt32(START_DEVICE);
|
||
FSTARTCELL = "-";
|
||
}
|
||
else
|
||
{//货位编码
|
||
obj = DbHelperSQL.GetSingle("SELECT FLaneWay FROM ST_CELL where FCELLCODE='" + START_DEVICE + "'");
|
||
if (obj != null)
|
||
{
|
||
FSTARTDEVICE = Convert.ToInt32(obj);
|
||
}
|
||
else
|
||
{
|
||
sResult = "获取任务时:没找到调度任务索引:" + START_DEVICE + ",的起点位置!";
|
||
return false;
|
||
}
|
||
FSTARTCELL = START_DEVICE;
|
||
}
|
||
|
||
if (Information.IsNumeric(END_DEVICE) == true)//dzf理解 终点设备是数字的情况
|
||
{
|
||
FENDDEVICE = Convert.ToInt32(END_DEVICE);
|
||
FENDCELL = "-";
|
||
}
|
||
else if (END_DEVICE == "")
|
||
{ }
|
||
else //dzf理解 终点设备是货位的情况,获得终点设备号FENDDEVICE是巷道
|
||
{//货位编码
|
||
obj = DbHelperSQL.GetSingle("SELECT FLaneWay FROM ST_CELL where FCELLCODE='" + END_DEVICE + "'");
|
||
if (obj != null)
|
||
{
|
||
FENDDEVICE = Convert.ToInt32(obj);
|
||
}
|
||
else
|
||
{
|
||
sResult = "获取任务时:没找到调度任务索引:" + END_DEVICE + ",的终点位置!";
|
||
return false;
|
||
}
|
||
FENDCELL = END_DEVICE;
|
||
}
|
||
|
||
//20091014
|
||
int FTASKLEVEL = 0;//空托盘组出库的优先级应该最大
|
||
|
||
DataView dv = DbHelperSQL.Query("select F_EQUIP_TYPE from t_warehouse").Tables[0].DefaultView;
|
||
|
||
string sendout_type = "1";
|
||
|
||
if (dv[0][0].ToString() == "03")
|
||
{
|
||
sendout_type = "2";
|
||
}
|
||
|
||
string sql = "INSERT INTO T_Manage_Task" +
|
||
"(FID, F_ManageTaskKindIndex,FMANAGEID,F_RELATIVECONTORLID,FPALLETBARCODE,FCONTROLTASKTYPE, FTASKLEVEL, FISRETURN," +
|
||
"FSTARTWAREHOUSE, FSTARTCELL, FSTARTDEVICE,FENDWAREHOUSE,FENDCELL,FENDDEVICE, " +
|
||
"FSTATUS,FIntoStepOK,FREMARK,FLANEWAY,FSTACK,FUseAwayFork,SENDOUT_TYPE,FStartCol,FStartLayer,FEndCol,FEndLayer,PICKUP_LOCATION,PICKUP_TYPE) " +
|
||
"VALUES (" + AutoManageIdx + "," + ManageTaskKindIndex + ",'" + TASK_NO + "',0,'" + STOCK_BARCODE +
|
||
"','" + CONTROL_TASK_TYPE + "'," + FTASKLEVEL + ",'"
|
||
+ 0 + "','1','" + FSTARTCELL + "','"
|
||
+ FSTARTDEVICE + "','1','" + FENDCELL + "','" + FENDDEVICE + "',"
|
||
+ "'0','" + 0 + "',''," + flaneway + "," +
|
||
stackno + ",'" + UseAwayFork + "'," + sendout_type + "," + FStartCol + "," + FStartLayer + "," + FEndCol + "," + FEndLayer + "," + PICKUP_LOCATION + "," + (PICKUP_TYPE == "" ? "0" : PICKUP_TYPE) + ")";//20110318
|
||
|
||
int rc = DbHelperSQL.ExecuteSql(sql);
|
||
if (rc == 0)
|
||
{
|
||
sResult = "写入失败";
|
||
return false;
|
||
}
|
||
if (IS_LASTBOX)
|
||
{
|
||
dv = DbHelperSQL.Query("select F_Bindingdevice,F_Barcode from t_base_plc_ask where F_askkind=2").Tables[0].DefaultView;
|
||
for (int i = 0; i < dv.Count; i++)
|
||
{
|
||
dvt = DbHelperSQL.Query("select FID from t_manage_task where FENDDEVICE=" + dv[i]["F_bindingdevice"]).Tables[0].DefaultView;
|
||
if (dvt.Count != 0)
|
||
{
|
||
DbHelperSQL.ExecuteSql("update T_MANAGE_TASK set LAST_BOX_REMARK=" + AutoManageIdx + " where LAST_BOX_REMARK is null and FENDDEVICE = '" + dv[i]["F_bindingdevice"] + "'");
|
||
}
|
||
else if (dv[i]["f_Barcode"].ToString() != "")
|
||
{
|
||
//ISendDeviceOrder sdo = CommModeCreate.CreateSendDeviceOrder(int.Parse(dv[i]["F_bindingdevice"].ToString()));
|
||
//sdo.SendDeviceOrder(3, 0, 0, int.Parse(dv[i]["F_bindingdevice"].ToString()), 0);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
sResult = ex.Message;
|
||
bResult = false;
|
||
}
|
||
|
||
//if (!bResult)
|
||
//_log.Debug(sResult);
|
||
|
||
return bResult;
|
||
}
|
||
|
||
#endregion 移库任务
|
||
|
||
#region 基础查询
|
||
|
||
/// <summary>
|
||
/// 取得任务编号 最大9998
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private int GetAutoManageIdx()
|
||
{
|
||
DataSet ds;
|
||
try
|
||
{
|
||
int maxIdx = 1;
|
||
ds = DbHelperSQL.Query("SELECT F_ManageTaskIndex FROM T_Base_Manage_Task_Index_Auto_Task");
|
||
if (ds.Tables[0].DefaultView.Count > 0)
|
||
{
|
||
if ((Convert.ToInt32(ds.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1) >= 9998)
|
||
{
|
||
maxIdx = 1;
|
||
}
|
||
else
|
||
{
|
||
maxIdx = (Convert.ToInt32(ds.Tables[0].DefaultView[0]["F_ManageTaskIndex"]) + 1);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
maxIdx = 1;
|
||
}
|
||
|
||
DataView dv = DbHelperSQL.Query("select F_ManageTaskIndex from T_Base_Manage_Task_Index_Auto_Task").Tables[0].DefaultView;
|
||
if (dv.Count > 0)
|
||
{
|
||
if (maxIdx > Convert.ToInt32(dv[0]["F_ManageTaskIndex"]))
|
||
{
|
||
DbHelperSQL.ExecuteSql("UPDATE T_Base_Manage_Task_Index_Auto_Task SET F_ManageTaskIndex =" + maxIdx);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
DbHelperSQL.ExecuteSql("INSERT INTO T_Base_Manage_Task_Index_Auto_Task (F_ManageTaskIndex)VALUES (" + maxIdx + ")");
|
||
}
|
||
|
||
return maxIdx;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
ds = null;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取发送任务类型 6低箱 7高箱
|
||
/// </summary>
|
||
/// <param name="managerTaskIndex"></param>
|
||
/// <returns></returns>
|
||
public int GetTypeIndex(int managerTaskIndex) //dzf20130713供叠盘机区别高低箱子
|
||
{
|
||
DataView dv;
|
||
try
|
||
{
|
||
string sql = "select * from T_Manage_Task where T_Manage_Task.fid=" + managerTaskIndex;
|
||
|
||
dv = DbHelperSQL.Query(sql).Tables[0].DefaultView;
|
||
if (dv.Count > 0)
|
||
{
|
||
return Convert.ToInt32(dv[0]["SENDOUT_TYPE"]);
|
||
}
|
||
else
|
||
{
|
||
return 0;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
dv = null;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取任务的异常编号
|
||
/// </summary>
|
||
/// <param name="FID"></param>
|
||
/// <param name="ManTaskKind"></param>
|
||
/// <returns></returns>
|
||
public int GetExceptionNOFromManageTask(int FID, int ManTaskKind)
|
||
{
|
||
DataTable dt;
|
||
try
|
||
{
|
||
string sql = "SELECT FID, F_ManageTaskKindIndex, FExceptionNO FROM T_Manage_Task WHERE (FID = " + FID + ") AND (F_ManageTaskKindIndex = " + ManTaskKind + ") ";
|
||
dt = DbHelperSQL.Query(sql).Tables[0];
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
if (dt.Rows[0]["FExceptionNO"] == DBNull.Value)
|
||
{
|
||
return -1;
|
||
}
|
||
else
|
||
{
|
||
return Convert.ToInt32(dt.Rows[0]["FExceptionNO"]);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
return -1;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
throw ex;
|
||
}
|
||
finally
|
||
{
|
||
dt = null;
|
||
}
|
||
}
|
||
|
||
#endregion 基础查询
|
||
}
|
||
} |