using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; namespace SiaSun.LMS.Implement { public class ControlBase:ManageBase { public static string sendLedMes = string.Empty; /// 作业-动作 /// 作业-动作 /// /// 库房编码 /// /// public void ControlTranslate(out string sResult) { sResult = string.Empty; IList 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); } } } /// 任务-申请 /// 任务-申请 /// /// 申请编号 /// 任务编号 /// 返回结果 /// public bool ControlApplyTask( out string sResult) { bool bResult = true; sResult = string.Empty; string mesout = string.Empty; IList 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 { SiaSun.LMS.Model.WH_CELL mSTART_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd()); if (null == mSTART_CELL) { bResult = false; sResult = "托盘条码->" + mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() + "申请入库未提供起始站台"; this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult); return bResult; } if (mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() == string.Empty|| mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() =="111111") { bResult = false; sResult = "申请入库未提供托盘条码"; this._S_LEDService.AddLedLineTxt("12011", 0, "未扫描到托盘条码 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString(), out mesout); sendLedMes = "未扫描到托盘条码 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString() + sendLedMes; this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult); return bResult; } switch (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE.TrimEnd()) { case "1": //申请入库 SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode("%" + mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd() + "%"); if (mMANAGE_MAIN != null) { mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); bResult = this.ManageDownLoad(mMANAGE_MAIN.MANAGE_ID, mIO_CONTROL_APPLY.DEVICE_CODE.TrimEnd(), true, out sResult); } else { //上架 if (this._S_StorageService.StorageCheck(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(), Enum.AREA_TYPE.XuNiKu.ToString(), out sResult)) { mMANAGE_MAIN = new Model.MANAGE_MAIN(); mMANAGE_MAIN.MANAGE_TYPE_CODE = "ManageUp"; mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(); mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd(); 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); } else//空托盘入库 { //mMANAGE_MAIN = new Model.MANAGE_MAIN(); //mMANAGE_MAIN.MANAGE_TYPE_CODE = "StockIn"; //mMANAGE_MAIN.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd(); //mMANAGE_MAIN.CELL_MODEL = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK.TrimEnd(); //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; //List listMANAGE_LIST = new List(); //Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST(); //if (Convert.ToInt32(mMANAGE_MAIN.STOCK_BARCODE) < 2200) // mMANAGE_LIST.GOODS_ID = 1; //else // mMANAGE_LIST.GOODS_ID = -1; //mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1; //listMANAGE_LIST.Add(mMANAGE_LIST); //bResult = new ManageIn().ManageCreate(mMANAGE_MAIN, listMANAGE_LIST, true, true, false, true, out sResult); bResult = false; sResult = "未找到托盘信息"; this._S_LEDService.AddLedLineTxt("12011", 0, "未找到托盘信息 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString(), out mesout); sendLedMes = "未找到托盘信息 " + mIO_CONTROL_APPLY.CONTROL_APPLY_ID.ToString() + sendLedMes; this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011", sResult); return bResult; } } break; case "2": //申请改道 主要用于重复入库异常 break; } if (!bResult) { // 如果有异常口,下达到异常口的控制任务 this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "12011",sResult); continue; } else { if( this._S_LEDService.AddLedLineTxt("12011", 0, sendLedMes, out mesout)) sendLedMes = string.Empty; this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID); } } catch (Exception ex) { } } return bResult; } 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 = mIO_CONTROL_APPLY.CREATE_TIME; mIO_CONTROL_APPLY_HIS.CONTROL_APPLY_REMARK = mIO_CONTROL_APPLY.CONTROL_APPLY_REMARK; mIO_CONTROL_APPLY_HIS.MANAGE_ERROR_TEXT = ExceptionMessage; this._P_IO_CONTROL_APPLY_HIS.Add(mIO_CONTROL_APPLY_HIS); this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID); 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 = 3; mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE; mIO_CONTROL.END_DEVICE_CODE = ExceptionStation; 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); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { this._P_Base_House.RollBackTransaction(); } } } }