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; 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); } } 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=900"); } /// 任务-申请 /// 任务-申请 /// /// 申请编号 /// 任务编号 /// 返回结果 /// 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 { //if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.Equals("0")) //{ // 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); // 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.CONTROL_ERROR_TEXT = sResult; this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY); this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", 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 校验托盘条码 if (!string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02)) { mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02 = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.TrimEnd('\0'); } //if (mIO_CONTROL_APPLY.CONTROL_APPLY_TYPE == "1") //{ // //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("2") && !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); // // return bResult; // // } // //} //} #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; break; } if (!string.IsNullOrEmpty(mIO_CONTROL_APPLY.STOCK_BARCODE)) { mIO_CONTROL_APPLY.STOCK_BARCODE = mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd('\0'); } if (string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.STOCK_BARCODE) || mIO_CONTROL_APPLY.STOCK_BARCODE.StartsWith("1")) { 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); return bResult; } if (!Common.RegexValid.IsValidate(mIO_CONTROL_APPLY.STOCK_BARCODE, Common.StringUtil.GetConfig("StockCodeCheck"))) { bResult = false; sResult = string.Format("{0} 格式错误", mIO_CONTROL_APPLY.STOCK_BARCODE); 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); return bResult; } STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE); if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1" && (mIO_CONTROL_APPLY.DEVICE_CODE == "11028" || mIO_CONTROL_APPLY.DEVICE_CODE == "11002")) { if (sTORAGE_MAIN != null) { bResult = false; sResult = string.Format("{0} 存在库存", mIO_CONTROL_APPLY.STOCK_BARCODE); 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); AddLog(sResult); return bResult; } else { CreateDiePan(mIO_CONTROL_APPLY); return bResult; } } //如果CONTROL_APPLY_PARA02不为空,说明是自动组盘 if (sTORAGE_MAIN == null && !string.IsNullOrEmpty(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02) && !mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.StartsWith("\0")) { WH_CELL wH_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE); string sGoodsBarcode = mIO_CONTROL_APPLY.CONTROL_APPLY_PARA02.Trim(); string[] strArr = sGoodsBarcode.Split('-'); if (strArr.Length != 7) { bResult = false; sResult = string.Format("物料条码格式错误 {0}", sGoodsBarcode); 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); AddLog(sResult); return bResult; } GOODS_MAIN gOODS_MAIN = this._P_GOODS_MAIN.GetModel(strArr[1]); if (gOODS_MAIN == null) { bResult = false; sResult = string.Format(@"申请物料:{0}不存在", strArr[1]); 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); AddLog(sResult); return bResult; } Model.MANAGE_MAIN mANAGE_MAIN = new Model.MANAGE_MAIN(); Model.MANAGE_LIST mANAGE_LIST = new Model.MANAGE_LIST(); List lsMANAGE_LIST = new List(); //if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" || // gOODS_MAIN.GOODS_CODE == "10100002") if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4") { // 磷酸铁放高层 mANAGE_MAIN.CELL_MODEL = "height"; } else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3") { mANAGE_MAIN.CELL_MODEL = "low"; } 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; } if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" && (gOODS_MAIN.GOODS_CLASS_ID == 3 || gOODS_MAIN.GOODS_CLASS_ID == 6 || gOODS_MAIN.GOODS_CLASS_ID == 7 || gOODS_MAIN.GOODS_CLASS_ID == 8 || gOODS_MAIN.GOODS_CLASS_ID == 9 || gOODS_MAIN.GOODS_CLASS_ID == 10 || gOODS_MAIN.GOODS_CLASS_ID > 10)) { 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 = gOODS_MAIN.GOODS_ID; mANAGE_LIST.MANAGE_ID = 0; mANAGE_LIST.MANAGE_LIST_QUANTITY = Convert.ToDecimal(strArr[5]); mANAGE_LIST.PLAN_LIST_ID = 0; mANAGE_LIST.GOODS_PROPERTY1 = sGoodsBarcode; mANAGE_LIST.GOODS_PROPERTY2 = strArr[0] + "-" + strArr[1] + "-" + strArr[2] + "-" + strArr[4]; mANAGE_LIST.GOODS_PROPERTY3 = strArr[2]; mANAGE_LIST.GOODS_PROPERTY5 = string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03) ? "0" : mIO_CONTROL_APPLY.CONTROL_APPLY_PARA03.TrimStart('-'); //mANAGE_LIST.GOODS_PROPERTY8 = "0"; 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.CONTROL_ERROR_TEXT = sResult; this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY); this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", 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 { SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd()); 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.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; //if (mMANAGE_MAIN.STOCK_BARCODE == mIO_CONTROL_APPLY.STOCK_BARCODE.TrimEnd()) //{ // if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3") // { // mMANAGE_MAIN.CELL_MODEL = "low"; // } // else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4") // { // 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); // 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()}')"); //如果是小料,必须是矮货位,如果上高货位,直接回退 int iGoodsID = this._P_STORAGE_LIST.GetListStorageID(this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE).STORAGE_ID)[0].GOODS_ID; GOODS_MAIN gm = this._P_GOODS_MAIN.GetModel(iGoodsID); if (gm == null) { bResult = false; sResult = string.Format("{0} 未找到物料ID {1}", mIO_CONTROL_APPLY.STOCK_BARCODE, iGoodsID); 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); return bResult; } if (gm.GOODS_CLASS_ID == 3 || gm.GOODS_CLASS_ID == 6 || gm.GOODS_CLASS_ID == 7 || gm.GOODS_CLASS_ID == 8 || gm.GOODS_CLASS_ID == 9 || gm.GOODS_CLASS_ID == 10 || gm.GOODS_CLASS_ID > 10) { if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4") { bResult = false; sResult = string.Format(@"托盘条码:{0}的库存是小料,必须是矮货位,检尺检测超高", mIO_CONTROL_APPLY.STOCK_BARCODE); 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); return bResult; } } //如果是母托盘,并且上报的低货位,则直接删除库存,下达到叠盘 if (gm.GOODS_CLASS_ID == 4 && (mIO_CONTROL_APPLY.DEVICE_CODE == "21006" || mIO_CONTROL_APPLY.DEVICE_CODE == "22003")) { //STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE); if (sTORAGE_MAIN != null) { IList 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 = "13009", 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, CONTROL_TASK_LEVEL = "8" }; this._P_IO_CONTROL.Add(iO_CONTROL); CreateApplyHis(mIO_CONTROL_APPLY); return true; } if (gm.GOODS_CLASS_ID == 2 && (mIO_CONTROL_APPLY.DEVICE_CODE == "21006" || mIO_CONTROL_APPLY.DEVICE_CODE == "22003")) { //STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mIO_CONTROL_APPLY.STOCK_BARCODE); if (sTORAGE_MAIN != null) { IList 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 = mIO_CONTROL_APPLY.DEVICE_CODE == "21006" ? "22005" : "21005", 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, CONTROL_TASK_LEVEL = "8" }; 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(); //if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4" || // gm.GOODS_CODE == "10100002") if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "4") { // 磷酸铁放高层 mMANAGE_MAIN.CELL_MODEL = "height"; } else if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "3") { mMANAGE_MAIN.CELL_MODEL = "low"; } 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); 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.CONTROL_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 "4": { if (string.IsNullOrEmpty(mIO_CONTROL_APPLY.DEVICE_CODE)) { 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); //CreateApplyHis(mIO_CONTROL_APPLY); return false; } //子托盘叠盘机申请 if (mIO_CONTROL_APPLY.DEVICE_CODE.Equals("13012")) { WH_CELL wH_CELL = this._P_WH_CELL.GetModel(mIO_CONTROL_APPLY.DEVICE_CODE); MANAGE_MAIN mANAGE_MAIN = new MANAGE_MAIN(); MANAGE_LIST mANAGE_LIST = new MANAGE_LIST(); List mANAGE_LISTs = new List(); mANAGE_MAIN.STOCK_BARCODE = string.Format("T{0}", DateTime.Now.ToString("yyyyMMddHHmmssffff")); mANAGE_MAIN.CELL_MODEL = "low"; mANAGE_MAIN.END_CELL_ID = 0; mANAGE_MAIN.START_CELL_ID = wH_CELL.CELL_ID; mANAGE_MAIN.MANAGE_BEGIN_TIME = Common.StringUtil.GetDateTime(); mANAGE_MAIN.MANAGE_ID = 0; mANAGE_MAIN.MANAGE_OPERATOR = "管理系统"; mANAGE_MAIN.MANAGE_STATUS = "Waiting"; mANAGE_MAIN.MANAGE_TYPE_CODE = "ManageIn"; mANAGE_MAIN.PLAN_ID = 0; mANAGE_LIST.GOODS_ID = 32780; mANAGE_LIST.MANAGE_LIST_QUANTITY = 8; mANAGE_LIST.PLAN_LIST_ID = 0; mANAGE_LIST.STORAGE_LIST_ID = 0; mANAGE_LISTs.Add(mANAGE_LIST); if (!new ManageIn().ManageCreate(mANAGE_MAIN, mANAGE_LISTs, true, true, false, true, out sResult)) { bResult = false; 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); return bResult; } } //母托盘叠盘机申请 else { string CELL_MODEL = "low"; string STOCK_BARCODE = string.Empty; string AREA_TYPE = string.Empty; int Quantity = 8; 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.CONTROL_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.CONTROL_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 24个出库站台申请 case "3": { IList iO_CONTROLs = this._P_IO_CONTROL.GetModel_BY_END_DEVICE_CODE(mIO_CONTROL_APPLY.DEVICE_CODE); if (iO_CONTROLs.Count > 0) { bResult = false; sResult = mIO_CONTROL_APPLY.CONTROL_APPLY_PARAMETER; mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1; mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = string.Format(@"站台:{0}已经存在任务",mIO_CONTROL_APPLY.DEVICE_CODE); this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY); CreateApplyHis(mIO_CONTROL_APPLY); return bResult; } // FIXME sResult = "功能未实现"; bResult = false; //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' and plan_to_dept = '{0}'",mIO_CONTROL_APPLY.DEVICE_CODE)); //if (dt != null && dt.Rows.Count > 0) //{ // PLAN_MAIN pLAN_MAIN = this._P_PLAN_MAIN.GetModel(Convert.ToInt32(dt.Rows[0]["PLAN_ID"].ToString())); // bResult = new S_ManageService().ManageOutAuto(pLAN_MAIN.PLAN_ID, true, true, false, out sResult); // if (bResult) // { // this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID); // return true; // } // else // { // bResult = false; // mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1; // mIO_CONTROL_APPLY.CONTROL_ERROR_TEXT = sResult; // this._P_IO_CONTROL_APPLY.Update(mIO_CONTROL_APPLY); // CreateApplyHis(mIO_CONTROL_APPLY); // return bResult; // } //} break; } #endregion } if (!bResult) { mIO_CONTROL_APPLY.APPLY_TASK_STATUS = 1; mIO_CONTROL_APPLY.CONTROL_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; //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); //} this.CreateApplyExceptionTask(mIO_CONTROL_APPLY, "111", sResult); } else { //写历史 this.CreateApplyHis(mIO_CONTROL_APPLY); } AddLog(sResult); } else { //生成任务成功后,删除该任务 AddLog($"{mIO_CONTROL_APPLY.STOCK_BARCODE} {mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01}"); this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID); } } catch (Exception ex) { sResult = ex.Message; this.AddLog(sResult); } } return bResult; } /// /// 生成申请历史 /// /// 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.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()); } } /// 监视控制任务,处理所有完成的控制任务 /// 监视控制任务,处理所有完成的控制任务 /// 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 == 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; } } } } /// 更改管理任务状态 /// 更改管理任务状态 /// 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; } /// 任务-反转 /// 任务-反转 /// public 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); string sTemp = string.Empty; this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, ExceptionMessage, out sTemp); //if ((mIO_CONTROL_APPLY.DEVICE_CODE == "11002" || // mIO_CONTROL_APPLY.DEVICE_CODE == "11028") && // !string.IsNullOrWhiteSpace(ExceptionMessage) && // (ExceptionMessage.Contains("无库存请组盘") || // ExceptionMessage.Contains("托盘条码识别失败"))) //{ //} //else if (!string.IsNullOrWhiteSpace(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) && Convert.ToInt32(mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01) < 10 && (mIO_CONTROL_APPLY.DEVICE_CODE == "11002" || mIO_CONTROL_APPLY.DEVICE_CODE == "11028" || mIO_CONTROL_APPLY.DEVICE_CODE == "21005" || mIO_CONTROL_APPLY.DEVICE_CODE == "21006" || mIO_CONTROL_APPLY.DEVICE_CODE == "22003")) { 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; //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)); mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE; if (mIO_CONTROL_APPLY.DEVICE_CODE == "11002") { mIO_CONTROL.END_DEVICE_CODE = "11001"; } else if(mIO_CONTROL_APPLY.DEVICE_CODE == "11028") { mIO_CONTROL.END_DEVICE_CODE = "11031"; } else if (mIO_CONTROL_APPLY.DEVICE_CODE == "21005") { mIO_CONTROL.END_DEVICE_CODE = "21005"; } else if (mIO_CONTROL_APPLY.DEVICE_CODE == "21006") { mIO_CONTROL.END_DEVICE_CODE = "21006"; } else if (mIO_CONTROL_APPLY.DEVICE_CODE == "22003") { mIO_CONTROL.END_DEVICE_CODE = "22005"; } 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"; mIO_CONTROL.ERROR_TEXT = ExceptionMessage; bool bOk = true; IList 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) { this._P_IO_CONTROL.Add(mIO_CONTROL); } } this._P_Base_House.CommitTransaction(); } catch (Exception ex) { this._P_Base_House.RollBackTransaction(); } } public void CreateDiePan(Model.IO_CONTROL_APPLY mIO_CONTROL_APPLY) { try { this._P_Base_House.BeginTransaction(); this._P_IO_CONTROL_APPLY.Delete(mIO_CONTROL_APPLY.CONTROL_APPLY_ID); if (mIO_CONTROL_APPLY.CONTROL_APPLY_PARA01 == "1" && (mIO_CONTROL_APPLY.DEVICE_CODE == "11028" || mIO_CONTROL_APPLY.DEVICE_CODE == "11002")) { string sTemp = string.Empty; this._S_LEDService.AddLedLineTxt(mIO_CONTROL_APPLY.DEVICE_CODE, 2, string.Format("{0} 叠盘", mIO_CONTROL_APPLY.STOCK_BARCODE), out sTemp); 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; //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)); mIO_CONTROL.START_DEVICE_CODE = mIO_CONTROL_APPLY.DEVICE_CODE; mIO_CONTROL.END_DEVICE_CODE = "11021"; 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(); } } /// 计划-轮询 /// 计划-轮询 /// /// 申请计划编号 /// 计划编号 /// 返回结果 /// 轮询标志 /// 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_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_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; } } } }