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.
1039 lines
60 KiB
1039 lines
60 KiB
1 month ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using System.Data;
|
||
|
using System.Collections;
|
||
|
using SiaSun.LMS.Model;
|
||
|
using SiaSun.LMS.Persistence;
|
||
|
using SiaSun.LMS.EnumMessage;
|
||
|
|
||
|
namespace SiaSun.LMS.Implement
|
||
|
{
|
||
|
public class ControlBase : ManageBase
|
||
|
{
|
||
|
|
||
|
public static string sendLedMes = string.Empty;
|
||
|
|
||
|
/// <summary>作业-动作
|
||
|
/// 作业-动作
|
||
|
/// </summary>
|
||
|
/// <param name="WAREHOUSE">库房编码</param>
|
||
|
/// <param name="sResult"></param>
|
||
|
/// <returns></returns>
|
||
|
public bool ControlCreate(int START_CELL_ID,int END_CELL_ID, out string sResult)
|
||
|
{
|
||
|
bool bResult = true;
|
||
|
|
||
|
SiaSun.LMS.Model.WH_CELL START_CELL = this._P_WH_CELL.GetModel(START_CELL_ID);
|
||
|
|
||
|
SiaSun.LMS.Model.WH_CELL END_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
||
|
|
||
|
if(START_CELL==null)
|
||
|
{
|
||
|
sResult = "未找到起始位置";
|
||
|
return false;
|
||
|
}
|
||
|
if (END_CELL == null)
|
||
|
{
|
||
|
END_CELL = this._P_WH_CELL.GetModel("31001");
|
||
|
}
|
||
|
sResult = string.Empty;
|
||
|
SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = new IO_CONTROL();
|
||
|
mIO_CONTROL.RELATIVE_CONTROL_ID = -1;
|
||
|
mIO_CONTROL.MANAGE_ID = 0;
|
||
|
mIO_CONTROL.STOCK_BARCODE = string.Empty;
|
||
|
//mIO_CONTROL.CELL_GROUP = mEND_CELL.CELL_GROUP;
|
||
|
mIO_CONTROL.CONTROL_TASK_LEVEL = "0";
|
||
|
mIO_CONTROL.PRE_CONTROL_STATUS = string.Empty;
|
||
|
mIO_CONTROL.CONTROL_TASK_TYPE = 4;
|
||
|
mIO_CONTROL.START_DEVICE_CODE = START_CELL.CELL_CODE;
|
||
|
mIO_CONTROL.END_DEVICE_CODE = END_CELL.CELL_CODE;
|
||
|
mIO_CONTROL.CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
|
||
|
|
||
|
//单叉状态25 双叉状态0 string.IsNullOrEmpty(mMANAGE_MAIN.MANAGE_FORK) || !mMANAGE_MAIN.MANAGE_FORK.Equals("1") ? 0 : 25;
|
||
|
mIO_CONTROL.CONTROL_STATUS = 0;
|
||
|
mIO_CONTROL.START_WAREHOUSE_CODE = "1";
|
||
|
mIO_CONTROL.END_WAREHOUSE_CODE = "1";
|
||
|
this._P_IO_CONTROL.Add(mIO_CONTROL);
|
||
|
return bResult;
|
||
|
}
|
||
|
|
||
|
/// <summary>作业-动作
|
||
|
/// 作业-动作
|
||
|
/// </summary>
|
||
|
/// <param name="WAREHOUSE">库房编码</param>
|
||
|
/// <param name="sResult"></param>
|
||
|
/// <returns></returns>
|
||
|
public void ControlTranslate(out string sResult)
|
||
|
{
|
||
|
sResult = string.Empty;
|
||
|
|
||
|
IList<SiaSun.LMS.Model.FLOW_PARA> lsFLOW_PARA = this._S_FlowService.FlowGetParameters("FLOW_CONTROL");
|
||
|
|
||
|
string[] aFLOW_PARA = new string[lsFLOW_PARA.Count];
|
||
|
|
||
|
SiaSun.LMS.Model.MANAGE_ACTION_EXCUTE mt = new SiaSun.LMS.Model.MANAGE_ACTION_EXCUTE();
|
||
|
|
||
|
DataTable dt = this.GetList(string.Format("SELECT * FROM V_FLOW_CONTROL_ACTION "));
|
||
|
|
||
|
foreach (DataRow dr in dt.Rows)
|
||
|
{
|
||
|
int i = 0;
|
||
|
|
||
|
foreach (SiaSun.LMS.Model.FLOW_PARA mFLOW_PARA in lsFLOW_PARA)
|
||
|
{
|
||
|
aFLOW_PARA[i] = dr[mFLOW_PARA.FLOW_PARA_CODE].ToString();
|
||
|
|
||
|
i++;
|
||
|
}
|
||
|
|
||
|
mt.MANAGE_ID = Convert.ToInt32(dr["MANAGE_ID"]);
|
||
|
|
||
|
mt.ACTION_EVENT = dr["FLOW_ACTION_EVENT"].ToString();
|
||
|
|
||
|
mt.ACTION_EVENT = string.Format(mt.ACTION_EVENT, aFLOW_PARA);
|
||
|
|
||
|
bool bResult = this._S_FlowService.ManageEventExecute(mt, out sResult);
|
||
|
|
||
|
SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModel(Convert.ToInt32(dr["CONTROL_ID"]));
|
||
|
|
||
|
if (!bResult)
|
||
|
{
|
||
|
|
||
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(mt.MANAGE_ID);
|
||
|
|
||
|
mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Error.ToString();
|
||
|
|
||
|
mMANAGE_MAIN.MANAGE_REMARK = sResult + string.Format("【控制任务状态-{0}】", mIO_CONTROL.CONTROL_STATUS.ToString());
|
||
|
|
||
|
this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
|
||
|
}
|
||
|
|
||
|
if (bResult && null != mIO_CONTROL)
|
||
|
{
|
||
|
mIO_CONTROL.PRE_CONTROL_STATUS = Convert.ToString(dr["CONTROL_STATUS"]);
|
||
|
|
||
|
this._P_IO_CONTROL.Update(mIO_CONTROL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
DataTable dt_control = this._P_IO_CONTROL.GetDataTable("select * from io_control where start_device_code in (12007,12011,12014,12017) and end_device_code in (12006,12010,12013,12016) and control_status=999");
|
||
|
foreach (DataRow dr in dt_control.Rows)
|
||
|
{
|
||
|
if (dr["end_device_code"].ToString() != "12006")
|
||
|
this._S_LEDService.AddLedLineTxt(dr["end_device_code"].ToString(), 0, "", out sResult);
|
||
|
else
|
||
|
this._S_LEDService.AddLedLineTxt("12007", 0, "", out sResult);
|
||
|
}
|
||
|
|
||
|
this.ExecuteNonQuery_ReturnVoid(" delete from io_control where manage_id = 0 and (control_status = 999 or control_status=990 or control_status=980 or control_status=900)");
|
||
|
}
|
||
|
|
||
|
/// <summary>任务-申请
|
||
|
/// 任务-申请
|
||
|
/// </summary>
|
||
|
/// <param name="CONTROL_APPLY_ID">申请编号</param>
|
||
|
/// <param name="MANAGE_ID">任务编号</param>
|
||
|
/// <param name="sResult">返回结果</param>
|
||
|
/// <returns></returns>
|
||
|
public bool ControlApplyTask(out string sResult)
|
||
|
{
|
||
|
bool bResult = true;
|
||
|
sResult = string.Empty;
|
||
|
string mesout = string.Empty;
|
||
|
IList <SiaSun.LMS.Model.IO_CONTROL_APPLY> lsIO_CONTROL_APPLY = this._P_IO_CONTROL_APPLY.GetList(0);
|
||
|
|
||
|
foreach (SiaSun.LMS.Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY in lsIO_CONTROL_APPLY)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
if (!string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02))
|
||
|
{
|
||
|
mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.TrimEnd('\0');
|
||
|
}
|
||
|
if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.STOCK_BARCODE))
|
||
|
{
|
||
|
mIO_CONTROL_APPLY.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd('\0');
|
||
|
}
|
||
|
//if (string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) && mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE.TrimEnd()!="2")
|
||
|
//{
|
||
|
// bResult = false;
|
||
|
// sResult = "未上报高度";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
// return bResult;
|
||
|
//}
|
||
|
SiaSun.LMS.Model.WH_CELL mSTART_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd());
|
||
|
#region 校验起始位置
|
||
|
if (null == mSTART_CELL)
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "申请入库未提供起始站台";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
#endregion
|
||
|
SiaSun.LMS.Model.IO_CONTROL_ROUTE mIO_CONTROL_ROUTE = this._P_IO_CONTROL_ROUTE.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd());
|
||
|
|
||
|
#region 校验检尺检测
|
||
|
//CONTROL_APPLY_PARA01 == 1表示母托,2表示子母托,3表示低货,4表示高货
|
||
|
//if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01))
|
||
|
//{
|
||
|
// if (!mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("1") && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("3"))
|
||
|
// {
|
||
|
// bResult = false;
|
||
|
// sResult = "超高";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = "超高";
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
// return bResult;
|
||
|
// }
|
||
|
// //单个母托盘直接下达到叠盘机
|
||
|
// else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("3"))
|
||
|
// {
|
||
|
// IO_CONTROL iO_CONTROL = new IO_CONTROL()
|
||
|
// {
|
||
|
// START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE,
|
||
|
// END_DEVICE_CODE = "31301",
|
||
|
// CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime(),
|
||
|
// STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE,
|
||
|
// START_WAREHOUSE_CODE = "1",
|
||
|
// END_WAREHOUSE_CODE = "1",
|
||
|
// CONTROL_TASK_TYPE = 4
|
||
|
// };
|
||
|
// this._P_IO_CONTROL.Add(iO_CONTROL);
|
||
|
// CreateApplyHis(mIO_CONTROL_APPLY);
|
||
|
// return true;
|
||
|
// }
|
||
|
//}
|
||
|
|
||
|
#endregion
|
||
|
#region SQL-删除历史记录
|
||
|
//每隔300天删除申请历史
|
||
|
this.ExecuteNonQuery_ReturnVoid(string.Format("DELETE FROM IO_CONTROL_APPLY_HIS where DATEDIFF(DD,CREATE_TIME,GETDATE())>='300'"));
|
||
|
|
||
|
//每隔300天删除接口日志
|
||
|
this.ExecuteNonQuery_ReturnVoid(string.Format(@"DELETE FROM INTERFACE_LOG where DATEDIFF(DD,INVOKE_TIME,GETDATE())>='100'"));
|
||
|
|
||
|
#endregion
|
||
|
switch (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE.TrimEnd())
|
||
|
{
|
||
|
#region 申请入库
|
||
|
case "1":
|
||
|
if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) &&
|
||
|
Convert.ToInt32(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) > 10)
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
//string sTemp = string.Empty;
|
||
|
//this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT, out sTemp);
|
||
|
break;
|
||
|
}
|
||
|
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.STOCK_BARCODE) ||
|
||
|
mIO_CONTROL_APPLY.STOCK_BARCODE.StartsWith("1") ||
|
||
|
mIO_CONTROL_APPLY.STOCK_BARCODE.StartsWith("\0"))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "托盘条码识别失败";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
if (!Common.RegexValid.IsValidate(mIO_CONTROL_APPLY.STOCK_BARCODE, Common.StringUtil.GetConfig("StockCodeCheck")))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "托盘条码格式错误";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd());
|
||
|
//如果CONTROL_APPLY_PARA02不为空,说明是自动组盘
|
||
|
STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
if (sTORAGE_MAIN == null &&
|
||
|
!string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02) &&
|
||
|
!mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.StartsWith("\0"))
|
||
|
{
|
||
|
string sGoodsBarcode = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.Trim();
|
||
|
string[] strArr = sGoodsBarcode.Split('-');
|
||
|
if (strArr.Length != 8 || !Common.RegexValid.GoodsBarcodeValidate(sGoodsBarcode))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = string.Format("物料条码格式错误 {0} {1}", sGoodsBarcode, sGoodsBarcode.Length);
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
AddLog(sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
WH_CELL wH_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE);
|
||
|
//GOODS_MAIN gOODS_MAIN = this._P_GOODS_MAIN.GetModel(32778);
|
||
|
//if (gOODS_MAIN == null)
|
||
|
//{
|
||
|
// bResult = false;
|
||
|
// sResult = "申请物料不存在";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
// AddLog(sResult);
|
||
|
// return bResult;
|
||
|
//}
|
||
|
Model.MANAGE_MAIN mANAGE_MAIN = new Model.MANAGE_MAIN();
|
||
|
Model.MANAGE_LIST mANAGE_LIST = new Model.MANAGE_LIST();
|
||
|
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<Model.MANAGE_LIST>();
|
||
|
|
||
|
mANAGE_MAIN.CELL_MODEL = "low";
|
||
|
//if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1")
|
||
|
//{
|
||
|
// mANAGE_MAIN.CELL_MODEL = "low";
|
||
|
//}
|
||
|
//else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "2")
|
||
|
|
||
|
//{
|
||
|
// mANAGE_MAIN.CELL_MODEL = "height";
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// bResult = false;
|
||
|
|
||
|
// sResult = "超高";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this.AddLog(sResult);
|
||
|
// return bResult;
|
||
|
//}
|
||
|
mANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
|
||
|
mANAGE_MAIN.MANAGE_TYPE_CODE = "ManageIn";
|
||
|
mANAGE_MAIN.MANAGE_OPERATOR = "管理系统";
|
||
|
mANAGE_MAIN.MANAGE_BEGIN_TIME = Common.StringUtil.GetDateTime();
|
||
|
mANAGE_MAIN.MANAGE_STATUS = "Waiting";
|
||
|
mANAGE_MAIN.START_CELL_ID = wH_CELL.CELL_ID;
|
||
|
mANAGE_MAIN.END_CELL_ID = 0;
|
||
|
mANAGE_LIST.GOODS_ID = 32779;
|
||
|
mANAGE_LIST.MANAGE_ID = 0;
|
||
|
mANAGE_LIST.MANAGE_LIST_QUANTITY = Convert.ToDecimal(strArr[6]);
|
||
|
mANAGE_LIST.PLAN_LIST_ID = 0;
|
||
|
mANAGE_LIST.GOODS_PROPERTY1 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02;
|
||
|
mANAGE_LIST.GOODS_PROPERTY2 = strArr[0] + strArr[1] + strArr[2] + strArr[3] + strArr[4];
|
||
|
mANAGE_LIST.GOODS_PROPERTY3 = strArr[4];
|
||
|
mANAGE_LIST.GOODS_PROPERTY5 = string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) ? "0" : mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.TrimStart('-');
|
||
|
mANAGE_LIST.GOODS_PROPERTY9 = "0";
|
||
|
mANAGE_LIST.STORAGE_LIST_ID = 0;
|
||
|
lsMANAGE_LIST.Add(mANAGE_LIST);
|
||
|
if (!new ManageIn().ManageCreate(mANAGE_MAIN, lsMANAGE_LIST, true, true, false, true, out sResult))
|
||
|
{
|
||
|
bResult = false;
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
string sTemp = string.Empty;
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, string.Format("{0} 入库成功", mIO_CONTROL_APPLY.STOCK_BARCODE), out sTemp);
|
||
|
}
|
||
|
//
|
||
|
else
|
||
|
{
|
||
|
DataTable dtMode = this.GetList(string.Format("SELECT * FROM SYS_ITEM_LIST WHERE ITEM_ID=96"));
|
||
|
string WorkMode = dtMode.Rows[0]["ITEM_LIST_CODE"].ToString();
|
||
|
|
||
|
//AGV成品入库
|
||
|
if (mIO_CONTROL_APPLY.DEVICE_CODE == "31001" && WorkMode=="111111111")
|
||
|
{
|
||
|
if (mMANAGE_MAIN != null)
|
||
|
{
|
||
|
sResult = "托盘已经存在任务";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
if (this._S_StorageService.StorageCheck(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(), Enum.AREA_TYPE.XuNiKu.ToString(), out sResult))
|
||
|
{
|
||
|
sResult = "托盘已经存在库存";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
|
||
|
//子母合托,找到站台上当前唯一存在的agv放货完成任务,将母托盘条码更新到managemain中,执行managedownload
|
||
|
string sql_manage = string.Format("select * from manage_main where start_cell_id={0} and (stock_barcode is null or stock_barcode='')", mSTART_CELL.CELL_ID);
|
||
|
DataTable dt_manage = this.GetList(sql_manage);
|
||
|
if (dt_manage.Rows.Count == 0)
|
||
|
{
|
||
|
sResult = "未找到放货完成的任务";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
if (dt_manage.Rows.Count > 1)
|
||
|
{
|
||
|
sResult = "找到多条放货完成的任务,无法自动匹配";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
|
||
|
bResult = new ManageIn().ManageDownLoadAGV(Convert.ToInt32(dt_manage.Rows[0]["MANAGE_ID"].ToString()), mIO_CONTROL_APPLY.STOCK_BARCODE, true, out sResult);
|
||
|
if (bResult)
|
||
|
{
|
||
|
sResult = string.Format("无管理任务/条码'{0}'/站台'{1}'/任务申请成功", mIO_CONTROL_APPLY.STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE);
|
||
|
this.AddLog(sResult);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (mMANAGE_MAIN != null)
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = string.Format("{0} 已存在任务", mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
//if (mMANAGE_MAIN.STOCK_BARCODE == mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd())
|
||
|
//{
|
||
|
// if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1")
|
||
|
// {
|
||
|
// mMANAGE_MAIN.CELL_MODEL = "low";
|
||
|
// }
|
||
|
// else
|
||
|
// {
|
||
|
// bResult = false;
|
||
|
|
||
|
// sResult = "超高";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
// return bResult;
|
||
|
// }
|
||
|
// this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
|
||
|
// bResult = this.ManageDownLoad(mMANAGE_MAIN.MANAGE_ID, mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd(), true, out sResult);
|
||
|
// if (bResult)
|
||
|
// {
|
||
|
// sResult = string.Format("有管理任务/条码'{0}'/站台'{1}'/下达任务成功", mMANAGE_MAIN.STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE);
|
||
|
// this.AddLog(sResult);
|
||
|
// }
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// bResult = false;
|
||
|
// sResult = "申请入库未下达任务";
|
||
|
//}
|
||
|
|
||
|
}
|
||
|
else if (mMANAGE_MAIN == null)
|
||
|
{
|
||
|
//实物上架/入库
|
||
|
if (this._S_StorageService.StorageCheck(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(), Enum.AREA_TYPE.XuNiKu.ToString(), out sResult))
|
||
|
{
|
||
|
string sGoodsProperty05 = string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) ? "0" : mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.TrimStart('-');
|
||
|
this.ExecuteNonQuery_ReturnVoid(
|
||
|
$"update STORAGE_LIST set GOODS_PROPERTY5='{sGoodsProperty05}'" +
|
||
|
$" where STORAGE_ID in (select STORAGE_ID from STORAGE_MAIN where STOCK_BARCODE='{mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd()}')");
|
||
|
//如果是母托盘,并且上报的低货位,则直接删除库存,下达到31301叠盘
|
||
|
//if (this._P_STORAGE_LIST.GetListStorageID(this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE).STORAGE_ID)[0].GOODS_ID == 32778 && mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01.Equals("3"))
|
||
|
//{
|
||
|
// //STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
// IList<STORAGE_LIST> sTORAGE_LISTs = this._P_STORAGE_LIST.GetListStorageID(sTORAGE_MAIN.STORAGE_ID);
|
||
|
// foreach (STORAGE_LIST item in sTORAGE_LISTs)
|
||
|
// {
|
||
|
// this._P_STORAGE_LIST.Delete(item.STORAGE_LIST_ID);
|
||
|
// }
|
||
|
// this._P_STORAGE_MAIN.Delete(sTORAGE_MAIN.STORAGE_ID);
|
||
|
// IO_CONTROL iO_CONTROL = new IO_CONTROL()
|
||
|
// {
|
||
|
// START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE,
|
||
|
// END_DEVICE_CODE = "31301",
|
||
|
// CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime(),
|
||
|
// STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE,
|
||
|
// START_WAREHOUSE_CODE = "1",
|
||
|
// END_WAREHOUSE_CODE = "1",
|
||
|
// CONTROL_TASK_TYPE = 4
|
||
|
// };
|
||
|
// this._P_IO_CONTROL.Add(iO_CONTROL);
|
||
|
// CreateApplyHis(mIO_CONTROL_APPLY);
|
||
|
// return true;
|
||
|
//}
|
||
|
mMANAGE_MAIN = new Model.MANAGE_MAIN();
|
||
|
mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp";
|
||
|
//if (this._P_STORAGE_LIST.GetListStorageID(this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE).STORAGE_ID)[0].GOODS_ID == 32778)
|
||
|
//{
|
||
|
// mMANAGE_MAIN.MANAGE_TYPE_CODE = "StockIn";
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp";
|
||
|
//}
|
||
|
|
||
|
|
||
|
mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd();
|
||
|
mMANAGE_MAIN.CELL_MODEL = "low";
|
||
|
//if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1")
|
||
|
//{
|
||
|
// mMANAGE_MAIN.CELL_MODEL = "low";
|
||
|
//}
|
||
|
//else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "2")
|
||
|
//{
|
||
|
// mMANAGE_MAIN.CELL_MODEL = "height";
|
||
|
//}
|
||
|
//else
|
||
|
//{
|
||
|
// bResult = false;
|
||
|
// sResult = "检尺检测不合格";
|
||
|
// mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
// mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult;
|
||
|
// this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
// this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
// this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
// return bResult;
|
||
|
//}
|
||
|
mMANAGE_MAIN.START_CELL_ID = mSTART_CELL.CELL_ID;
|
||
|
mMANAGE_MAIN.END_CELL_ID = 0;
|
||
|
mMANAGE_MAIN.MANAGE_OPERATOR = "管理系统";
|
||
|
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
|
||
|
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString();
|
||
|
mMANAGE_MAIN.MANAGE_LEVEL = string.Empty;
|
||
|
mMANAGE_MAIN.MANAGE_REMARK = string.Empty;
|
||
|
bResult = new ManageUp().ManageCreate(mMANAGE_MAIN, true, true, false, out sResult);
|
||
|
if (bResult)
|
||
|
{
|
||
|
sResult = string.Format("无管理任务/条码'{0}'/站台'{1}'/任务申请成功", mMANAGE_MAIN.STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE);
|
||
|
this.AddLog(sResult);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//无库存,无任务,不允许入库,如果盘上有货,电气未上报物料条码,当成空托盘入库
|
||
|
bResult = false;
|
||
|
if (sTORAGE_MAIN == null)
|
||
|
{
|
||
|
sResult = string.Format("{0} 无库存请组盘", mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
sResult = string.Format("{0} 已存在库存", mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
}
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
|
||
|
# region 叠盘机申请入库
|
||
|
case "4":
|
||
|
string CELL_MODEL = "low";
|
||
|
string STOCK_BARCODE = string.Empty;
|
||
|
string AREA_TYPE = string.Empty;
|
||
|
int Quantity = 7;
|
||
|
|
||
|
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "空托盘垛申请入库没有提供起始位置";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
//CreateApplyHis(mIO_CONTROL_APPLY);
|
||
|
return false;
|
||
|
}
|
||
|
//STOCK_BARCODE = string.Format("T{0}", SiaSun.LMS.Common.StringUtil.GetDateTime());
|
||
|
STOCK_BARCODE = string.Format("T{0}", DateTime.Now.ToString("yyyyMMddHHmmssffff"));
|
||
|
//STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
|
||
|
mIO_CONTROL_APPLY.CREATE_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
|
||
|
bResult = this.Invoke("ManageIn", "ManageCreate_Stock_In_Auto", new object[] { STOCK_BARCODE, mIO_CONTROL_APPLY.DEVICE_CODE, "StockIn", CELL_MODEL, Quantity, true, true, false, true }, out sResult);
|
||
|
if (!bResult)
|
||
|
{
|
||
|
bResult = false;
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
//this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
return bResult;
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
|
||
|
#region 空托盘垛申请出库
|
||
|
case "2":
|
||
|
{
|
||
|
string GoodsCode = "GTP";
|
||
|
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "空托盘垛申请出库没有提供目标位置";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
AddLog(sResult);
|
||
|
continue;
|
||
|
}
|
||
|
bResult = this.Invoke("ManageOut", "ManageCreate_Stock_Out_Auot", new object[] { null, "StockOut", GoodsCode, mIO_CONTROL_APPLY.DEVICE_CODE, true }, out sResult);
|
||
|
if (bResult)
|
||
|
{
|
||
|
sResult = string.Format("调度申请成功-空托盘垛出库:站台{0}/托盘条码{1}",
|
||
|
mIO_CONTROL_APPLY.DEVICE_CODE, mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
AddLog(sResult);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
//mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
//this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
|
||
|
AddLog(sResult);
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
|
||
|
#region 空托盘垛申请出库
|
||
|
case "5":
|
||
|
{
|
||
|
string GoodsCode = "ZTP";
|
||
|
if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE))
|
||
|
{
|
||
|
bResult = false;
|
||
|
sResult = "子托盘垛申请出库没有提供目标位置";
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
AddLog(sResult);
|
||
|
continue;
|
||
|
}
|
||
|
bResult = this.Invoke("ManageOut", "ManageCreate_Stock_Out_Auot", new object[] { null, "StockOut", GoodsCode, mIO_CONTROL_APPLY.DEVICE_CODE, true }, out sResult);
|
||
|
if (bResult)
|
||
|
{
|
||
|
sResult = string.Format("调度申请成功-子托盘垛出库:站台{0}/托盘条码{1}",
|
||
|
mIO_CONTROL_APPLY.DEVICE_CODE, mIO_CONTROL_APPLY.STOCK_BARCODE);
|
||
|
AddLog(sResult);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
AddLog(sResult);
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
#endregion
|
||
|
}
|
||
|
|
||
|
if (!bResult)
|
||
|
{
|
||
|
mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1;
|
||
|
mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT = sResult;
|
||
|
//sResult = string.Format("错误信息{0}:", sResult);
|
||
|
this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY);
|
||
|
if (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE == "1")
|
||
|
{
|
||
|
string sTemp = string.Empty;
|
||
|
this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, sResult, out sTemp);
|
||
|
DataTable dtReturnRoute = this.GetList(string.Format("select top 1 * from IO_CONTROL_ROUTE where control_route_type =4 and start_device ='{0}'", mIO_CONTROL_APPLY.DEVICE_CODE));
|
||
|
if (dtReturnRoute.Rows.Count > 0)
|
||
|
{
|
||
|
//写历史-生成回退任务
|
||
|
this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//写历史
|
||
|
this.CreateApplyHis(mIO_CONTROL_APPLY);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//写历史
|
||
|
this.CreateApplyHis(mIO_CONTROL_APPLY);
|
||
|
}
|
||
|
AddLog(sResult);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//生成任务成功后,删除该任务
|
||
|
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
|
||
|
}
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
sResult = ex.Message;
|
||
|
this.AddLog(sResult);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
return bResult;
|
||
|
}
|
||
|
/// <summary>
|
||
|
/// 生成申请历史
|
||
|
/// </summary>
|
||
|
/// <param name="mIO_CONTROL_APPLY"></param>
|
||
|
void CreateApplyHis(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
this._P_Base_House.BeginTransaction();
|
||
|
|
||
|
Model.IO_CONTROL_APPLY_HIS mIO_CONTROL_APPLY_HIS = new Model.IO_CONTROL_APPLY_HIS();
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_ID = mIO_CONTROL_APPLY.CONTROL_ID;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_TYPE = mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE;
|
||
|
mIO_CONTROL_APPLY_HIS.WAREHOUSE_CODE = mIO_CONTROL_APPLY.WAREHOUSE_CODE;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
|
||
|
mIO_CONTROL_APPLY_HIS.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.APPLY_TASK_STATUS = mIO_CONTROL_APPLY.APPLY_TASK_STATUS;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.CREATE_TIME = mIO_CONTROL_APPLY.CREATE_TIME;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_REMARK = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARAMETER = mIO_CONTROL_APPLY.CONTROL_APPLY_PARAMETER;
|
||
|
mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = mIO_CONTROL_APPLY.MANAGE_ERROR_TEXT;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_ERROR_TEXT = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA01 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02;
|
||
|
|
||
|
this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS);
|
||
|
|
||
|
//生成任务后,删除申请任务
|
||
|
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
|
||
|
|
||
|
this._P_Base_House.CommitTransaction();
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
AddLog(ex.ToString());
|
||
|
}
|
||
|
}
|
||
|
/// <summary>监视控制任务,处理所有完成的控制任务
|
||
|
/// 监视控制任务,处理所有完成的控制任务
|
||
|
/// </summary>
|
||
|
public void CONTROL_WATCHING(out string sResult)
|
||
|
{
|
||
|
bool boolResult = true;
|
||
|
sResult = string.Empty;
|
||
|
|
||
|
//遍历所有控制任务
|
||
|
foreach (IO_CONTROL mIO_CONTROL in this._P_IO_CONTROL.GetList())
|
||
|
{
|
||
|
//判断是否空值
|
||
|
if (!string.IsNullOrEmpty(mIO_CONTROL.CONTROL_STATUS.ToString()))
|
||
|
{
|
||
|
//获得任务状态
|
||
|
Enum.CONTROL_STATUS enumControlStatus = (Enum.CONTROL_STATUS)System.Enum.Parse(typeof(Enum.CONTROL_STATUS), mIO_CONTROL.CONTROL_STATUS.ToString());
|
||
|
|
||
|
//获得管理任务编号
|
||
|
MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(mIO_CONTROL.MANAGE_ID);
|
||
|
|
||
|
//删除完成的反转CONTROL
|
||
|
if (mMANAGE_MAIN == null)
|
||
|
{
|
||
|
if (mIO_CONTROL.CONTROL_STATUS == 999 || mIO_CONTROL.CONTROL_STATUS == 990 || mIO_CONTROL.CONTROL_STATUS == 900)
|
||
|
{
|
||
|
this._P_IO_CONTROL.DeleteControlID(mIO_CONTROL.CONTROL_ID);
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//判断控制任务
|
||
|
switch (enumControlStatus)
|
||
|
{
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.Control_Readed: //任务获取
|
||
|
//设置管理任务状态为运行状态
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Waitting, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.Wait: //等待
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.WaitingExecute, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.Runing: //运行
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Executing, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.DeviceRuning: //堆垛机运行
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.LterRouteApply: //申请改道
|
||
|
//设置管理任务状态为运行状态
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Executing, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.TaskDelete: //任务取消
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Cancel, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.TaskAbend: //异常完成
|
||
|
case SiaSun.LMS.Enum.CONTROL_STATUS.Finish: //完成
|
||
|
//完成任务
|
||
|
boolResult = CONTROL_CHANAGE_MANAGE_STATUS(mMANAGE_MAIN, Enum.MANAGE_STATUS.Complete, mIO_CONTROL.ERROR_TEXT, out sResult);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>更改管理任务状态
|
||
|
/// 更改管理任务状态
|
||
|
/// </summary>
|
||
|
private bool CONTROL_CHANAGE_MANAGE_STATUS(MANAGE_MAIN mMANAGE_MAIN, Enum.MANAGE_STATUS emManageStatus, string ERROR_TEXT, out string strResult)
|
||
|
{
|
||
|
bool boolResult = true;
|
||
|
strResult = string.Empty;
|
||
|
try
|
||
|
{
|
||
|
//判断状态
|
||
|
if (mMANAGE_MAIN != null)
|
||
|
{
|
||
|
//如果状态更改或者存在报警信息则更新
|
||
|
if (mMANAGE_MAIN.MANAGE_STATUS != emManageStatus.ToString())
|
||
|
{
|
||
|
//更新状态
|
||
|
//mMANAGE_MAIN.MANAGE_REMARK = ERROR_TEXT;
|
||
|
mMANAGE_MAIN.MANAGE_STATUS = emManageStatus.ToString();
|
||
|
this._P_MANAGE_MAIN.Update(mMANAGE_MAIN);
|
||
|
}
|
||
|
|
||
|
if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Cancel.ToString())
|
||
|
{
|
||
|
boolResult = this.ManageCancel(mMANAGE_MAIN.MANAGE_ID, out strResult);
|
||
|
}
|
||
|
else if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Complete.ToString())
|
||
|
{
|
||
|
Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE);
|
||
|
boolResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageComplete", new object[] { mMANAGE_MAIN.MANAGE_ID, true }, out strResult);
|
||
|
if (!boolResult)
|
||
|
{
|
||
|
strResult = string.Format("任务完成失败!{0}", strResult);
|
||
|
}
|
||
|
}
|
||
|
else if (mMANAGE_MAIN.MANAGE_STATUS == Enum.MANAGE_STATUS.Executing.ToString())
|
||
|
{
|
||
|
Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE);
|
||
|
boolResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageExecute", new object[] { mMANAGE_MAIN.MANAGE_ID }, out strResult);
|
||
|
if (!boolResult)
|
||
|
{
|
||
|
strResult = string.Format("任务开始执行失败!{0}", strResult);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
boolResult = false;
|
||
|
strResult = ex.Message + "CONTROL_CHANAGE_MANAGE_STATUS";
|
||
|
AddLog(strResult);
|
||
|
}
|
||
|
return boolResult;
|
||
|
}
|
||
|
|
||
|
/// <summary>任务-反转
|
||
|
/// 任务-反转
|
||
|
/// </summary>
|
||
|
void CreateApplyExceptionTask(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY, string ExceptionStation, string ExceptionMessage)
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
this._P_Base_House.BeginTransaction();
|
||
|
|
||
|
Model.IO_CONTROL_APPLY_HIS mIO_CONTROL_APPLY_HIS = new Model.IO_CONTROL_APPLY_HIS();
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_ID = mIO_CONTROL_APPLY.CONTROL_ID;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_TYPE = mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE;
|
||
|
mIO_CONTROL_APPLY_HIS.WAREHOUSE_CODE = mIO_CONTROL_APPLY.WAREHOUSE_CODE;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
|
||
|
mIO_CONTROL_APPLY_HIS.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.APPLY_TASK_STATUS = mIO_CONTROL_APPLY.APPLY_TASK_STATUS;
|
||
|
|
||
|
mIO_CONTROL_APPLY_HIS.CREATE_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_REMARK = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA01 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_PARA03 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03;
|
||
|
mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = ExceptionMessage;
|
||
|
mIO_CONTROL_APPLY_HIS.CONTROL_ERROR_TEXT = mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT;
|
||
|
this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS);
|
||
|
this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID);
|
||
|
|
||
|
|
||
|
if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) &&
|
||
|
Convert.ToInt32(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) < 10)
|
||
|
{
|
||
|
SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = new SiaSun.LMS.Model.IO_CONTROL();
|
||
|
mIO_CONTROL.RELATIVE_CONTROL_ID = -1;
|
||
|
mIO_CONTROL.MANAGE_ID = 0;
|
||
|
mIO_CONTROL.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE;
|
||
|
//mIO_CONTROL.CELL_GROUP = mEND_CELL.CELL_GROUP;
|
||
|
mIO_CONTROL.CONTROL_TASK_LEVEL = "0";
|
||
|
mIO_CONTROL.PRE_CONTROL_STATUS = string.Empty;
|
||
|
mIO_CONTROL.CONTROL_TASK_TYPE = 4;
|
||
|
mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE;
|
||
|
if (mIO_CONTROL_APPLY.DEVICE_CODE == "31002")
|
||
|
{
|
||
|
mIO_CONTROL.END_DEVICE_CODE = "31001";
|
||
|
}
|
||
|
else if (mIO_CONTROL_APPLY.DEVICE_CODE == "31044")
|
||
|
{
|
||
|
mIO_CONTROL.END_DEVICE_CODE = "31043";
|
||
|
}
|
||
|
else if (mIO_CONTROL_APPLY.DEVICE_CODE == "31053")
|
||
|
{
|
||
|
mIO_CONTROL.END_DEVICE_CODE = "31052";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
mIO_CONTROL.END_DEVICE_CODE = string.Empty;
|
||
|
}
|
||
|
mIO_CONTROL.CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime();
|
||
|
mIO_CONTROL.CONTROL_STATUS = 0;
|
||
|
mIO_CONTROL.START_WAREHOUSE_CODE = "1";
|
||
|
mIO_CONTROL.END_WAREHOUSE_CODE = "1";
|
||
|
mIO_CONTROL.ERROR_TEXT = ExceptionMessage;
|
||
|
bool bOk = true;
|
||
|
IList<IO_CONTROL> lControl = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(mIO_CONTROL.END_DEVICE_CODE);
|
||
|
foreach (IO_CONTROL ic in lControl)
|
||
|
{
|
||
|
if (ic.START_DEVICE_CODE == mIO_CONTROL.START_DEVICE_CODE)
|
||
|
{
|
||
|
bOk = false;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (bOk && !string.IsNullOrWhiteSpace(mIO_CONTROL.END_DEVICE_CODE))
|
||
|
{
|
||
|
this._P_IO_CONTROL.Add(mIO_CONTROL);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this._P_Base_House.CommitTransaction();
|
||
|
}
|
||
|
catch (Exception ex)
|
||
|
{
|
||
|
this._P_Base_House.RollBackTransaction();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <summary>计划-轮询
|
||
|
/// 计划-轮询
|
||
|
/// </summary>
|
||
|
/// <param name="PLAN_CODE">申请计划编号</param>
|
||
|
/// <param name="PLAN_ID">计划编号</param>
|
||
|
/// <param name="sResult">返回结果</param>
|
||
|
/// <param name="PLAN_FLAG">轮询标志</param>
|
||
|
/// <returns></returns>
|
||
|
public bool ERP_Plan_Task(out string sResult)
|
||
|
{
|
||
|
sResult = string.Empty;
|
||
|
bool bResult = true;
|
||
|
|
||
|
|
||
|
//获取执行中的自动出库状态的出库计划,且目标站台任务数排序
|
||
|
DataTable dt = this.GetList(string.Format(@"SELECT * FROM v_plan_list WHERE plan_status='Executing'
|
||
|
and plan_list_quantity != plan_list_ordered_quantity
|
||
|
and PLAN_CONFIRM_USER = 'Auto'"));
|
||
|
|
||
|
if (dt != null && dt.Rows.Count > 0)
|
||
|
{
|
||
|
arrayList[] arrayLists = new arrayList[dt.Rows.Count];
|
||
|
|
||
|
int[] ss = new int[dt.Rows.Count];
|
||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||
|
{
|
||
|
arrayList arrayList = new arrayList();
|
||
|
IList<IO_CONTROL> iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(dt.Rows[i]["PLAN_TO_DEPT"].ToString());
|
||
|
arrayList.ID = iO_CONTROLs.Count;
|
||
|
arrayList.plan_to_dept = dt.Rows[i]["PLAN_TO_DEPT"].ToString();
|
||
|
arrayList.PLAN_ID = Convert.ToInt32(dt.Rows[i]["PLAN_ID"].ToString());
|
||
|
arrayLists[i] = arrayList;
|
||
|
}
|
||
|
Array.Sort(arrayLists);
|
||
|
|
||
|
foreach (arrayList item in arrayLists)
|
||
|
{
|
||
|
PLAN_MAIN pLAN_MAIN = this._P_PLAN_MAIN.GetModel(item.PLAN_ID);
|
||
|
|
||
|
IList<IO_CONTROL> iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(pLAN_MAIN.PLAN_TO_DEPT);
|
||
|
if (iO_CONTROLs.Count > 1)
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
bResult = new S_ManageService().ManageOutAuto(item.PLAN_ID, true, true, false, out sResult);
|
||
|
if (bResult)
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
public class arrayList : IComparable
|
||
|
{
|
||
|
public string plan_to_dept { get; set; }
|
||
|
public int ID { get; set; }
|
||
|
|
||
|
public int PLAN_ID { get; set; }
|
||
|
|
||
|
public int CompareTo(object obj)
|
||
|
{
|
||
|
if (obj is arrayList)
|
||
|
{
|
||
|
return ID.CompareTo(((arrayList)obj).ID);
|
||
|
}
|
||
|
return 1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|