Browse Source

堆垛机出库任务完成后输送线无货,提示添加

master
志铭 吕 2 months ago
parent
commit
cb8e675f16
  1. 70
      WcfControlMonitorLib/CCommonFunction.cs
  2. 66
      WcfControlMonitorLib/CGetState.cs
  3. 212
      WcfControlMonitorLib/SControlMonitor.cs

70
WcfControlMonitorLib/CCommonFunction.cs

@ -7,6 +7,8 @@ using CommLayerFactory;
using ICommLayer;
using CommonLib;
using System.Text.RegularExpressions;
using static System.Collections.Specialized.BitVector32;
namespace WcfControlMonitorLib
{
/// <summary>
@ -4364,5 +4366,73 @@ namespace WcfControlMonitorLib
}
}
/// <summary>
/// 根据任务号获取任务类型,和出库站台
/// </summary>
/// <param name="taskIndex">设备指令任务ID</param>
/// <returns></returns>
public int getTaskCommandFromMonitorTask(int taskIndex,string xyz,out int station) {
DataView dv = new DataView();
DataView dv1 = new DataView();
int taskCommand = 0;
station = 0;
try
{
sql.Remove(0, sql.Length);
sql.Append("select F_DeviceCommandIndex from T_Monitor_Task where F_MonitorIndex=").Append(taskIndex);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
taskCommand =Convert.ToInt32(dv[0]["F_DeviceCommandIndex"]);
}
sql.Remove(0, sql.Length);
sql.Append("select F_DeviceCommandIndex from T_Base_Lane_Gate where F_ZXY='").Append(xyz).Append("'");
dv1 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv1.Count > 0)
{
station = Convert.ToInt32(dv1[0]["F_LaneGateDeviceIndex"]);
}
return taskCommand;
}
catch (Exception ex)
{//20100108
throw ex;
}
finally
{//20100108
dv.Dispose();
dv1.Dispose();
}
}
public int getTaskTypeFromManageTask(long Fid) {
DataView dv = new DataView();
int taskType = 0;
try
{
sql.Remove(0, sql.Length);
sql.Append("select FCONTROLTASKTYPE from T_Manage_Task where FID=").Append(Fid);
dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
if (dv.Count > 0)
{
taskType = Convert.ToInt32(dv[0]["FCONTROLTASKTYPE"]);
}
return taskType;
}
catch (Exception ex)
{//20100108
throw ex;
}
finally
{//20100108
dv.Dispose();
}
}
}
}

66
WcfControlMonitorLib/CGetState.cs

@ -9,6 +9,8 @@ using ICommLayer;
using CommLayerFactory;
using System.Globalization;
using System.Net;
using System.Security.Cryptography;
namespace WcfControlMonitorLib
{
/// <summary>
@ -438,6 +440,7 @@ namespace WcfControlMonitorLib
if (TaskIdx == 0) return;
devinfo=Model.CGetInfo.GetDeviceInfo(DeviceIdx);
int devKind = ccf.GetDeviceKindIdx(DeviceIdx);
// int devKind = ccf.(DeviceIdx);
//20100305
int[] zxy = ccf.GetCoordinatesFromMonitorTask(TaskIdx);
StringBuilder zxystr = new StringBuilder();
@ -456,15 +459,25 @@ namespace WcfControlMonitorLib
return;
}
if (devKind == 4)//民航二所
{
int result = ccf.GetRepeatDeviceindex(DeviceIdx, TaskIdx);
if (result == -1)
if (devKind == 4)
#region 山东时代 堆垛机放货完成后需要校验有无托盘在出库口 lzm 20250415
if (devKind == 1) {
var command= ccf.getTaskCommandFromMonitorTask(TaskIdx, zxystr.ToString(),out int station);
var taskType = ccf.getTaskTypeFromManageTask(_fid);
if (command == 3&&taskType==2)//堆垛机送出指令,且调度任务是出库任务
{
return;
var deviceinfo= Model.CGetInfo.GetDeviceInfo(station);
if (deviceinfo.SplitByte_0 == 0) {
sql.Remove(0, sql.Length);
var msg = $"堆垛机放货完成后站台{DeviceIdx}无货异常,请人工介入检查情况";
sql.Append("update T_Monitor_Task set F_ErrorCode='"+msg+ "' and F_Status=99 where F_MonitorIndex = ").Append(TaskIdx);
//20100108
dbo.ExceSQL(sql.ToString());
return;
}
}
}
#endregion
if (GetManage_Kind(TaskIdx) == false) return;
int errrcode= ccf.GetExceptionNOFromManageTask(_fid,_mti );
int ControlType=ccf.GetFCONTROLTASKTYPEFromManageTask(_mti,_fid);
@ -518,8 +531,7 @@ namespace WcfControlMonitorLib
if (((Pri == 21) || (Pri == 12)) && (devKind == 1) && (ccf.GetFCONTROLTASKTYPEFromManageTask(_mti, _fid) == 2))//堆垛机出库优先并且携带入库任务
{
sql.Remove(0, sql.Length);
sql.Append("select * from T_Manage_Task where FTASKLEVEL=10 and FSTACK = " ).Append( DeviceIdx ).Append( " AND (FCONTROLTASKTYPE = 1) AND (FIntoStepOK = '1') ");
sql.Append("select * from T_Manage_Task where FTASKLEVEL=10 and FSTACK = " ).Append( DeviceIdx ).Append( " AND (FCONTROLTASKTYPE = 1) AND (FIntoStepOK = '1') ");
//20100108
dvman=dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView ;
if (dvman.Count <= 0)
@ -529,7 +541,6 @@ namespace WcfControlMonitorLib
//没有了,随便找个入库任务吧
sql.Remove(0, sql.Length);
sql.Append("SELECT FID, F_ManageTaskKindIndex, FCONTROLTASKTYPE FROM T_Manage_Task WHERE (FSTACK = ").Append(DeviceIdx).Append(") AND (FCONTROLTASKTYPE = 1) AND (FIntoStepOK = '1') order by FTASKLEVEL desc, F_ManageTaskKindIndex desc,FID asc");
dvman = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
for (int ii = 0; ii < dvman.Count; ii++)
{
@ -762,20 +773,20 @@ namespace WcfControlMonitorLib
break;
case "SQLServerDBFactory":
#region 20210513_上海晟碟,分拣线区域,如果箱在分拣线前一条输送线位置报完成,不对管理报完成
//#region 20210513_上海晟碟,分拣线区域,如果箱在分拣线前一条输送线位置报完成,不对管理报完成
if (DeviceIdx == 12012 || DeviceIdx == 12018 || DeviceIdx == 12025)
{
//if (DeviceIdx == 12012 || DeviceIdx == 12018 || DeviceIdx == 12025)
//{
}
//}
#endregion
else
{
//#endregion
//else
//{
sql.Remove(0, sql.Length);
sql.Append("update IO_Control set CONTROL_END_TIME =GETDATE(), CONTROL_STATUS=").Append(Model.CGeneralFunction.TASKFINISH).Append(" where CONTROL_ID=").Append(fid);
rowco = dboM.ExecuteSql(sql.ToString());
}
//}
break;
case "OleDBFactory":
@ -828,13 +839,13 @@ namespace WcfControlMonitorLib
#region 上海晟碟,充电任务运行报完成,设置充电锁 民航二所
if (ControlType == 6)
{
sql.Remove(0, sql.Length);
sql.Append("UPDATE T_Base_Device SET F_SwitchLock = ").Append(TaskIdx)
.Append(" WHERE F_DeviceIndex = ").Append(DeviceIdx);
dbo.ExecuteSql(sql.ToString());
}
//if (ControlType == 6)
//{
// sql.Remove(0, sql.Length);
// sql.Append("UPDATE T_Base_Device SET F_SwitchLock = ").Append(TaskIdx)
// .Append(" WHERE F_DeviceIndex = ").Append(DeviceIdx);
// dbo.ExecuteSql(sql.ToString());
//}
#endregion
@ -862,10 +873,7 @@ namespace WcfControlMonitorLib
sql.Append(string.Format("update T_Manage_Task set F_OutStatus =20 WHERE (FID = {0} and F_ManageTaskKindIndex={1} )", fid, mti));
dbo.ExecuteSql(sql.ToString());
}
}
}
if (ControlType == 5)
{
if ((devinfo.DeviceIndex == 14005|| devinfo.DeviceIndex == 14006) && ((order == 4)|| (order == 5)))//提升机 换层 提升机动置为10 民航二所
@ -2791,7 +2799,7 @@ namespace WcfControlMonitorLib
}
#endregion
#endregion
}
break;

212
WcfControlMonitorLib/SControlMonitor.cs

@ -5588,124 +5588,124 @@ namespace WcfControlMonitorLib
#region 上海晟碟,获取电池电量信息
#region 注释上海晟碟,获取电池电量信息
devinfo.Battery_Status =
devicestates[tempdb2addr + 11] + (devicestates[tempdb2addr + 10] << 8);
//devinfo.Battery_Status = devicestates[tempdb2addr + 13];
sql.Remove(0, sql.Length);
//devinfo.Battery_Status =
// devicestates[tempdb2addr + 11] + (devicestates[tempdb2addr + 10] << 8);
////devinfo.Battery_Status = devicestates[tempdb2addr + 13];
//sql.Remove(0, sql.Length);
////sql.Append("UPDATE SHUTTLE_POSITION SET F_BatteryStatus = ")
//// .Append(devinfo.Battery_Status).Append(", F_Postion = ").Append(yc).Append(" WHERE F_DeviceIndex = ")
//// .Append(devinfo.DeviceIndex);
//sql.Append("UPDATE SHUTTLE_POSITION SET F_BatteryStatus = ")
// .Append(devinfo.Battery_Status).Append(", F_Postion = ").Append(yc).Append(" WHERE F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex);
sql.Append("UPDATE SHUTTLE_POSITION SET F_BatteryStatus = ")
.Append(devinfo.Battery_Status).Append(" WHERE F_DeviceIndex = ")
.Append(devinfo.DeviceIndex).Append("and F_BatteryStatus<>").Append(devinfo.Battery_Status);
dbo.ExceSQL(sql.ToString());
// .Append(devinfo.Battery_Status).Append(" WHERE F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex).Append("and F_BatteryStatus<>").Append(devinfo.Battery_Status);
//dbo.ExceSQL(sql.ToString());
if (yc != 0)//上海晟碟, 层信息为0不更新表
{
sql.Remove(0, sql.Length);
sql.Append("UPDATE SHUTTLE_POSITION SET F_Postion = ")
.Append(yc).Append(" WHERE F_DeviceIndex = ")
.Append(devinfo.DeviceIndex).Append("and F_Postion<>").Append(yc);
dbo.ExceSQL(sql.ToString());
}
#region 20210329_上海晟碟,如果电池电量低于40,生成充电的手工任务 民航二所
if((devinfo.XCoor!=0 )&& (devinfo.YCoor != 0 ))//dzf
{
if (devinfo.RunState == 0)//空闲模式才能下达任务
{
if (devinfo.Battery_Status < 40)
{
//判断是否有该车的充电任务,是否正在充电,满足条件再生成充电任务
sql.Remove(0, sql.Length);
sql.Append(
"SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 6 AND FSTARTDEVICE = '")
.Append(devinfo.DeviceIndex.ToString()).Append("'");
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
{
}
else
{
sql.Remove(0, sql.Length);
sql.Append("SELECT * FROM T_Manage_Task WHERE 1<>1 and FSTACK = ")
.Append(devinfo.DeviceIndex.ToString());
if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
{
}
//生成充电任务
else//强制生成充电任务
{
//没有调度预约锁时候生成充电任务
sql.Remove(0, sql.Length);
sql.Append(
"SELECT F_ManTaskReserve FROM T_Base_Device WHERE F_DeviceIndex = ")
.Append(devinfo.DeviceIndex.ToString());
int FManTaskReserve = Convert.ToInt32(
dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView[0]
["F_ManTaskReserve"]);
if (FManTaskReserve == 0)
{
sql.Remove(0, sql.Length);
sql.Append(
"SELECT F_SwitchLock FROM T_Base_Device WHERE F_DeviceIndex = ")
.Append(devinfo.DeviceIndex.ToString());
int iSwitchLock = Convert.ToInt32(
dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView[0]
["F_SwitchLock"]);
if (iSwitchLock == 0)
{
string strCell = string.Format("{0:D2}-{1:D2}-{2:D2}", 2, 2, yc);
int hidx1 = ccf.GetTempManageIdx();
string dTime1 = DateTime.Now.ToString("u");
dTime1 = dTime1.Substring(0, dTime1.Length - 1);
string strBarcode = DateTime.Now.ToString("yyyyMMddhhmmss");
mysql.Remove(0, mysql.Length);
mysql.Append("INSERT INTO T_Manage_Task")
.Append(
"(FPALLETBARCODE,FID,F_ManageTaskKindIndex,F_RELATIVECONTORLID,FCONTROLTASKTYPE,FIntoStepOK,FSTARTDEVICE,FSTARTCELL,FENDDEVICE,FENDCELL,FBEGTIME,WORK_MODE,FUseAwayFork,FSTACK,FStartLayer,FEndLayer) values('")
.Append("Charge").Append(devinfo.DeviceIndex)
.Append("',")
.Append(hidx1)
.Append(",1,-1,6,0,").Append(devinfo.DeviceIndex).Append(",'").Append(strCell)
.Append("','")
.Append(18001).Append("','").Append(strCell)
.Append("','").Append(dTime1)
.Append("',0,0,11000, ").Append(yc).Append(",").Append(yc).Append(")");
dbo.ExecuteSql(mysql.ToString());
}
}
}
//if (yc != 0)//上海晟碟, 层信息为0不更新表
//{
// sql.Remove(0, sql.Length);
// sql.Append("UPDATE SHUTTLE_POSITION SET F_Postion = ")
// .Append(yc).Append(" WHERE F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex).Append("and F_Postion<>").Append(yc);
// dbo.ExceSQL(sql.ToString());
//}
//#region 20210329_上海晟碟,如果电池电量低于40,生成充电的手工任务 民航二所
}
//if((devinfo.XCoor!=0 )&& (devinfo.YCoor != 0 ))//dzf
//{
// if (devinfo.RunState == 0)//空闲模式才能下达任务
// {
// if (devinfo.Battery_Status < 40)
// {
// //判断是否有该车的充电任务,是否正在充电,满足条件再生成充电任务
// sql.Remove(0, sql.Length);
// sql.Append(
// "SELECT * FROM T_Manage_Task WHERE FCONTROLTASKTYPE = 6 AND FSTARTDEVICE = '")
// .Append(devinfo.DeviceIndex.ToString()).Append("'");
// if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
// {
// }
// else
// {
// sql.Remove(0, sql.Length);
// sql.Append("SELECT * FROM T_Manage_Task WHERE 1<>1 and FSTACK = ")
// .Append(devinfo.DeviceIndex.ToString());
// if (dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count > 0)
// {
// }
// //生成充电任务
// else//强制生成充电任务
// {
// //没有调度预约锁时候生成充电任务
// sql.Remove(0, sql.Length);
// sql.Append(
// "SELECT F_ManTaskReserve FROM T_Base_Device WHERE F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex.ToString());
// int FManTaskReserve = Convert.ToInt32(
// dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView[0]
// ["F_ManTaskReserve"]);
// if (FManTaskReserve == 0)
// {
// sql.Remove(0, sql.Length);
// sql.Append(
// "SELECT F_SwitchLock FROM T_Base_Device WHERE F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex.ToString());
// int iSwitchLock = Convert.ToInt32(
// dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView[0]
// ["F_SwitchLock"]);
// if (iSwitchLock == 0)
// {
// string strCell = string.Format("{0:D2}-{1:D2}-{2:D2}", 2, 2, yc);
// int hidx1 = ccf.GetTempManageIdx();
// string dTime1 = DateTime.Now.ToString("u");
// dTime1 = dTime1.Substring(0, dTime1.Length - 1);
// string strBarcode = DateTime.Now.ToString("yyyyMMddhhmmss");
// mysql.Remove(0, mysql.Length);
// mysql.Append("INSERT INTO T_Manage_Task")
// .Append(
// "(FPALLETBARCODE,FID,F_ManageTaskKindIndex,F_RELATIVECONTORLID,FCONTROLTASKTYPE,FIntoStepOK,FSTARTDEVICE,FSTARTCELL,FENDDEVICE,FENDCELL,FBEGTIME,WORK_MODE,FUseAwayFork,FSTACK,FStartLayer,FEndLayer) values('")
// .Append("Charge").Append(devinfo.DeviceIndex)
// .Append("',")
// .Append(hidx1)
// .Append(",1,-1,6,0,").Append(devinfo.DeviceIndex).Append(",'").Append(strCell)
// .Append("','")
// .Append(18001).Append("','").Append(strCell)
// .Append("','").Append(dTime1)
// .Append("',0,0,11000, ").Append(yc).Append(",").Append(yc).Append(")");
// dbo.ExecuteSql(mysql.ToString());
// }
// }
// }
// }
}
}
}
// }
// }
//}
if (devinfo.Battery_Status > 80)
{
sql.Remove(0, sql.Length);
sql.Append(
"UPDATE T_Base_Device SET F_SwitchLock = 0 WHERE F_SwitchLock <> 0 and F_DeviceIndex = ")
.Append(devinfo.DeviceIndex.ToString());
dbo.ExecuteSql(sql.ToString());
}
//if (devinfo.Battery_Status > 80)
//{
// sql.Remove(0, sql.Length);
// sql.Append(
// "UPDATE T_Base_Device SET F_SwitchLock = 0 WHERE F_SwitchLock <> 0 and F_DeviceIndex = ")
// .Append(devinfo.DeviceIndex.ToString());
// dbo.ExecuteSql(sql.ToString());
//}
#endregion
//#endregion
#endregion

Loading…
Cancel
Save