using System; using System.Linq; using System.Collections.Generic; using System.Text; using System.Data; using System.ServiceModel; using SiaSun.LMS.Model; using System.Reflection; namespace SiaSun.LMS.Implement { [ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)] public partial class S_PDAService : S_BaseService, SiaSun.LMS.Interface.I_PDAService { #region 操作方法 public DataTable GetList(string strSQL) { return base.GetList(strSQL); } public object ExecuteScalar(string strSQL) { return base.ExecuteScalar(strSQL); } public ObjectT GetModel(string statementName, object parameterObject) { return base.GetModel(statementName, parameterObject); } public bool USER_LOGIN(string USER_CODE, string USER_PASSWORD, out SiaSun.LMS.Model.SYS_USER USER) { return base._S_SystemService.USER_LOGIN(USER_CODE, USER_PASSWORD, out USER); } #endregion #region 下达任务 /// /// 手持设备【配盘】:仅配一种物料 /// /// /// /// /// /// /// /// /// public bool ManageCreateBindingPalm(string Opertator, string GOODS_CODE, decimal GOODS_QUANTITY, string STOCK_BARCODE, string FULL_FLAG, out string sResult) { bool bResult = true; sResult = string.Empty; try { #region 生成MANAGE_MAIN SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN(); mMANAGE_MAIN.PLAN_ID = 0; mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty; mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInlocal.ToString(); mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString(); mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE; mMANAGE_MAIN.FULL_FLAG = FULL_FLAG; mMANAGE_MAIN.CELL_MODEL = string.Empty; mMANAGE_MAIN.START_CELL_ID = 0; mMANAGE_MAIN.END_CELL_ID = 0; mMANAGE_MAIN.MANAGE_OPERATOR = Opertator; mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString(); #endregion #region 生成MANAGE_LIST List lsMANAGE_LIST = new List(); SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST(); //mMANAGE_LIST.GOODS_ID = mSTORAGE_LIST.GOODS_ID; //bResult = this._S_GoodsService.GoodsPropertySetValue(mMANAGE_LIST.GOODS_ID, mMANAGE_LIST, mSTORAGE_LIST, out sResult); //if (!bResult) //{ // return bResult; //} DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_ID = '{0}'", GOODS_CODE)); mMANAGE_LIST.PLAN_LIST_ID = 0; //mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID; mMANAGE_LIST.MANAGE_LIST_QUANTITY = GOODS_QUANTITY; mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]); #endregion bResult =this.Invoke("ManageIn", "ManageCreate", new object[] { mMANAGE_MAIN, lsMANAGE_LIST, true,//事务 true,//检查库存 true,//是否完成 false//是否下达任务 }, out sResult); if (!bResult) { sResult = string.Format("组盘任务下达失败\n{0}", sResult); return bResult; } if (bResult) { sResult = string.Format("组盘成功\n{0}", sResult); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } public bool PalletIn(string Opertator, string STOCK_BARCODE, string CELL_CODE, out string sResult) { sResult = string.Empty; bool bResult = true; MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (mANAGE_MAIN != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在管理任务", STOCK_BARCODE); return bResult; } IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE); if (iO_CONTROL != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在控制任务", STOCK_BARCODE); return bResult; } STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (sTORAGE_MAIN != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在库存", STOCK_BARCODE); return bResult; } iO_CONTROL = new IO_CONTROL() { STOCK_BARCODE = STOCK_BARCODE, START_DEVICE_CODE = CELL_CODE, END_DEVICE_CODE = "23", MANAGE_ID = 0, CONTROL_STATUS = 0, CONTROL_TASK_TYPE = 4, CONTROL_TASK_LEVEL = "0", CONTROL_BEGIN_TIME = Common.StringUtil.GetDateTime() }; this._P_IO_CONTROL.Add(iO_CONTROL); sResult = string.Format("组盘成功\n{0}", sResult); return bResult; return bResult; } /// /// 原材料废料回库 /// /// /// /// /// /// public bool ManageCreateWasteIn(string Opertator, string STOCK_BARCODE, string CELL_CODE, out string sResult) { bool bResult = true; sResult = string.Empty; try { MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (mANAGE_MAIN != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在管理任务", STOCK_BARCODE); return bResult; } IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE); if (iO_CONTROL != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在控制任务", STOCK_BARCODE); return bResult; } STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (sTORAGE_MAIN != null) { bResult = false; sResult = string.Format("废料回库任务下达失败\n 托盘条码{0}存在库存", STOCK_BARCODE); return bResult; } #region 生成MANAGE_MAIN SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN(); mMANAGE_MAIN.PLAN_ID = 0; mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty; mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInWaste.ToString(); mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString(); mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE; mMANAGE_MAIN.CELL_MODEL = "1"; mMANAGE_MAIN.START_CELL_ID = 0; mMANAGE_MAIN.END_CELL_ID = 0; mMANAGE_MAIN.MANAGE_OPERATOR = Opertator; mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); #endregion #region 生成MANAGE_LIST List lsMANAGE_LIST = new List(); SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST(); DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_CODE = 'MFLSJX'")); mMANAGE_LIST.PLAN_LIST_ID = 0; //mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID; mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1; mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mMANAGE_LIST.GOODS_PROPERTY1 = "废料"; mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]); #endregion bResult = this.Invoke("ManageIn", "ManageCreate", new object[] { mMANAGE_MAIN, lsMANAGE_LIST, true,//事务 true,//检查库存 true,//是否完成 false//是否下达任务 }, out sResult); if (!bResult) { sResult = string.Format("组盘任务下达失败\n{0}", sResult); return bResult; } if (bResult) { iO_CONTROL = new IO_CONTROL() { STOCK_BARCODE = STOCK_BARCODE, START_DEVICE_CODE = CELL_CODE, END_DEVICE_CODE = "24", MANAGE_ID = 0, CONTROL_STATUS = 0, CONTROL_TASK_TYPE = 4, CONTROL_TASK_LEVEL = "0", CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDate().ToString() }; this._P_IO_CONTROL.Add(iO_CONTROL); sResult = string.Format("组盘成功\n{0}", sResult); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } /// /// 成品生产入库 /// /// /// /// /// /// /// public bool ManageCreateIn(string Opertator, string STOCK_BARCODE, string CELL_CODE, string goods_code, out string sResult) { bool bResult = true; sResult = string.Empty; try { STORAGE_MAIN sTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (sTORAGE_MAIN != null) { bResult = false; sResult = string.Format("已存在库存"); return bResult; } IO_CONTROL iO_CONTROL = this._P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE); if (iO_CONTROL != null) { bResult = false; sResult = string.Format("已存在任务"); return bResult; } MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (mANAGE_MAIN != null) { bResult = false; sResult = string.Format("已存在任务"); return bResult; } #region 生成MANAGE_MAIN SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN(); mMANAGE_MAIN.PLAN_ID = 0; mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty; mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageInReturn.ToString(); mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString(); mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE; mMANAGE_MAIN.CELL_MODEL = "low"; mMANAGE_MAIN.START_CELL_ID = 0; mMANAGE_MAIN.END_CELL_ID = 0; mMANAGE_MAIN.MANAGE_OPERATOR = Opertator; mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDateTime(); #endregion #region 生成MANAGE_LIST List lsMANAGE_LIST = new List(); SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST(); DataTable DT = this.GetList(string.Format(@"SELECT *FROM GOODS_MAIN WHERE GOODS_CODE = '{0}'", goods_code.Split('-')[0])); mMANAGE_LIST.PLAN_LIST_ID = 0; //mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST.STORAGE_LIST_ID; mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1; mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mMANAGE_LIST.GOODS_ID = Convert.ToInt32(DT.Rows[0]["GOODS_ID"]); //批次 mMANAGE_LIST.GOODS_PROPERTY1 = goods_code.Split('-')[2]; //日期/供应商 mMANAGE_LIST.GOODS_PROPERTY2 = goods_code.Split('-')[1]; //包数 mMANAGE_LIST.GOODS_PROPERTY3 = goods_code.Split('-')[3]; mMANAGE_LIST.STORAGE_LIST_ID = 0; lsMANAGE_LIST.Add(mMANAGE_LIST); #endregion bResult = this.Invoke("ManageIn", "ManageCreate", new object[] { mMANAGE_MAIN, lsMANAGE_LIST, true,//事务 true,//检查库存 true,//是否完成 false//是否下达任务 }, out sResult); if (!bResult) { sResult = string.Format("组盘任务下达失败\n{0}", sResult); return bResult; } if (bResult) { IO_CONTROL iO_CONTROL1 = new IO_CONTROL() { STOCK_BARCODE = STOCK_BARCODE, START_DEVICE_CODE = CELL_CODE, END_DEVICE_CODE = "32053", MANAGE_ID = 0, CONTROL_STATUS = 0, CONTROL_TASK_TYPE = 4, CONTROL_TASK_LEVEL = "0", CONTROL_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetDate().ToString() }; this._P_IO_CONTROL.Add(iO_CONTROL1); sResult = string.Format("组盘成功\n{0}", sResult); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } /// /// 容器下架 /// /// /// /// /// /// /// public bool ManageStockOut(int GOODS_ID, decimal MANAGE_LIST_QUANTITY, string END_CELL_CODE, string Opertator, out string sResult) { bool bResult = true; sResult = string.Empty; try { #region 校验终止站台 bResult = !string.IsNullOrEmpty(END_CELL_CODE); if (!bResult) { bResult = false; sResult = string.Format("请输入下架站台编码"); return bResult; } Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_CODE); if (mEND_WH_CELL == null) { bResult = false; sResult = string.Format("下架站台编码不存在"); return bResult; } int END_CELL_ID = mEND_WH_CELL.CELL_ID; #endregion if (MANAGE_LIST_QUANTITY < 1) { bResult = false; sResult = string.Format("请输入大于0的数量"); return bResult; } bResult = new StockOut().ManageCreate(Opertator, Enum.MANAGE_TYPE.StockOut.ToString(), GOODS_ID, string.Empty, MANAGE_LIST_QUANTITY, END_CELL_ID, true, true, out sResult); } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } /// /// 拣选出库 /// /// /// /// /// /// /// /// public bool ManageConfirm(string STOCK_BARCODE, int manage_out_num, string Opertator, out string sResult) { bool bResult = true; sResult = string.Empty; //SiaSun.LMS.Model.PLAN_MAIN mPLAN_MAIN = null; try { #region 校验 #region 校验容器条码格式 bResult = !string.IsNullOrEmpty(STOCK_BARCODE.ToUpper()); if (!bResult) { bResult = false; sResult = string.Format("请输入配盘容器条码"); return bResult; } #endregion #region 原库存列表是否存在 DataTable storage_stock_barcode = this.GetList(string.Format(@"SELECT *FROM V_STORAGE_LIST WHERE STOCK_BARCODE = '{0}' AND AREA_TYPE = 'XuNiKu'", STOCK_BARCODE)); if (storage_stock_barcode.Rows.Count == 0) { bResult = false; sResult = string.Format("所选库存条码{0}不再暂存区", STOCK_BARCODE); return bResult; } #endregion #endregion #region 生成MANAGE_MAIN SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = new Model.MANAGE_MAIN(); mMANAGE_MAIN.PLAN_ID = 0; mMANAGE_MAIN.PLAN_TYPE_CODE = string.Empty; mMANAGE_MAIN.MANAGE_TYPE_CODE = SiaSun.LMS.Enum.MANAGE_TYPE.ManageOut.ToString(); mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.WaitingSend.ToString(); mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE; //mMANAGE_MAIN.FULL_FLAG = FULL_FLAG; mMANAGE_MAIN.CELL_MODEL = string.Empty; mMANAGE_MAIN.START_CELL_ID = 0; mMANAGE_MAIN.END_CELL_ID = 0; mMANAGE_MAIN.MANAGE_OPERATOR = Opertator; mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString(); //this._P_MANAGE_MAIN.Add(mMANAGE_MAIN); #endregion #region 生成MANAGE_LIST List lsMANAGE_LIST = new List(); SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = new Model.MANAGE_LIST(); DataTable MANAGE_LIST_OUT = this.GetList(string.Format(@"SELECT *FROM V_STORAGE_LIST WHERE STOCK_BARCODE = '{0}'", STOCK_BARCODE)); mMANAGE_LIST.PLAN_LIST_ID = 0; mMANAGE_LIST.STORAGE_LIST_ID = Convert.ToInt32(MANAGE_LIST_OUT.Rows[0]["STORAGE_LIST_ID"]); mMANAGE_LIST.MANAGE_LIST_QUANTITY = manage_out_num; mMANAGE_LIST.MANAGE_ID = mMANAGE_MAIN.MANAGE_ID; mMANAGE_LIST.GOODS_ID = Convert.ToInt32(MANAGE_LIST_OUT.Rows[0]["GOODS_ID"]); //mMANAGE_LIST.MANAGE_LIST_REMARK = mSTORAGE_LIST.STORAGE_LIST_REMARK; lsMANAGE_LIST.Add(mMANAGE_LIST); #endregion bResult = new ManageOut().ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, true, true, true, out sResult); if (!bResult) { sResult = string.Format("拣选出库失败\n{0}", sResult); return bResult; } if (bResult) { sResult = string.Format("拣选出库成功\n{0}", sResult); return bResult; } } catch (Exception ex) { bResult = false; sResult = ex.Message; this._log.Fatal(string.Format("调用方法{0}发生异常", MethodBase.GetCurrentMethod().Name), ex); } return bResult; } /// /// 此方法用于原料库计划出库手持出库确认,任务状态必须是Complete /// /// /// /// public bool ManagePlanOutConfirm(string STOCK_BARCODE,out string sResult) { bool bResult = true; sResult = string.Empty; Model.MANAGE_MAIN mANAGE_MAIN = this._P_MANAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE); if (mANAGE_MAIN == null || !mANAGE_MAIN.MANAGE_STATUS.Equals("Complete")) { sResult = string.Format(@"托盘条码:{0}不存在已完成的管理任务",STOCK_BARCODE); bResult = false; return bResult; } IO_CONTROL iO_CONTROL = _P_IO_CONTROL.GetModel_BY_STOCK_BARCODE(STOCK_BARCODE); if (iO_CONTROL == null || iO_CONTROL.CONTROL_STATUS != 999) { sResult = string.Format(@"托盘条码:{0}不存在已完成的控制任务", STOCK_BARCODE); bResult = false; return bResult; } MANAGE_TYPE mMANAGE_TYPE = _P_MANAGE_TYPE.GetModelManageTypeCode(mANAGE_MAIN.MANAGE_TYPE_CODE); bResult = this.Invoke(mMANAGE_TYPE.MANAGE_TYPE_CLASS, "ManageComplete", new object[] { mANAGE_MAIN.MANAGE_ID, true }, out sResult); if (!bResult) { sResult = string.Format("出库确认失败!{0}", sResult); return bResult; } else { sResult = string.Format("出库确认成功"); return bResult; } } #endregion } }