using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using SiaSun.LMS.Model; namespace SiaSun.LMS.Implement { public class ManageIn:ManageBase { /// /// 生成计划或无计划入库任务 /// 调用界面 ManageBindIn_Plan,ManageBindIn /// /// /// /// /// /// /// /// /// /// /// /// public bool ManageCreate(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN, List lsMANAGE_LIST, bool bTrans,bool bCompleteFlag,bool AutoDownLoad, out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(true); #region 校验 #region 校验容器条码 //if (!string.IsNullOrEmpty(mMANAGE_MAIN.STOCK_BARCODE)) //{ // string STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; // if (STOCK_BARCODE.Trim().Length != 6) // { // bResult = false; // sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE); // return bResult; // } // SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN_CONTAINER = this._P_GOODS_MAIN.GetModel(STOCK_BARCODE.Substring(0, 1).ToUpper()); // if (mGOODS_MAIN_CONTAINER == null) // { // bResult = false; // sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE); // return bResult; // } //} #endregion #region 校验容器库存 if (mMANAGE_MAIN.STOCK_BARCODE != string.Empty && this._S_StorageService.StorageCheck(mMANAGE_MAIN.STOCK_BARCODE, Enum.AREA_TYPE.LiKu.ToString(), out sResult)) { bResult = false; sResult = string.Format("托盘{0}已在立库区", mMANAGE_MAIN.STOCK_BARCODE); return bResult; } #endregion #region 校验托盘库存 SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mMANAGE_MAIN.STOCK_BARCODE); if (null != mSTORAGE_MAIN) { IList lsSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID); if (lsSTORAGE_LIST[0].GOODS_ID == 909) { bResult = false; sResult = string.Format("容器[{0}]已存在空托盘暂存区库存,请用暂存出库功能清空空托盘库存再组盘", mMANAGE_MAIN.STOCK_BARCODE); return bResult; } } #endregion #endregion if (AutoDownLoad) { bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, false, false, out sResult); } if (!bResult) { return bResult; } if (bCompleteFlag) { this._P_MANAGE_MAIN.Add(mMANAGE_MAIN); foreach (Model.MANAGE_LIST item in lsMANAGE_LIST) { item.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; this._P_MANAGE_LIST.Add(item); } bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, false, 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(true); } else { this._P_Base_House.RollBackTransaction(true); } } return bResult; } public bool ManageCreateMaterial(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN, List lsMANAGE_LIST, bool bTrans, bool bCompleteFlag, bool AutoDownLoad, out string sResult) { bool bResult = true; string ssResult = string.Empty; sResult = string.Empty; SiaSun.LMS.Common.Log log = new Common.Log(); try { this._P_Base_House.BeginTransaction(true); #region 校验 #region 校验容器条码 if (!string.IsNullOrEmpty(mMANAGE_MAIN.STOCK_BARCODE)) { string STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; if (STOCK_BARCODE.Trim().Length != 6) { bResult = false; sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE); return bResult; } //SiaSun.LMS.Model.GOODS_MAIN mGOODS_MAIN_CONTAINER = this._P_GOODS_MAIN.GetModel(STOCK_BARCODE.Substring(0, 1).ToUpper()); //if (mGOODS_MAIN_CONTAINER == null) //{ // bResult = false; // sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE); // return bResult; //} } #endregion #region 校验容器库存 //LJC20240110 if (mMANAGE_MAIN.STOCK_BARCODE != string.Empty && this._S_StorageService.StorageCheck(mMANAGE_MAIN.STOCK_BARCODE, Enum.AREA_TYPE.XuNiKu.ToString(), out sResult)) { bResult = false; sResult = string.Format("托盘{0}已在虚拟库区", mMANAGE_MAIN.STOCK_BARCODE); return bResult; } #endregion #region 校验托盘库存 SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mMANAGE_MAIN.STOCK_BARCODE); if (null != mSTORAGE_MAIN) { IList lsSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID); if (lsSTORAGE_LIST[0].GOODS_ID == 909) { bResult = false; sResult = string.Format("容器[{0}]已存在空托盘暂存区库存,请用暂存出库功能清空空托盘库存再组盘", mMANAGE_MAIN.STOCK_BARCODE); return bResult; } } #endregion #endregion if (AutoDownLoad) { bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, false, false, out sResult); } if (!bResult) { return bResult; } if (bCompleteFlag) { this._P_MANAGE_MAIN.Add(mMANAGE_MAIN); foreach (Model.MANAGE_LIST item in lsMANAGE_LIST) { item.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; this._P_MANAGE_LIST.Add(item); } bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, false, out sResult); //新增接口生成库存后,插入新表数据,传明细和新表ID,出库再回传ID和明细 if (bResult) { // S_ERPService erp = new S_ERPService(); // MES_INTERFACE mMES_INTERFACE = new MES_INTERFACE(); // //流水号 // mMES_INTERFACE.STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE; // mMES_INTERFACE.INOUT = "1"; // //批次号 // mMES_INTERFACE.BATCH = lsMANAGE_LIST[0].GOODS_PROPERTY1; // // //型号不传 // mMES_INTERFACE.SPECIFICATION = ""; // mMES_INTERFACE.GOODS_CODE = "1"; // mMES_INTERFACE.GOODS_NAME = "1"; // //供应商 // mMES_INTERFACE.SUPPLY = lsMANAGE_LIST[0].GOODS_PROPERTY3; // //零件号 // mMES_INTERFACE.PART_NO = lsMANAGE_LIST[0].GOODS_PROPERTY4; // mMES_INTERFACE.UNIT = "1"; // mMES_INTERFACE.QUANTITY = lsMANAGE_LIST[0].MANAGE_LIST_QUANTITY; // mMES_INTERFACE.UPDATE_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // mMES_INTERFACE.OUT_TIME = ""; // mMES_INTERFACE.PRODUCT_TIME = ""; // string requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(mMES_INTERFACE); // mMES_INTERFACE.WMS_INFO = requestJson; // mMES_INTERFACE.MES_INFO = ""; // // 插入新表 调用接口 // // this._P_MES_INTERFACE.Add(mMES_INTERFACE); // ////判断数据是否重复 // //Model.MES_INTERFACE tmes = this._P_MES_INTERFACE.GetModelStockbarcode(mMANAGE_MAIN.STOCK_BARCODE); // //if (tmes!= null) // //{ // // sResult = "入库上报时发现已经有该流水号接口数据,先处理数据再进行入库"; // // return false; // //} // //调用MES接口 // //向MES上报入库完成 // bResult = erp.HttpPost(requestJson, out sResult); // //接口调用失败重发 // if (!bResult) // { // sResult = "ERRORMSG:接口调用失败,联系MES维护人员查看二维条码是否有问题:MES消息:" + sResult; // log.SaveLog(sResult); // //Model.MES_INTERFACE_RETRY mMES_INTERFACE_RETRY = new Model.MES_INTERFACE_RETRY(); // //mMES_INTERFACE_RETRY.BIZ_TYPE = "ManageIn"; // //mMES_INTERFACE_RETRY.WHO = "MESRetry"; // //mMES_INTERFACE_RETRY.MESSAGE = requestJson; // //// mMES_INTERFACE_RETRY. = Common.StringUtil.GetDateTime(); // //this._P_MES_INTERFACE_RETRY.Add(mMES_INTERFACE_RETRY); // } // #region 日志 // Model.MES_INTERFACE_LOG mMES_INTERFACE_LOG = new Model.MES_INTERFACE_LOG(); // mMES_INTERFACE_LOG.INTERFACE = "ManageIn"; // mMES_INTERFACE_LOG.IN_MESSAGE = requestJson; // mMES_INTERFACE_LOG.OUT_MESSAGE = sResult; // mMES_INTERFACE_LOG.SENDER = "WMS"; // mMES_INTERFACE_LOG.RECEIVER = "MES"; // mMES_INTERFACE_LOG.TIME_STAMP = Common.StringUtil.GetDateTime(); // this._P_MES_INTERFACE_LOG.Add(mMES_INTERFACE_LOG); // #endregion } } 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(true); } else { this._P_Base_House.RollBackTransaction(true); } } return bResult; } /// /// 任务完成 /// /// /// /// /// public new bool ManageComplete(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); bResult = null != mMANAGE_MAIN; if (!bResult) { sResult = string.Format("管理任务索引[{0}]不存在", MANAGE_ID); return bResult; } #endregion #region 添加库存 bResult = this._S_StorageService.StorageCreate(MANAGE_ID,out sResult); if (!bResult) { return bResult; } #endregion #region 调用基类完成方法 bResult = base.ManageComplete(MANAGE_ID, false,out sResult); if (!bResult) { return bResult; } #endregion #region 删除任务信息 this._P_IO_CONTROL.DeleteManageID(mMANAGE_MAIN.MANAGE_ID); this._P_MANAGE_DETAIL.DeleteManageID(mMANAGE_MAIN.MANAGE_ID); this._P_MANAGE_LIST.DeleteManageID(mMANAGE_MAIN.MANAGE_ID); this._P_MANAGE_MAIN.Delete(mMANAGE_MAIN.MANAGE_ID); #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 ManageCreat_ERP(SiaSun.LMS.Model.ERP mERP,out string sResult) { bool bResult = true; sResult = string.Empty; try { this._P_Base_House.BeginTransaction(true); 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(true); } else { this._P_Base_House.RollBackTransaction(true); } } return bResult; } } }