using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Reflection; using SiaSun.LMS.Model; namespace SiaSun.LMS.Implement { public class ManageBase : S_BaseService, SiaSun.LMS.Interface.I_ManageService { #region MANAGE /// 管理-下达 /// 管理-下达 /// /// 管理任务模式对象 /// 管理任务明细模式对象链表 /// 是否下达调度任务 /// 是否使用事务 /// 是否报完成 /// public bool ManageCreate(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN, List lsMANAGE_LIST, bool bAutoSendControl, bool bTrans,out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); #region 校验 SiaSun.LMS.Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE); if (mMANAGE_TYPE == null) { bResult = false; sResult = string.Format("未找到任务类型{0}", mMANAGE_MAIN.MANAGE_TYPE_CODE); return bResult; } if (!string.IsNullOrEmpty(mMANAGE_MAIN.STOCK_BARCODE)) { SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN_OLD = this._P_MANAGE_MAIN.GetModelStockBarcodeManageStatus(mMANAGE_MAIN.STOCK_BARCODE); if (null != mMANAGE_MAIN_OLD) { bResult = false; sResult = string.Format("托盘条码{0}已经存在任务", mMANAGE_MAIN.STOCK_BARCODE); return bResult; } } //SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); //if (null == mSTART_WH_CELL) //{ // bResult = false; // sResult = string.Format("起始位置索引[{0}]不存在", mMANAGE_MAIN.START_CELL_ID); // return bResult; //} //SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); //if (null == mEND_WH_CELL) //{ // bResult = false; // sResult = string.Format(" 终止位置索引[{0}]不存在", mMANAGE_MAIN.END_CELL_ID); // return bResult; //} #endregion #region 生成任务 mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString(); this._P_MANAGE_MAIN.Add(mMANAGE_MAIN); foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in lsMANAGE_LIST) { //若关联计划则更新计划下达数量 SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST = this._P_PLAN_LIST.GetModel(mMANAGE_LIST.PLAN_LIST_ID); if (null != mPLAN_LIST) { mPLAN_LIST.PLAN_LIST_ORDERED_QUANTITY += mMANAGE_LIST.MANAGE_LIST_QUANTITY; if (mPLAN_LIST.PLAN_LIST_ORDERED_QUANTITY > mPLAN_LIST.PLAN_LIST_QUANTITY) { bResult = false; sResult = string.Format("任务数量大于计划的未下达数量"); return bResult; } this._P_PLAN_LIST.Update(mPLAN_LIST); } //更新MANAGE_ID mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; this._P_MANAGE_LIST.Add(mMANAGE_LIST); } #endregion #region 更新货位 WH_CELL wH_CELL_Start = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); if (wH_CELL_Start != null) { bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.START_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Selected.ToString(), out sResult); if (!bResult) { return bResult; } } WH_CELL wH_CELL_End = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); if (wH_CELL_End != null) { bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.END_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Selected.ToString(), out sResult); if (!bResult) { return bResult; } } #endregion #region 下架任务锁定出站台-Run-停用 //if (mEND_WH_CELL.CELL_TYPE.Equals(SiaSun.LMS.Enum.CELL_TYPE.Station.ToString())) //{ // mEND_WH_CELL.RUN_STATUS = SiaSun.LMS.Enum.RUN_STATUS.Run.ToString(); // this._P_WH_CELL.Update(mEND_WH_CELL); //} #endregion #region 生成控制任务 if (bAutoSendControl) { bResult = this.ManageCreateControl(mMANAGE_MAIN.MANAGE_ID, false,out sResult); if (!bResult) { return bResult; } } #endregion } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-完成 /// 管理-完成 /// /// /// 是否独立事务 /// /// public bool ManageComplete(int MANAGE_ID, bool bTrans,out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(mMANAGE_MAIN.MANAGE_ID); if ((null != mIO_CONTROL) && (!mIO_CONTROL.CONTROL_STATUS.Equals(999))) { bResult = false; sResult = string.Format("关联的控制任务未完成,索引[{0}]", mIO_CONTROL.CONTROL_ID); return bResult; } //更新任务 mMANAGE_MAIN.MANAGE_END_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); IList lsMANAGE_LIST = this._P_MANAGE_LIST.GetListManageID(mMANAGE_MAIN.MANAGE_ID); //更新计划列表 foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in lsMANAGE_LIST) { //若关联计划则更新计划下达数量 SiaSun.LMS.Model.PLAN_LIST mIO_PLAN_LIST = this._P_PLAN_LIST.GetModel(mMANAGE_LIST.PLAN_LIST_ID); if (null != mIO_PLAN_LIST) { mIO_PLAN_LIST.PLAN_LIST_FINISHED_QUANTITY += mMANAGE_LIST.MANAGE_LIST_QUANTITY; if (mIO_PLAN_LIST.PLAN_LIST_FINISHED_QUANTITY > mIO_PLAN_LIST.PLAN_LIST_QUANTITY) { bResult = false; sResult= string.Format("任务数量大于计划的未下达数量"); return bResult; } this._P_PLAN_LIST.Update(mIO_PLAN_LIST); } } //更新计划 SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(mMANAGE_MAIN.PLAN_ID); if (null != mPLAN_MAIN) { bResult= this._S_PlanService.PlanCheckComplete(mMANAGE_MAIN.PLAN_ID,out sResult); if (bResult) { bResult = this._S_PlanService.PlanComplete(mMANAGE_MAIN.PLAN_ID,false,out sResult); if (!bResult) { return bResult; } } } //生成入出库记录 bResult = this.ManageCreateRecord(mMANAGE_MAIN.MANAGE_ID,out sResult); if (!bResult) { return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-故障 /// 管理-故障 /// /// /// /// public bool ManageError(int MANAGE_ID, bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(mMANAGE_MAIN.MANAGE_ID); if (null == mIO_CONTROL) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在控制任务", MANAGE_ID); return bResult; } mMANAGE_MAIN.MANAGE_REMARK = mIO_CONTROL.ERROR_TEXT; mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Error.ToString(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-取消 /// 管理-取消 /// /// /// /// public bool ManageCancel(int MANAGE_ID, bool bTrans,out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = null; try { this._P_Base_House.BeginTransaction(bTrans); mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(mMANAGE_MAIN.MANAGE_ID); if ((null != mIO_CONTROL) && (!mIO_CONTROL.CONTROL_STATUS.Equals(900))) { bResult = false; sResult = string.Format("关联的控制任务未删除,索引[{0}]", mIO_CONTROL.CONTROL_ID); return bResult; } bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.START_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(),out sResult); if (!bResult) { return bResult; } bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.END_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(),out sResult); if (!bResult) { return bResult; } foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in this._P_MANAGE_LIST.GetListManageID(MANAGE_ID)) { SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST = this._P_PLAN_LIST.GetModel(mMANAGE_LIST.PLAN_LIST_ID); if (null != mPLAN_LIST) { mPLAN_LIST.PLAN_LIST_ORDERED_QUANTITY -= mMANAGE_LIST.MANAGE_LIST_QUANTITY; this._P_PLAN_LIST.Update(mPLAN_LIST); } } this._P_IO_CONTROL.DeleteManageID(MANAGE_ID); this._P_MANAGE_DETAIL.DeleteManageID(MANAGE_ID); this._P_MANAGE_LIST.DeleteManageID(MANAGE_ID); this._P_MANAGE_MAIN.Delete(MANAGE_ID); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); #region 生成系统日志 SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); string MESSAGE = string.Format("任务索引[{0}],起始位置[{1}],终止位置[{2}],容器条码[{3}]", MANAGE_ID, mSTART_WH_CELL.CELL_NAME, mEND_WH_CELL.CELL_NAME, mMANAGE_MAIN.STOCK_BARCODE.ToString()); this.CreateSYS_LOG("任务删除", "SYS", "1", MESSAGE); #endregion } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-执行 /// 管理-执行 /// /// /// /// public bool ManageExecute(int MANAGE_ID, bool bTrans,out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } mMANAGE_MAIN.MANAGE_REMARK = string.Empty; mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Executing.ToString(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); #region 发送大屏幕 //bResult=this._S_LEDService.ledMessageCreate(mMANAGE_MAIN); #endregion } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-更改任务状态 /// 管理-更改任务状态 /// /// 任务编号 /// 任务状态 /// public bool ManageUpdateStatus(int MANAGE_ID, string MANAGE_STATUS,out string sResult) { bool bResult = true; sResult = string.Empty; try { SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } mMANAGE_MAIN.MANAGE_STATUS = MANAGE_STATUS; this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } #endregion #region MANAGE_TYPE public IList ManageTypeParamGetList(int MANAGE_TYPE_ID) { return this._P_MANAGE_TYPE_PARAM.GetList(MANAGE_TYPE_ID); } #endregion #region CONTROL /// 管理系统下达控制任务 /// 管理系统下达控制任务 /// /// 管理任务索引 /// 是否独立事务 /// public bool ManageCreateControl(int MANAGE_ID,bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); #region 校验 SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } IList lsMANAGE_LIST = this._P_MANAGE_LIST.GetListManageID(MANAGE_ID); if (lsMANAGE_LIST.Count<=0) { bResult = false; sResult = string.Format("管理任务明细[{0}]不存在", MANAGE_ID); return bResult; } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL_EXISTS = this._P_IO_CONTROL.GetModelManageID(MANAGE_ID); //12101判断如果控制任务删的不及时,也应该通过申请入库ljc20221122 if(mMANAGE_MAIN.START_CELL_ID!=16645) { if (null != mIO_CONTROL_EXISTS) { bResult = false; sResult = string.Format("管理任务索引[{0}]已存在控制任务索引[{1}]", MANAGE_ID, mIO_CONTROL_EXISTS.CONTROL_ID); return bResult; } } bResult = this.ControlCheckRoute(mMANAGE_MAIN.START_CELL_ID, mMANAGE_MAIN.END_CELL_ID,out sResult); if (!bResult) { return bResult; } #endregion SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = new SiaSun.LMS.Model.IO_CONTROL(); SiaSun.LMS.Model.WH_CELL mSTART_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); SiaSun.LMS.Model.WH_CELL mEND_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); SiaSun.LMS.Model.WH_WAREHOUSE mSTART_WH_WAREHOUSE = this._P_WH_WAREHOUSE.GetModel_CELL_ID(mMANAGE_MAIN.START_CELL_ID); SiaSun.LMS.Model.WH_WAREHOUSE mEND_WH_WAREHOUSE = this._P_WH_WAREHOUSE.GetModel_CELL_ID(mMANAGE_MAIN.END_CELL_ID); string IN_OUT_TYPE = string.Format("{0}-{1}", mSTART_CELL.CELL_TYPE, mEND_CELL.CELL_TYPE); switch (IN_OUT_TYPE) { case "Station-Cell"://站台-货位-入 mIO_CONTROL.CONTROL_TASK_TYPE = 1; break; case "Cell-Station"://货位-站台-出 mIO_CONTROL.CONTROL_TASK_TYPE = 2; break; case "Cell-Cell"://货位-货位-移 mIO_CONTROL.CONTROL_TASK_TYPE = 3; break; case "Station-Station"://站台-站台-移 mIO_CONTROL.CONTROL_TASK_TYPE = 4; break; } switch (mMANAGE_MAIN.MANAGE_TYPE_CODE.ToString()) { case "101": default: mIO_CONTROL.CONTROL_TASK_LEVEL = "9"; break; } mIO_CONTROL.RELATIVE_CONTROL_ID = -1; mIO_CONTROL.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mIO_CONTROL.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; mIO_CONTROL.PRE_CONTROL_STATUS = string.Empty; mIO_CONTROL.START_WAREHOUSE_CODE = mSTART_WH_WAREHOUSE.WAREHOUSE_CODE; //_CONTROL.START_DEVICE_CODE = mSTART_CELL.CELL_CODE; mIO_CONTROL.END_WAREHOUSE_CODE = mEND_WH_WAREHOUSE.WAREHOUSE_CODE; //如果是终点翻转货位,只给调度下移库任务,类型是2出库 if(mEND_CELL.CELL_LOGICAL_NAME.Equals("FZ")) { //LJC:cell表里面该字段是货位和翻转站台绑定号,一个货位就是一个翻转站台 mIO_CONTROL.END_DEVICE_CODE = mEND_CELL.LOCK_DEVICE_CODE; mIO_CONTROL.CONTROL_TASK_TYPE = 2; if (mSTART_CELL.CELL_TYPE.Equals("Station")) { mIO_CONTROL.CONTROL_TASK_TYPE = 4; } } else { mIO_CONTROL.END_DEVICE_CODE = mEND_CELL.CELL_CODE; } //起点是翻转货位,那么给调度下入库任务,起点是翻转站台号2024LJC0509 if (mSTART_CELL.CELL_LOGICAL_NAME.Equals("FZ")) { //LJC:cell表里面该字段是货位和翻转站台绑定号,一个货位就是一个翻转站台 mIO_CONTROL.START_DEVICE_CODE=mSTART_CELL.LOCK_DEVICE_CODE; mIO_CONTROL.CONTROL_TASK_TYPE = 1; } else { mIO_CONTROL.START_DEVICE_CODE = mSTART_CELL.CELL_CODE; } // mIO_CONTROL.END_DEVICE_CODE = mEND_CELL.CELL_CODE; mIO_CONTROL.CONTROL_STATUS = 0; mIO_CONTROL.ERROR_TEXT = string.Empty; mIO_CONTROL.CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString(); mIO_CONTROL.CONTROL_END_TIME = string.Empty; //批次号 //mIO_CONTROL.CONTROL_REMARK = lsMANAGE_LIST[0].GOODS_PROPERTY1; //按编码当批次LJC20221127 mIO_CONTROL.CONTROL_REMARK = lsMANAGE_LIST[0].GOODS_PROPERTY2; this._P_IO_CONTROL.Add(mIO_CONTROL); bResult = this.ManageUpdateStatus(mMANAGE_MAIN.MANAGE_ID, SiaSun.LMS.Enum.MANAGE_STATUS.Waiting.ToString(),out sResult); if (!bResult) { return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 检查调度系统入出库路径是否可用 /// 检查调度系统入出库路径是否可用 /// /// /// /// /// private bool ControlCheckRoute(int START_CELL_ID, int END_CELL_ID,out string sResult) { bool bResult = true; sResult = string.Empty; try { SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(START_CELL_ID); SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID); IList lsIO_CONTROL_ROUTE = this._P_IO_CONTROL_ROUTE.GetList(mSTART_WH_CELL.DEVICE_CODE, mEND_WH_CELL.DEVICE_CODE); if (lsIO_CONTROL_ROUTE.Count == 0) { bResult = false; sResult = string.Format("起始位置[{0}]到终止位置[{1}]路径不可用", mSTART_WH_CELL.CELL_NAME, mEND_WH_CELL.CELL_NAME); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } #endregion #region RECORD /// 生成入出库记录-根据管理任务 /// 生成入出库记录-根据管理任务 /// /// /// /// public bool ManageCreateRecord(int MANAGE_ID,out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.RECORD_MAIN mRECORD_MAIN = new SiaSun.LMS.Model.RECORD_MAIN(); SiaSun.LMS.Model.RECORD_LIST mRECORD_LIST = new SiaSun.LMS.Model.RECORD_LIST(); SiaSun.LMS.Model.RECORD_DETAIL mRECORD_DETAIL = new SiaSun.LMS.Model.RECORD_DETAIL(); try { SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } //生成RECORD_MAIN GOODS_TEMPLATE mGOODS_TEMPLATE = this._P_GOODS_TEMPLETE.GetModel(mMANAGE_MAIN.GOODS_TEMPLATE_ID); mRECORD_MAIN.GOODS_TEMPLATE_CODE = mGOODS_TEMPLATE == null ? string.Empty : mGOODS_TEMPLATE.GOODS_TEMPLATE_CODE; PLAN_MAIN mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(mMANAGE_MAIN.PLAN_ID); mRECORD_MAIN.PLAN_CODE = mPLAN_MAIN == null ? string.Empty : mPLAN_MAIN.PLAN_CODE; mRECORD_MAIN.PLAN_TYPE_CODE = mMANAGE_MAIN.PLAN_TYPE_CODE; mRECORD_MAIN.MANAGE_TYPE_CODE = mMANAGE_MAIN.MANAGE_TYPE_CODE; mRECORD_MAIN.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); if (mSTART_WH_CELL != null) mRECORD_MAIN.START_POSITION = mSTART_WH_CELL.CELL_NAME; SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); if (mEND_WH_CELL != null) mRECORD_MAIN.END_POSITION = mEND_WH_CELL.CELL_NAME; mRECORD_MAIN.RECORD_OPERATOR = mMANAGE_MAIN.MANAGE_OPERATOR; mRECORD_MAIN.MANAGE_BEGIN_TIME = mMANAGE_MAIN.MANAGE_BEGIN_TIME; mRECORD_MAIN.MANAGE_END_TIME = mMANAGE_MAIN.MANAGE_END_TIME; mRECORD_MAIN.RECORD_REMARK = mMANAGE_MAIN.MANAGE_REMARK; this._P_RECORD_MAIN.Add(mRECORD_MAIN); //生成RECORD_LIST foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in this._P_MANAGE_LIST.GetListManageID(MANAGE_ID)) { mRECORD_LIST.RECORD_ID = mRECORD_MAIN.RECORD_ID; mRECORD_LIST.PLAN_LIST_ID = mMANAGE_LIST.PLAN_LIST_ID; mRECORD_LIST.RECORD_LIST_QUANTITY = mMANAGE_LIST.MANAGE_LIST_QUANTITY; mRECORD_LIST.GOODS_ID = mMANAGE_LIST.GOODS_ID; mRECORD_LIST.GOODS_PROPERTY1 = mMANAGE_LIST.GOODS_PROPERTY1; mRECORD_LIST.GOODS_PROPERTY2 = mMANAGE_LIST.GOODS_PROPERTY2; mRECORD_LIST.GOODS_PROPERTY5 = mMANAGE_LIST.GOODS_PROPERTY5; mRECORD_LIST.GOODS_PROPERTY6 = mMANAGE_LIST.GOODS_PROPERTY6; bResult = this._S_GoodsService.GoodsPropertySetValue(mMANAGE_LIST.GOODS_ID, mRECORD_LIST, mMANAGE_LIST, out sResult); if (!bResult) { return bResult; } mRECORD_LIST.RECORD_LIST_REMARK = mMANAGE_LIST.MANAGE_LIST_REMARK; this._P_RECORD_LIST.Add(mRECORD_LIST); //生成RECORD_DETAIL foreach (SiaSun.LMS.Model.MANAGE_DETAIL mMANAGE_DETAIL in this._P_MANAGE_DETAIL.GetListManageListID(mMANAGE_LIST.MANAGE_LIST_ID)) { mRECORD_DETAIL.RECORD_LIST_ID = mRECORD_LIST.RECORD_LIST_ID; mRECORD_DETAIL.BOX_BARCODE = mMANAGE_DETAIL.BOX_BARCODE; mRECORD_DETAIL.GOODS_BARCODE = mMANAGE_DETAIL.GOODS_BARCODE; mRECORD_DETAIL.RECORD_DETAIL_REMARK = mMANAGE_DETAIL.MANAGE_DETAIL_REMARK; this._P_RECORD_DETAIL.Add(mRECORD_DETAIL); } } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } #endregion //====================以下为原来方法================= /// 根据库存生成移库任务 /// 根据库存生成移库任务 /// /// /// /// /// /// /// /// /// /// /// /// public bool ManageCreate(SiaSun.LMS.Model.SYS_USER mSYS_USER, int PLAN_LIST_ID, string MANAGE_TYPE_CODE, string STOCK_BARCODE, int START_CELL_ID, int END_CELL_ID, bool bTrans, bool bAutoSendControl, bool bComplete, out string sResult) { bool bResult = true; sResult = string.Empty; int MANAGE_ID = 0; SiaSun.LMS.Model.WH_CELL mWH_CELL_START = this._P_WH_CELL.GetModel(START_CELL_ID); SiaSun.LMS.Model.WH_CELL mWH_CELL_END = this._P_WH_CELL.GetModel(END_CELL_ID); IList lsSTORAGE_MAIN = null; if (STOCK_BARCODE == string.Empty) lsSTORAGE_MAIN = this._P_STORAGE_MAIN.GetListCellID(START_CELL_ID); else lsSTORAGE_MAIN = this._P_STORAGE_MAIN.GetListStockBarcode(STOCK_BARCODE); SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = null; SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST = null; bResult = lsSTORAGE_MAIN.Count > 0; if (!bResult) { sResult = string.Format("未找到库存"); return bResult; } if (this._P_MANAGE_MAIN.GetModelStockBarcode(lsSTORAGE_MAIN[0].STOCK_BARCODE) != null) { bResult = false; sResult = string.Format("托盘条码{0}已经存在任务", lsSTORAGE_MAIN[0].STOCK_BARCODE); return bResult; } try { this._P_Base_House.BeginTransaction(bTrans); if (!PLAN_LIST_ID.Equals(0)) { mPLAN_LIST = this._P_PLAN_LIST.GetModel(PLAN_LIST_ID); mPLAN_MAIN = this._P_PLAN_MAIN.GetModel(mPLAN_LIST.PLAN_ID); } SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new SiaSun.LMS.Model.MANAGE_MAIN(); mMANAGE_MAIN.MANAGE_TYPE_CODE = MANAGE_TYPE_CODE; if (null != mPLAN_LIST) { mMANAGE_MAIN.PLAN_ID = mPLAN_LIST.PLAN_ID; } else { mMANAGE_MAIN.PLAN_ID = 0; } mMANAGE_MAIN.MANAGE_OPERATOR = mSYS_USER.USER_NAME; mMANAGE_MAIN.STOCK_BARCODE = lsSTORAGE_MAIN[0].STOCK_BARCODE; mMANAGE_MAIN.START_CELL_ID = START_CELL_ID; mMANAGE_MAIN.END_CELL_ID = END_CELL_ID; mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); //mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString(); mMANAGE_MAIN.MANAGE_REMARK = string.Empty; this._P_MANAGE_MAIN.Add(mMANAGE_MAIN); SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = null; foreach (SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN in lsSTORAGE_MAIN) { IList lsSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID); foreach (SiaSun.LMS.Model.STORAGE_LIST mSTORAGE_LIST in lsSTORAGE_LIST) { mMANAGE_LIST = new SiaSun.LMS.Model.MANAGE_LIST(); mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; if (null != mPLAN_LIST) { mMANAGE_LIST.PLAN_LIST_ID = PLAN_LIST_ID; } else { mMANAGE_LIST.PLAN_LIST_ID = 0; } mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID; mMANAGE_LIST.GOODS_ID = mSTORAGE_LIST.GOODS_ID; bResult = this._S_GoodsService.GoodsPropertySetValue(mSTORAGE_LIST.GOODS_ID, mMANAGE_LIST, mSTORAGE_LIST, out sResult); if (!bResult) { return bResult; } mMANAGE_LIST.BOX_BARCODE = mSTORAGE_LIST.BOX_BARCODE; mMANAGE_LIST.MANAGE_LIST_QUANTITY = mSTORAGE_LIST.STORAGE_LIST_QUANTITY; mMANAGE_LIST.MANAGE_LIST_REMARK = mSTORAGE_LIST.STORAGE_LIST_REMARK; this._P_MANAGE_LIST.Add(mMANAGE_LIST); if ((null != mPLAN_LIST) && (mMANAGE_LIST.GOODS_ID == mPLAN_LIST.GOODS_ID)) { mPLAN_LIST.PLAN_LIST_ORDERED_QUANTITY += mMANAGE_LIST.MANAGE_LIST_QUANTITY; this._P_PLAN_LIST.Update(mPLAN_LIST); } } } if (mWH_CELL_START != null) { bResult = this._S_CellService.CellUpdateStatus(START_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Selected.ToString(), out sResult); if (!bResult) { sResult = string.Format("更新开始货位{0}状态错误\n{1}", mWH_CELL_START.CELL_CODE, sResult); this._P_Base_House.RollBackTransaction(bTrans); return bResult; } } if (mWH_CELL_END != null) { bResult = this._S_CellService.CellUpdateStatus(END_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Selected.ToString(), out sResult); if (!bResult) { sResult = string.Format("更新结束货位{0}状态错误\n{1}", mWH_CELL_END.CELL_CODE, sResult); this._P_Base_House.RollBackTransaction(bTrans); return bResult; } } MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; if (bAutoSendControl) { bResult = this.ManageDownLoad(MANAGE_ID, string.Empty, false, out sResult); if (!bResult) { this._P_Base_House.RollBackTransaction(bTrans); return bResult; } } if (bComplete) { bResult = this.ManageComplete(MANAGE_ID, false, out sResult); if (!bResult) { this._P_Base_House.RollBackTransaction(bTrans); return bResult; } } sResult = string.Format("托盘{0}生成任务成功", mMANAGE_MAIN.STOCK_BARCODE); this._P_Base_House.CommitTransaction(bTrans); } catch (Exception ex) { this._P_Base_House.RollBackTransaction(bTrans); bResult = false; sResult = ex.Message; } return bResult; } /// 完成 /// 完成 /// /// /// 是否独立事务 /// /// public bool ManageComplete(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN, bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(bTrans); mMANAGE_MAIN.MANAGE_END_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); //bResult = this._S_ManageService.RecordCreate(mMANAGE_MAIN.MANAGE_ID, out sResult); if (!bResult) { sResult = string.Format("生成出入库记录错误-{0}", sResult); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; } finally { if (bResult) { this._S_LEDService.ledMessageCreate(mMANAGE_MAIN); this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } /// 管理-异常 /// 管理-异常 /// /// /// /// public bool ManageException(int MANAGE_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("未能找到管理任务索引{0}", MANAGE_ID.ToString()); return bResult; } try { SiaSun.LMS.Model.WH_CELL mWH_CELL_START = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); SiaSun.LMS.Model.WH_CELL mWH_CELL_END = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); this._P_Base_House.BeginTransaction(); if (mWH_CELL_START != null && mWH_CELL_START.CELL_TYPE == Enum.CELL_TYPE.Cell.ToString()) { bResult = this._S_CellService.CellUpdateStatus(mWH_CELL_START.CELL_ID, Enum.CELL_STATUS.Exception.ToString(), Enum.RUN_STATUS.Enable.ToString(), out sResult); if (!bResult) { sResult = string.Format("更新起始位置{0} 状态错误\n", mWH_CELL_START.CELL_CODE.ToString()); this._P_Base_House.RollBackTransaction(); return bResult; } } if (mWH_CELL_END != null && mWH_CELL_END.CELL_TYPE == Enum.CELL_TYPE.Cell.ToString()) { bResult = this._S_CellService.CellUpdateStatus(mWH_CELL_END.CELL_ID, Enum.CELL_STATUS.Exception.ToString(), Enum.RUN_STATUS.Enable.ToString(), out sResult); if (!bResult) { sResult = string.Format("更新目标位置{0} 状态错误\n", mWH_CELL_START.CELL_CODE.ToString()); this._P_Base_House.RollBackTransaction(); return bResult; } } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(mMANAGE_MAIN.MANAGE_ID); if (null == mIO_CONTROL) { sResult = string.Format("未能找到管理任务索引{0}的控制任务", MANAGE_ID.ToString()); this._P_Base_House.RollBackTransaction(); return bResult; } mMANAGE_MAIN.MANAGE_REMARK = mIO_CONTROL.ERROR_TEXT; //mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.ExceptionComplete.ToString(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); this._P_IO_CONTROL.DeleteManageID(mMANAGE_MAIN.MANAGE_ID); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } /// /// 管理-故障 /// /// /// /// public bool ManageError(int MANAGE_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("未能找到管理任务索引{0}", MANAGE_ID.ToString()); return bResult; } try { this._P_Base_House.BeginTransaction(); SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(mMANAGE_MAIN.MANAGE_ID); if (null == mIO_CONTROL) { bResult = false; sResult = string.Format("未能找到管理任务索引{0}的控制任务", MANAGE_ID.ToString()); this._P_Base_House.RollBackTransaction(); return bResult; } mMANAGE_MAIN.MANAGE_REMARK = mIO_CONTROL.ERROR_TEXT; mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Error.ToString() ; this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } return bResult; } /// 管理-取消 /// 管理-取消 /// /// /// /// public bool ManageCancel(int MANAGE_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("未能找到管理任务索引{0}", MANAGE_ID.ToString()); return bResult; } SiaSun.LMS.Model.MANAGE_TYPE mMANAGE_TYPE = this._P_MANAGE_TYPE.GetModelManageTypeCode(mMANAGE_MAIN.MANAGE_TYPE_CODE); if (null == mMANAGE_TYPE) { bResult = false; sResult = string.Format("未能找到管理任务类型{0}", mMANAGE_MAIN.MANAGE_TYPE_CODE); return bResult; } SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(MANAGE_ID); if (null != mIO_CONTROL && !mIO_CONTROL.CONTROL_STATUS.Equals(900)) { bResult = false; sResult = string.Format("存在控制任务{0},先处理控制任务", mIO_CONTROL.CONTROL_ID); return bResult; } try { this._P_Base_House.BeginTransaction(); bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.START_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), out sResult); if (!bResult) { bResult = false; sResult = string.Format("更新起始货位{0}状态错误\n{1}", mMANAGE_MAIN.START_CELL_ID.ToString(), sResult); this._P_Base_House.RollBackTransaction(); return bResult; } bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.END_CELL_ID, string.Empty, SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), out sResult); if (!bResult) { bResult = false; sResult = string.Format("更新终止货位{0}状态错误\n{1}", mMANAGE_MAIN.END_CELL_ID.ToString(), sResult); this._P_Base_House.RollBackTransaction(); return bResult; } if (mMANAGE_TYPE.MANAGE_TYPE_GROUP != "3") { foreach (SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST in this._P_MANAGE_LIST.GetListManageID(MANAGE_ID)) { SiaSun.LMS.Model.PLAN_LIST mPLAN_LIST = this._P_PLAN_LIST.GetModel(mMANAGE_LIST.PLAN_LIST_ID); if (null != mPLAN_LIST) { mPLAN_LIST.PLAN_LIST_ORDERED_QUANTITY -= mMANAGE_LIST.MANAGE_LIST_QUANTITY; this._P_PLAN_LIST.Update(mPLAN_LIST); } } } this._P_IO_CONTROL.DeleteManageID(MANAGE_ID); this._P_MANAGE_DETAIL.DeleteManageID(MANAGE_ID); this._P_MANAGE_LIST.DeleteManageID(MANAGE_ID); this._P_MANAGE_MAIN.Delete(MANAGE_ID); if (bResult) { this._S_LEDService.ledMessageCreate(mMANAGE_MAIN); } this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } finally { } return bResult; } /// 管理-执行 /// 管理-执行 /// /// /// /// public bool ManageExecute(int MANAGE_ID, out string sResult) { bool bResult = true; sResult = string.Empty; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("未能找到管理任务索引{0}", MANAGE_ID.ToString()); return bResult; } try { this._P_Base_House.BeginTransaction(); mMANAGE_MAIN.MANAGE_REMARK = string.Empty; mMANAGE_MAIN.MANAGE_STATUS = Enum.MANAGE_STATUS.Executing.ToString(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); if (!bResult) { sResult = string.Format("任务状态更新错误\n{0}", sResult); this._P_Base_House.RollBackTransaction(); return bResult; } this._P_Base_House.CommitTransaction(); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._P_Base_House.RollBackTransaction(); } finally { if (bResult) { this._S_LEDService.ledMessageCreate(mMANAGE_MAIN); } } this._log.Info(string.Format("任务执行处理完毕{0} {1}", MethodBase.GetCurrentMethod().Name, MANAGE_ID)); return bResult; } /// 管理-下达 控制是否独立事务 /// 管理-下达 控制是否独立事务 /// /// /// /// /// public bool ManageDownLoad(int MANAGE_ID,string START_CELL_CODE, bool bTrans, out string sResult) { bool bResult = true; sResult = string.Empty; int END_CELL_ID =0; SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID); if (null == mMANAGE_MAIN) { bResult = false; sResult = string.Format("未能找到任务{0}", MANAGE_ID.ToString()); return bResult; } SiaSun.LMS.Model.WH_CELL mSTART_CELL = null; if (START_CELL_CODE == string.Empty) { mSTART_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID); if (null == mSTART_CELL) { bResult = false; sResult = string.Format("未能找到起始位置{0}", mSTART_CELL.CELL_CODE); return bResult; } } else { mSTART_CELL = this._P_WH_CELL.GetModel(START_CELL_CODE); if (null == mSTART_CELL) { bResult = false; sResult = string.Format("未能找到起始位置{0}", mSTART_CELL.CELL_CODE); return bResult; } } if (mMANAGE_MAIN.END_CELL_ID.Equals(0)) { //出库任务 if (mSTART_CELL.CELL_TYPE == Enum.CELL_TYPE.Cell.ToString()) { bResult = this._S_CellService.GetOutStation(mSTART_CELL.CELL_ID, out END_CELL_ID, out sResult); if (!bResult) { sResult = string.Format("未找到出库站台\n {0}", sResult); return bResult; } } //入库任务 else { bResult = this._S_CellService.CellInAllocate(mSTART_CELL.CELL_CODE, mMANAGE_MAIN.CELL_MODEL, mMANAGE_MAIN.MANAGE_ID, 1, out END_CELL_ID, out sResult); if (!bResult) { sResult = string.Format("分配货位失败\n {0}", sResult); return bResult; } } mMANAGE_MAIN.START_CELL_ID = mSTART_CELL.CELL_ID; mMANAGE_MAIN.END_CELL_ID = END_CELL_ID; } SiaSun.LMS.Model.WH_CELL mEND_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID); if (null == mEND_CELL) { bResult = false; sResult = string.Format("未能找到终止位置{0}", mEND_CELL.CELL_CODE); return bResult; } //路径校验 bResult = this._P_IO_CONTROL_ROUTE.GetList(mSTART_CELL.DEVICE_CODE, mEND_CELL.DEVICE_CODE).Count > 0; if (!bResult) { sResult = string.Format("{0}-{1}之间无可用路径,请在监控系统中查看设备状态!", mSTART_CELL.CELL_CODE, mEND_CELL.CELL_CODE); return bResult; } try { this._P_Base_House.BeginTransaction(bTrans); SiaSun.LMS.Model.IO_CONTROL mIO_CONTROL = this._P_IO_CONTROL.GetModelManageID(MANAGE_ID); bResult = null == mIO_CONTROL; if (!bResult) { sResult = string.Format("控制任务{0}已经存在!", MANAGE_ID.ToString()); return bResult; } int CONTROL_TASK_TYPE = 0; mIO_CONTROL = new SiaSun.LMS.Model.IO_CONTROL(); string IN_OUT_TYPE = string.Format("{0}-{1}", mSTART_CELL.CELL_TYPE, mEND_CELL.CELL_TYPE).ToLower(); switch (IN_OUT_TYPE) { case "station-cell"://站台-货位-入 CONTROL_TASK_TYPE = Convert.ToInt32(SiaSun.LMS.Enum.CONTROL_TYPE.Up.ToString("d")); mIO_CONTROL.CELL_GROUP = mEND_CELL.LANE_WAY; break; case "cell-station"://货位-站台-出 CONTROL_TASK_TYPE = Convert.ToInt32(SiaSun.LMS.Enum.CONTROL_TYPE.Down.ToString("d")); mIO_CONTROL.CELL_GROUP = mSTART_CELL.LANE_WAY; break; case "cell-cell"://货位-货位-移 CONTROL_TASK_TYPE = Convert.ToInt32(SiaSun.LMS.Enum.CONTROL_TYPE.Move.ToString("d")); break; case "station-station"://站台-站台-移 CONTROL_TASK_TYPE = Convert.ToInt32(SiaSun.LMS.Enum.CONTROL_TYPE.MoveStation.ToString("d")); break; } mIO_CONTROL.RELATIVE_CONTROL_ID = -1; mIO_CONTROL.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mIO_CONTROL.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; mIO_CONTROL.CONTROL_TASK_LEVEL = string.IsNullOrEmpty(mMANAGE_MAIN.MANAGE_LEVEL) ? "0" : mMANAGE_MAIN.MANAGE_LEVEL; mIO_CONTROL.PRE_CONTROL_STATUS = string.Empty; mIO_CONTROL.CONTROL_TASK_TYPE = CONTROL_TASK_TYPE; mIO_CONTROL.START_DEVICE_CODE = mSTART_CELL.CELL_CODE; mIO_CONTROL.END_DEVICE_CODE = mEND_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.CONTROL_REMARK = mMANAGE_MAIN.MANAGE_REMARK; mIO_CONTROL.START_WAREHOUSE_CODE = "1"; mIO_CONTROL.END_WAREHOUSE_CODE = "1"; this._P_IO_CONTROL.Add(mIO_CONTROL); mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.Waiting.ToString(); this._P_MANAGE_MAIN.Update(mMANAGE_MAIN); } catch (Exception ex) { bResult = false; sResult = ex.Message; } finally { if (bResult) { this._P_Base_House.CommitTransaction(bTrans); } else { this._P_Base_House.RollBackTransaction(bTrans); } } return bResult; } public bool updateLedText(int CELL_ID, int LINE_NO, string Text) { bool bResult = true; string sResult = string.Empty; int LED_ID = 0; SiaSun.LMS.Model.WH_CELL wh_cell = this._P_WH_CELL.GetModel(CELL_ID); if (wh_cell == null) { return false; } if (wh_cell.LANE_WAY=="1") { LED_ID=1; } else if (wh_cell.LANE_WAY=="2") { LED_ID = 2; } else if (wh_cell.LANE_WAY == "3") { LED_ID = 3; } else { LED_ID = 4; } SiaSun.LMS.Model.LED_LIST mLED_LIST = this._P_LED_LIST.GetModel(LED_ID, LINE_NO); if (mLED_LIST == null) { bResult = false; sResult = string.Format("设备{0}的显示屏不存在第{1}行,重新生成LED_LIST", LED_ID, LINE_NO); return bResult; } //添加发送内容 mLED_LIST.LINE_TEXT = Text; this._P_LED_LIST.Update(mLED_LIST); return bResult; } public bool ManageInAndroid(MANAGE_MAIN mm, List lManageList, out string sResult) { if (!mm.STOCK_BARCODE.Substring(0, 1).Equals("T")) { return this.Invoke("ManageIn", "ManageCreateMaterial", new object[] { mm, lManageList, true, true, false }, out sResult); } else { return this.Invoke("ManageIn", "ManageCreate", new object[] { mm, lManageList, true, true, false }, out sResult); } } public bool ManageOutAndroid(MANAGE_MAIN mm, List lManageList, out string sResult) { //return this.Invoke("ManageOut", "ManageCreate", new object[] { mm, lManageList, true, true, true }, out sResult); ; return new ManageOut().ManageCreate(mm, lManageList, true, false, true , out sResult); } } }