宜昌华友成品库管理软件
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

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;
}
}
}
}