You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
930 lines
31 KiB
930 lines
31 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Reflection;
|
|
|
|
namespace SiaSun.LMS.Implement
|
|
{
|
|
|
|
public class StockIn:ManageBase
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
/// 生成容器上架任务
|
|
/// ManageStockUp.XAML
|
|
/// </summary>
|
|
/// <param name="mMANAGE_MAIN"></param>
|
|
/// <param name="lsMANAGE_LIST"></param>
|
|
/// <param name="bTrans"></param>
|
|
/// <param name="bAutoSendControl"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public new bool ManageCreate(SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN,
|
|
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST,
|
|
bool bTrans,
|
|
bool bCompleteFlag,
|
|
bool bAutoSendControl,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
sResult = string.Empty;
|
|
|
|
try
|
|
{
|
|
//ServiceReference1.I_ERPServiceClient i_ERPServiceClient = new ServiceReference1.I_ERPServiceClient();
|
|
//i_ERPServiceClient.HelloWorld();
|
|
this._P_Base_House.BeginTransaction(bTrans);
|
|
#region 校验
|
|
|
|
#region 校验上架容器条码
|
|
|
|
string STOCK_BARCODE = mMANAGE_MAIN.STOCK_BARCODE;
|
|
|
|
if (string.IsNullOrEmpty(STOCK_BARCODE))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("请输入容器条码");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
//if (STOCK_BARCODE.Trim().Length != 6)
|
|
//{
|
|
// bResult = false;
|
|
|
|
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
|
|
|
|
// return bResult;
|
|
//}
|
|
|
|
//S:钢货笼,T:钢托盘,B:塑料周转箱
|
|
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;
|
|
}
|
|
|
|
if (mGOODS_MAIN_CONTAINER.GOODS_ID != lsMANAGE_LIST[0].GOODS_ID)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("容器条码[{0}]与所选容器类型不匹配", STOCK_BARCODE);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 校验托盘库存
|
|
|
|
SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
|
|
|
|
if (null != mSTORAGE_MAIN)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("容器[{0}]已存在库存", STOCK_BARCODE);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
//this._P_Base_House.BeginTransaction(bTrans);
|
|
#region 校验起始站台
|
|
|
|
SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.START_CELL_ID);
|
|
|
|
|
|
#endregion
|
|
#endregion
|
|
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);
|
|
return bResult;
|
|
}
|
|
#region 获得入库货位
|
|
|
|
if (bAutoSendControl)
|
|
{
|
|
if (mMANAGE_MAIN.END_CELL_ID == 0)
|
|
{
|
|
int END_CELL_ID = 0;
|
|
|
|
bResult = this._S_CellService.CellGetIn(0, 0, mSTART_WH_CELL.CELL_ID, SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString(), SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), mMANAGE_MAIN.CELL_MODEL, "0",mMANAGE_MAIN.STOCK_BARCODE, out END_CELL_ID, out sResult);
|
|
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
mMANAGE_MAIN.END_CELL_ID = END_CELL_ID;
|
|
}
|
|
else
|
|
{
|
|
#region 校验终止货位
|
|
|
|
Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(mMANAGE_MAIN.END_CELL_ID);
|
|
|
|
if (mEND_WH_CELL == null)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("未找到终止货位索引[{0}]", mMANAGE_MAIN.END_CELL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.CELL_STATUS.Equals(Enum.CELL_STATUS.Nohave.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]货位状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.CELL_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.RUN_STATUS.Equals(Enum.RUN_STATUS.Enable.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]运行状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.RUN_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 下达任务
|
|
|
|
bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, bAutoSendControl, bTrans, out sResult);
|
|
|
|
|
|
#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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成【空盘上架】任务 不生成暂存区库存直接入库
|
|
/// </summary>
|
|
/// <param name="STOCK_BARCODE">容器条码</param>
|
|
/// <param name="START_CELL_ID">起始站台索引【不能为0】</param>
|
|
/// <param name="END_CELL_ID">终止货位索引</param>
|
|
/// <param name="CELL_MODEL">货位规格</param>
|
|
/// <param name="bAutoSendControl">是否下达控制任务</param>
|
|
/// <param name="bTrans">是否独立事务</param>
|
|
/// <param name="Opertator">操作者</param>
|
|
/// <returns></returns>
|
|
public bool ManageCreate(string STOCK_BARCODE,
|
|
int START_CELL_ID,
|
|
int END_CELL_ID,
|
|
string CELL_MODEL,
|
|
string COUNT,
|
|
bool bAutoSendControl,
|
|
bool bTrans,
|
|
string Opertator,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = null;
|
|
|
|
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = null;
|
|
|
|
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
|
|
|
|
try
|
|
{
|
|
#region 校验
|
|
|
|
#region 校验上架容器条码
|
|
|
|
if (string.IsNullOrEmpty(STOCK_BARCODE))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("请输入容器条码");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
//if (STOCK_BARCODE.Trim().Length != 6)
|
|
//{
|
|
// bResult = false;
|
|
|
|
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
|
|
|
|
// return bResult;
|
|
//}
|
|
|
|
//T:普通托盘
|
|
//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 校验托盘库存
|
|
|
|
SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
|
|
|
|
//if (mSTORAGE_MAIN != null)
|
|
//{
|
|
// bResult = false;
|
|
|
|
// sResult = string.Format("容器[{0}]不是空容器,或已有库存", STOCK_BARCODE);
|
|
|
|
// return bResult;
|
|
//}
|
|
if (this._S_StorageService.StorageCheck(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.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(START_CELL_ID);
|
|
|
|
if (mSTART_WH_CELL == null)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置索引[{0}]不存在", START_CELL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (mSTART_WH_CELL.CELL_INOUT.Equals(SiaSun.LMS.Enum.CELL_INOUT.Out.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置[{0}]入出类型[{1}]不合法", mSTART_WH_CELL.CELL_NAME, mSTART_WH_CELL.CELL_INOUT);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mSTART_WH_CELL.CELL_TYPE.Equals(Enum.CELL_TYPE.Station.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置[{0}]类型[{1}]不合法", mSTART_WH_CELL.CELL_NAME, mSTART_WH_CELL.CELL_TYPE);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 获得入库货位
|
|
|
|
if (!bAutoSendControl)
|
|
{
|
|
if (END_CELL_ID == 0)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("不关联调度的上架任务,必须指定终止位置");
|
|
|
|
return bResult;
|
|
}
|
|
}
|
|
|
|
if (END_CELL_ID == 0)
|
|
{
|
|
bResult = this._S_CellService.CellGetIn(0, 0, mSTART_WH_CELL.CELL_ID, SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString(), SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), CELL_MODEL,"0", STOCK_BARCODE, out END_CELL_ID, out sResult);
|
|
//if (bResult)
|
|
//{
|
|
// SiaSun.LMS.Model.WH_CELL mWH_CELL1 = new Model.WH_CELL();
|
|
// mWH_CELL1 = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mWH_CELL1.LOCK_CELL_ID = STOCK_BARCODE;
|
|
// this._P_WH_CELL.Update(mWH_CELL1);
|
|
|
|
//}
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
#region 校验终止货位
|
|
|
|
Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
if (mEND_WH_CELL == null)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("未找到终止货位索引[{0}]", END_CELL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.CELL_STATUS.Equals(Enum.CELL_STATUS.Nohave.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]货位状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.CELL_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.RUN_STATUS.Equals(Enum.RUN_STATUS.Enable.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]运行状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.RUN_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
Model.WH_AREA mEND_WH_AREA = this._P_WH_AREA.GetModel(mEND_WH_CELL.AREA_ID);
|
|
|
|
bResult = mEND_WH_AREA.AREA_GROUP.Contains(STOCK_BARCODE.Substring(0, 1));
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = string.Format("上架容器[{0}]不允许放在终止货位[{1}]所在区域[{2}]", STOCK_BARCODE, mEND_WH_CELL.CELL_NAME, mEND_WH_AREA.AREA_NAME);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 下达任务
|
|
|
|
#region 生成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.StockIn.ToString();
|
|
|
|
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.Waiting.ToString();
|
|
|
|
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
|
|
|
|
mMANAGE_MAIN.FULL_FLAG = Enum.FULL_FLAG.PART.ToString("d");
|
|
|
|
mMANAGE_MAIN.CELL_MODEL = CELL_MODEL;
|
|
|
|
mMANAGE_MAIN.START_CELL_ID = START_CELL_ID;
|
|
|
|
mMANAGE_MAIN.END_CELL_ID = END_CELL_ID;
|
|
|
|
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
|
|
|
|
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString();
|
|
|
|
#endregion
|
|
|
|
#region 生成MANAGE_LIST
|
|
|
|
mMANAGE_LIST = new Model.MANAGE_LIST();
|
|
|
|
mMANAGE_LIST.GOODS_ID = 909;
|
|
|
|
mMANAGE_LIST.PLAN_LIST_ID = 0;
|
|
if(null==mSTORAGE_MAIN)
|
|
{
|
|
sResult = string.Format("找不到库存[{0}]", mSTORAGE_MAIN.STOCK_BARCODE);
|
|
|
|
return bResult;
|
|
}
|
|
IList<SiaSun.LMS.Model.STORAGE_LIST> mSTORAGE_LIST = this._P_STORAGE_LIST.GetListStorageID(mSTORAGE_MAIN.STORAGE_ID);
|
|
if (null != mSTORAGE_LIST)
|
|
{
|
|
mMANAGE_LIST.STORAGE_LIST_ID = mSTORAGE_LIST[0].STORAGE_LIST_ID;
|
|
}
|
|
else
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("找不到库存明细[{0}]", mSTORAGE_MAIN.STOCK_BARCODE);
|
|
|
|
return bResult;
|
|
}
|
|
///mMANAGE_LIST.STORAGE_LIST_ID = 0;
|
|
|
|
mMANAGE_LIST.MANAGE_LIST_QUANTITY = mSTORAGE_LIST[0].STORAGE_LIST_QUANTITY;
|
|
//托盘跺上的数量
|
|
mMANAGE_LIST.GOODS_PROPERTY1 = COUNT;
|
|
|
|
mMANAGE_LIST.MANAGE_LIST_REMARK = string.Empty;
|
|
|
|
lsMANAGE_LIST.Add(mMANAGE_LIST);
|
|
|
|
#endregion
|
|
|
|
bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, bAutoSendControl, bTrans, out sResult);
|
|
|
|
//直接报完成
|
|
if ((!bAutoSendControl) && bResult)
|
|
{
|
|
bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, bTrans, out sResult);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = ex.Message;
|
|
|
|
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生成【空盘上架】任务 不生成暂存区库存直接入库
|
|
/// </summary>
|
|
/// <param name="STOCK_BARCODE">容器条码</param>
|
|
/// <param name="START_CELL_ID">起始站台索引【不能为0】</param>
|
|
/// <param name="END_CELL_ID">终止货位索引</param>
|
|
/// <param name="CELL_MODEL">货位规格</param>
|
|
/// <param name="bAutoSendControl">是否下达控制任务</param>
|
|
/// <param name="bTrans">是否独立事务</param>
|
|
/// <param name="Opertator">操作者</param>
|
|
/// <returns></returns>
|
|
public bool ManageCreateBind(string STOCK_BARCODE,
|
|
int START_CELL_ID,
|
|
int END_CELL_ID,
|
|
string CELL_MODEL,
|
|
string COUNT,
|
|
bool bAutoSendControl,
|
|
bool bTrans,
|
|
string Opertator,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = null;
|
|
|
|
SiaSun.LMS.Model.MANAGE_LIST mMANAGE_LIST = null;
|
|
|
|
List<SiaSun.LMS.Model.MANAGE_LIST> lsMANAGE_LIST = new List<SiaSun.LMS.Model.MANAGE_LIST>();
|
|
|
|
try
|
|
{
|
|
#region 校验
|
|
|
|
#region 校验上架容器条码
|
|
|
|
if (string.IsNullOrEmpty(STOCK_BARCODE))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("请输入容器条码");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
//if (STOCK_BARCODE.Trim().Length != 6)
|
|
//{
|
|
// bResult = false;
|
|
|
|
// sResult = string.Format("容器条码[{0}]不合法", STOCK_BARCODE);
|
|
|
|
// return bResult;
|
|
//}
|
|
|
|
////T:普通托盘
|
|
//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 校验托盘库存
|
|
|
|
//SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(STOCK_BARCODE);
|
|
|
|
//if (mSTORAGE_MAIN != null)
|
|
//{
|
|
// bResult = false;
|
|
|
|
// sResult = string.Format("容器[{0}]不是空容器,或已有库存", STOCK_BARCODE);
|
|
|
|
// return bResult;
|
|
//}
|
|
|
|
#endregion
|
|
|
|
#region 校验起始站台
|
|
|
|
SiaSun.LMS.Model.WH_CELL mSTART_WH_CELL = this._P_WH_CELL.GetModel(START_CELL_ID);
|
|
|
|
if (mSTART_WH_CELL == null)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置索引[{0}]不存在", START_CELL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (mSTART_WH_CELL.CELL_INOUT.Equals(SiaSun.LMS.Enum.CELL_INOUT.Out.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置[{0}]入出类型[{1}]不合法", mSTART_WH_CELL.CELL_NAME, mSTART_WH_CELL.CELL_INOUT);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mSTART_WH_CELL.CELL_TYPE.Equals(Enum.CELL_TYPE.Station.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("起始位置[{0}]类型[{1}]不合法", mSTART_WH_CELL.CELL_NAME, mSTART_WH_CELL.CELL_TYPE);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 获得入库货位
|
|
|
|
if (!bAutoSendControl)
|
|
{
|
|
if (END_CELL_ID == 0)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("不关联调度的上架任务,必须指定终止位置");
|
|
|
|
return bResult;
|
|
}
|
|
}
|
|
|
|
if (END_CELL_ID == 0)
|
|
{
|
|
///大连托盘即可入翻转,也可以入普通
|
|
bResult = this._S_CellService.CellGetIn(0, 0, mSTART_WH_CELL.CELL_ID, SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString(), SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), CELL_MODEL, "", STOCK_BARCODE, out END_CELL_ID, out sResult);
|
|
//if (bResult)
|
|
//{
|
|
// SiaSun.LMS.Model.WH_CELL mWH_CELL1 = new Model.WH_CELL();
|
|
// mWH_CELL1 = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mWH_CELL1.LOCK_CELL_ID = STOCK_BARCODE;
|
|
// this._P_WH_CELL.Update(mWH_CELL1);
|
|
|
|
//}
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
#region 校验终止货位
|
|
|
|
Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
if (mEND_WH_CELL == null)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("未找到终止货位索引[{0}]", END_CELL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.CELL_STATUS.Equals(Enum.CELL_STATUS.Nohave.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]货位状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.CELL_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (!mEND_WH_CELL.RUN_STATUS.Equals(Enum.RUN_STATUS.Enable.ToString()))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("终止货位[{0}]运行状态[{1}]不合法", mEND_WH_CELL.CELL_NAME, mEND_WH_CELL.RUN_STATUS);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
Model.WH_AREA mEND_WH_AREA = this._P_WH_AREA.GetModel(mEND_WH_CELL.AREA_ID);
|
|
|
|
bResult = mEND_WH_AREA.AREA_GROUP.Contains(STOCK_BARCODE.Substring(0, 1));
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = string.Format("上架容器[{0}]不允许放在终止货位[{1}]所在区域[{2}]", STOCK_BARCODE, mEND_WH_CELL.CELL_NAME, mEND_WH_AREA.AREA_NAME);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 下达任务
|
|
|
|
#region 生成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.StockIn.ToString();
|
|
|
|
mMANAGE_MAIN.MANAGE_STATUS = SiaSun.LMS.Enum.MANAGE_STATUS.Waiting.ToString();
|
|
|
|
mMANAGE_MAIN.STOCK_BARCODE = STOCK_BARCODE;
|
|
|
|
mMANAGE_MAIN.FULL_FLAG = Enum.FULL_FLAG.PART.ToString("d");
|
|
|
|
mMANAGE_MAIN.CELL_MODEL = CELL_MODEL;
|
|
|
|
mMANAGE_MAIN.START_CELL_ID = START_CELL_ID;
|
|
|
|
mMANAGE_MAIN.END_CELL_ID = END_CELL_ID;
|
|
|
|
mMANAGE_MAIN.MANAGE_OPERATOR = Opertator;
|
|
|
|
mMANAGE_MAIN.MANAGE_BEGIN_TIME = SiaSun.LMS.Common.StringUtil.GetCurDateTimeString();
|
|
|
|
#endregion
|
|
|
|
#region 生成MANAGE_LIST
|
|
|
|
mMANAGE_LIST = new Model.MANAGE_LIST();
|
|
|
|
mMANAGE_LIST.GOODS_ID = 909;
|
|
|
|
mMANAGE_LIST.PLAN_LIST_ID = 0;
|
|
|
|
mMANAGE_LIST.STORAGE_LIST_ID = 0;
|
|
|
|
mMANAGE_LIST.MANAGE_LIST_QUANTITY = 1;
|
|
mMANAGE_LIST.GOODS_PROPERTY1 = COUNT;
|
|
|
|
mMANAGE_LIST.MANAGE_LIST_REMARK = string.Empty;
|
|
|
|
lsMANAGE_LIST.Add(mMANAGE_LIST);
|
|
|
|
#endregion
|
|
|
|
bResult = base.ManageCreate(mMANAGE_MAIN, lsMANAGE_LIST, bAutoSendControl, bTrans, out sResult);
|
|
|
|
//直接报完成
|
|
if ((!bAutoSendControl) && bResult)
|
|
{
|
|
bResult = this.ManageComplete(mMANAGE_MAIN.MANAGE_ID, bTrans, out sResult);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = ex.Message;
|
|
|
|
this._log.Fatal(string.Format("调用方法{0}发生异常。", MethodBase.GetCurrentMethod().Name), ex);
|
|
}
|
|
if (bResult)
|
|
{
|
|
|
|
}
|
|
return bResult;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 任务完成
|
|
/// </summary>
|
|
/// <param name="MANAGE_ID"></param>
|
|
/// <param name="bTrans"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public new bool ManageComplete(int MANAGE_ID,
|
|
bool bTrans,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
////ServiceReference
|
|
// localhost.ManageBase aa = new localhost.ManageBase();
|
|
//aa.
|
|
// this.
|
|
localhost1.S_PDAService aa = new localhost1.S_PDAService();
|
|
//aaaa. aaaaa = new aaaa.S_BaseService();
|
|
|
|
// sResult = string.Empty;
|
|
SiaSun.LMS.Model.MANAGE_MAIN mmMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID);
|
|
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.ToString());
|
|
|
|
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(999)))
|
|
{
|
|
bResult = false;
|
|
|
|
sResult = string.Format("控制任务索引[{0}]的控制任务未完成", mIO_CONTROL.CONTROL_ID);
|
|
|
|
return bResult;
|
|
}
|
|
|
|
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);
|
|
SiaSun.LMS.Model.STORAGE_MAIN mSTORAGE_MAIN = this._P_STORAGE_MAIN.GetModelStockBarcode(mMANAGE_MAIN.STOCK_BARCODE);
|
|
|
|
|
|
#endregion
|
|
|
|
#region 更新库存-生成容器库存
|
|
if (null==mSTORAGE_MAIN)
|
|
{
|
|
bResult = this._S_StorageService.StorageCreate(MANAGE_ID, out sResult);
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
bResult = this._S_StorageService.StorageMove(MANAGE_ID, out sResult);
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region 更新货位状态
|
|
|
|
if (mSTART_WH_CELL !=null)
|
|
{
|
|
bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.START_CELL_ID, SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString(), SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(),out sResult);
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
}
|
|
|
|
if (mEND_WH_CELL != null)
|
|
{
|
|
bResult = this._S_CellService.CellUpdateStatus(mMANAGE_MAIN.END_CELL_ID, SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString(), SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString(), out sResult);
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 调用基类-更新管理任务;更新计划;生成入出库记录
|
|
|
|
bResult = this._S_ManageService.ManageComplete(MANAGE_ID, false, out sResult);
|
|
|
|
if (!bResult)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
//this.updateLedText(mMANAGE_MAIN.START_CELL_ID, 2, "条码:" + mMANAGE_MAIN.STOCK_BARCODE);
|
|
// this.updateLedText(mMANAGE_MAIN.START_CELL_ID, 3, "货位:" + mMANAGE_MAIN.END_CELL_ID.ToString());
|
|
#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);
|
|
if (mmMANAGE_MAIN != null)
|
|
{
|
|
this.updateLedText(mmMANAGE_MAIN.START_CELL_ID, 1, "空盘上架完成");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this._P_Base_House.RollBackTransaction(bTrans);
|
|
}
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
}
|
|
}
|