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.
1656 lines
79 KiB
1656 lines
79 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Text;
|
|
using System.ServiceModel;
|
|
using System.Linq;
|
|
using SiaSun.LMS.Model;
|
|
using System.Net;
|
|
|
|
namespace SiaSun.LMS.Implement
|
|
{
|
|
[ServiceBehavior(IncludeExceptionDetailInFaults = true, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple, MaxItemsInObjectGraph = int.MaxValue)]
|
|
public partial class S_CellService : SiaSun.LMS.Implement.S_BaseService, SiaSun.LMS.Interface.I_CellService
|
|
{
|
|
public S_CellService()
|
|
{
|
|
}
|
|
|
|
/// <summary>获得库房
|
|
/// 获得库房
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE_CODE">库房编码</param>
|
|
/// <returns>返回值</returns>
|
|
public DataTable WAREHOUSE_GetList(int USER_ID, string WAREHOUSE_TYPE)
|
|
{
|
|
DataTable dt = this.GetList(string.Format(@"SELECT WAREHOUSE_ID,WAREHOUSE_NAME FROM WH_WAREHOUSE
|
|
WHERE {0} {1}",
|
|
USER_ID == 0 ? "1=1" : string.Format(@"(WAREHOUSE_ID IN(SELECT RELATION_ID2
|
|
FROM V_SYS_RELATION WHERE RELATION_CODE='SYS_USER-WH_WAREHOUSE'
|
|
AND RELATION_ID1= {0}))", USER_ID),
|
|
WAREHOUSE_TYPE == string.Empty ? string.Empty : string.Format("AND WAREHOUSE_TYPE = '{0}'", WAREHOUSE_TYPE)));
|
|
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>获得库区
|
|
/// 获得库区
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE_ID">库房编号</param>
|
|
/// <param name="AREA_TYPE">库区类型</param>
|
|
/// <returns>返回值</returns>
|
|
public DataTable AREA_GetList(int WAREHOUSE_ID, string AREA_TYPE)
|
|
{
|
|
string sSQL = "SELECT AREA_ID,AREA_CODE,AREA_NAME,AREA_TYPE FROM WH_AREA WHERE 1=1 {0} {1}";
|
|
|
|
DataTable dt = this.GetList(string.Format(sSQL,
|
|
(0 != WAREHOUSE_ID) ? string.Empty : string.Format(" AND WAREHOUSE_ID = {0}", WAREHOUSE_ID.ToString()),
|
|
string.IsNullOrEmpty(AREA_TYPE) ? string.Empty : string.Format(" AND AREA_TYPE = '{0}'", AREA_TYPE)));
|
|
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>获得排
|
|
/// 获得排没有area_id区分
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE_ID">库房编号</param>
|
|
/// <param name="AREA_ID">库区编号</param>
|
|
/// <param name="LOGIC_ID">存储区编号</param>
|
|
/// <param name="CELL_TYPE">货位类型</param>
|
|
/// <param name="CELL_INOUT">出入库方向</param>
|
|
/// <returns></returns>
|
|
public DataTable CELL_Z_GetList(int WAREHOUSE_ID)
|
|
{
|
|
string sSQL = "SELECT * FROM V_WH_CELL_Z WHERE 1=1 {0} ORDER BY CELL_Z";
|
|
|
|
DataTable dt = this.GetList(string.Format(sSQL,
|
|
(0 == WAREHOUSE_ID) ? string.Empty : string.Format(" AND WAREHOUSE_ID = {0}", WAREHOUSE_ID.ToString())
|
|
));
|
|
|
|
return dt;
|
|
}
|
|
|
|
/// <summary>获得排
|
|
/// 获得排有area_id区分
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE_ID">库房编号</param>
|
|
/// <param name="AREA_ID">库区编号</param>
|
|
/// <param name="LOGIC_ID">存储区编号</param>
|
|
/// <param name="CELL_TYPE">货位类型</param>
|
|
/// <param name="CELL_INOUT">出入库方向</param>
|
|
/// <returns></returns>
|
|
public DataTable CELL_Z_GetList_AREA(int WAREHOUSE_ID, int AREA_ID)
|
|
{
|
|
string sSQL = "SELECT * FROM V_WH_CELL_Z WHERE 1=1 {0} {1} ORDER BY CELL_Z";
|
|
|
|
DataTable dt = this.GetList(string.Format(sSQL,
|
|
(0 == WAREHOUSE_ID) ? string.Empty : string.Format(" AND WAREHOUSE_ID = {0}", WAREHOUSE_ID.ToString()),
|
|
(0 == AREA_ID) ? string.Empty : string.Format(" AND AREA_ID = {0}", AREA_ID.ToString())
|
|
));
|
|
|
|
return dt;
|
|
}
|
|
|
|
public IList<SiaSun.LMS.Model.WH_CELL> CELL_GetList_Z(int WAREHOUSE_ID, string CELL_Z)
|
|
{
|
|
return this._P_WH_CELL.CELL_GetList_Z(WAREHOUSE_ID, CELL_Z);
|
|
}
|
|
|
|
|
|
|
|
public bool CellInit()
|
|
{
|
|
bool bResult = true;
|
|
|
|
try
|
|
{
|
|
IList<SiaSun.LMS.Model.WH_DESCRIPTION> lsWH_DESCRIPTION = this._P_WH_DESCRIPTION.GetList();
|
|
|
|
foreach (SiaSun.LMS.Model.WH_DESCRIPTION mWH_DESCRIPTION in lsWH_DESCRIPTION)
|
|
{
|
|
if (mWH_DESCRIPTION.CELL_TYPE == SiaSun.LMS.Enum.CELL_TYPE.Cell.ToString())
|
|
bResult = this.CellCreate(mWH_DESCRIPTION.WAREHOUSE_ID,
|
|
mWH_DESCRIPTION.AREA_ID,
|
|
mWH_DESCRIPTION.LOGIC_ID,
|
|
mWH_DESCRIPTION.START_Z,
|
|
mWH_DESCRIPTION.END_Z,
|
|
mWH_DESCRIPTION.START_X,
|
|
mWH_DESCRIPTION.END_X,
|
|
mWH_DESCRIPTION.START_Y,
|
|
mWH_DESCRIPTION.END_Y,
|
|
mWH_DESCRIPTION.DEVICE_CODE,
|
|
mWH_DESCRIPTION.LANE_WAY,
|
|
mWH_DESCRIPTION.SHELF_TYPE,
|
|
mWH_DESCRIPTION.SHELF_NEIGHBOUR,
|
|
mWH_DESCRIPTION.CELL_MODEL,
|
|
mWH_DESCRIPTION.CELL_LOGICAL_NAME,
|
|
mWH_DESCRIPTION.CELL_INOUT,
|
|
mWH_DESCRIPTION.CELL_TYPE,
|
|
mWH_DESCRIPTION.CELL_STORAGE_TYPE,
|
|
mWH_DESCRIPTION.CELL_FORK_TYPE,
|
|
mWH_DESCRIPTION.CELL_WIDTH,
|
|
mWH_DESCRIPTION.CELL_HEIGHT,
|
|
Convert.ToInt32(mWH_DESCRIPTION.CELL_FORK_COUNT)
|
|
|
|
);
|
|
|
|
else
|
|
bResult = this.CellCreate(mWH_DESCRIPTION.WAREHOUSE_ID,
|
|
mWH_DESCRIPTION.AREA_ID,
|
|
mWH_DESCRIPTION.LOGIC_ID,
|
|
mWH_DESCRIPTION.DEVICE_CODE,
|
|
mWH_DESCRIPTION.DEVICE_NAME,
|
|
mWH_DESCRIPTION.LANE_WAY,
|
|
mWH_DESCRIPTION.SHELF_TYPE,
|
|
mWH_DESCRIPTION.SHELF_NEIGHBOUR,
|
|
mWH_DESCRIPTION.CELL_MODEL,
|
|
mWH_DESCRIPTION.CELL_LOGICAL_NAME,
|
|
mWH_DESCRIPTION.CELL_INOUT,
|
|
mWH_DESCRIPTION.CELL_TYPE,
|
|
mWH_DESCRIPTION.CELL_STORAGE_TYPE,
|
|
mWH_DESCRIPTION.CELL_FORK_TYPE,
|
|
mWH_DESCRIPTION.CELL_WIDTH,
|
|
mWH_DESCRIPTION.CELL_HEIGHT
|
|
|
|
);
|
|
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
|
|
}
|
|
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>获得-新建
|
|
/// 获得-新建
|
|
/// </summary>
|
|
/// <param name="AREA_ID"></param>
|
|
/// <param name="z_begin"></param>
|
|
/// <param name="z_end"></param>
|
|
/// <param name="x_begin"></param>
|
|
/// <param name="x_end"></param>
|
|
/// <param name="y_begin"></param>
|
|
/// <param name="y_end"></param>
|
|
/// <param name="WAREHOUSE_CODE"></param>
|
|
/// <param name="AREA_TYPE"></param>
|
|
/// <param name="LANE_WAY"></param>
|
|
/// <param name="CELL_MODEL"></param>
|
|
/// <param name="SHELF_TYPE"></param>
|
|
/// <param name="SHELF_NEIGHBOUR"></param>
|
|
/// <param name="CELL_LOGICAL_NAME"></param>
|
|
/// <param name="CELL_STATUS"></param>
|
|
/// <param name="RUN_STATUS"></param>
|
|
/// <param name="CELL_TYPE"></param>
|
|
/// <param name="DEVICE_CODE"></param>
|
|
/// <returns></returns>
|
|
public bool CellCreate(int WAREHOUSE_ID,
|
|
int AREA_ID,
|
|
int LOGIC_ID,
|
|
int z_begin,
|
|
int z_end,
|
|
int x_begin,
|
|
int x_end,
|
|
int y_begin,
|
|
int y_end,
|
|
string DEVICE_CODE,
|
|
string LANE_WAY,
|
|
string SHELF_TYPE,
|
|
string SHELF_NEIGHBOUR,
|
|
string CELL_MODEL,
|
|
string CELL_LOGICAL_NAME,
|
|
string CELL_INOUT,
|
|
string CELL_TYPE,
|
|
string CELL_STORAGE_TYPE,
|
|
string CELL_FORK_TYPE,
|
|
int CELL_WIDTH,
|
|
int CELL_HEIGHT,
|
|
int CELL_FORK_COUNT
|
|
)
|
|
{
|
|
bool bResult = true;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mST_CELL = new SiaSun.LMS.Model.WH_CELL();
|
|
|
|
for (int z = z_begin; z <= z_end; z++)
|
|
{
|
|
for (int x = x_begin; x <= x_end; x++)
|
|
{
|
|
for (int y = y_begin; y <= y_end; y++)
|
|
{
|
|
mST_CELL.WAREHOUSE_ID = WAREHOUSE_ID;
|
|
mST_CELL.AREA_ID = AREA_ID;
|
|
mST_CELL.LOGIC_ID = LOGIC_ID;
|
|
mST_CELL.CELL_CODE = z.ToString().PadLeft(2, '0') + "-" + x.ToString().PadLeft(2, '0') + "-" + y.ToString().PadLeft(2, '0');
|
|
mST_CELL.CELL_NAME = z.ToString().PadLeft(2, '0') + "-" + x.ToString().PadLeft(2, '0') + "-" + y.ToString().PadLeft(2, '0');
|
|
mST_CELL.LANE_WAY = LANE_WAY;
|
|
mST_CELL.DEVICE_CODE = DEVICE_CODE;
|
|
mST_CELL.SHELF_TYPE = SHELF_TYPE;
|
|
mST_CELL.SHELF_NEIGHBOUR = SHELF_NEIGHBOUR;
|
|
mST_CELL.CELL_MODEL = CELL_MODEL;
|
|
mST_CELL.CELL_LOGICAL_NAME = CELL_LOGICAL_NAME;
|
|
mST_CELL.CELL_INOUT = CELL_INOUT;
|
|
mST_CELL.CELL_TYPE = CELL_TYPE;
|
|
mST_CELL.CELL_STORAGE_TYPE = CELL_STORAGE_TYPE;
|
|
mST_CELL.CELL_FORK_TYPE = CELL_FORK_TYPE;
|
|
mST_CELL.CELL_Z = z;
|
|
mST_CELL.CELL_X = x;
|
|
mST_CELL.CELL_Y = y;
|
|
mST_CELL.CELL_STATUS = SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString();
|
|
mST_CELL.RUN_STATUS = SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString();
|
|
mST_CELL.CELL_FLAG = "1";
|
|
mST_CELL.CELL_WIDTH = CELL_WIDTH;
|
|
mST_CELL.CELL_HEIGHT = CELL_HEIGHT;
|
|
|
|
mST_CELL.CELL_GROUP = z.ToString().PadLeft(2, '0') + "-" + (x % CELL_FORK_COUNT == 0 ? (x / CELL_FORK_COUNT) : (x / CELL_FORK_COUNT) + 1).ToString().PadLeft(2, '0') + "-" + y.ToString().PadLeft(2, '0');
|
|
if (SHELF_TYPE == "Double")
|
|
{
|
|
mST_CELL.LOCK_DEVICE_CODE = SHELF_NEIGHBOUR.ToString().PadLeft(2, '0') + "-" + x.ToString().PadLeft(2, '0') + "-" + y.ToString().PadLeft(2, '0');
|
|
}
|
|
//lyc
|
|
this._P_WH_CELL.Add(mST_CELL);
|
|
|
|
//SiaSun.LMS.Model.WH_CELL temp_st_cell = this._P_WH_CELL.GetModel(AREA_ID, mST_CELL.CELL_CODE);
|
|
|
|
//if (null == temp_st_cell)
|
|
//{
|
|
// this._P_WH_CELL.Add(mST_CELL);
|
|
//}
|
|
//else
|
|
//{
|
|
// mST_CELL.CELL_ID = temp_st_cell.CELL_ID;
|
|
|
|
// mST_CELL.CELL_STATUS = temp_st_cell.CELL_STATUS;
|
|
|
|
// mST_CELL.RUN_STATUS = temp_st_cell.RUN_STATUS;
|
|
|
|
// this._P_WH_CELL.Update(mST_CELL);
|
|
//}
|
|
}
|
|
}
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
/// <summary>获得-新建
|
|
/// 获得-新建
|
|
/// </summary>
|
|
/// <param name="AREA_ID"></param>
|
|
/// <param name="CELL_CODE"></param>
|
|
/// <param name="CELL_NAME"></param>
|
|
/// <param name="WAREHOUSE_CODE"></param>
|
|
/// <param name="AREA_TYPE"></param>
|
|
/// <param name="LANE_WAY"></param>
|
|
/// <param name="CELL_MODEL"></param>
|
|
/// <param name="SHELF_TYPE"></param>
|
|
/// <param name="SHELF_NEIGHBOUR"></param>
|
|
/// <param name="CELL_LOGICAL_NAME"></param>
|
|
/// <param name="CELL_STATUS"></param>
|
|
/// <param name="RUN_STATUS"></param>
|
|
/// <param name="CELL_TYPE"></param>
|
|
/// <param name="DEVICE_CODE"></param>
|
|
/// <returns></returns>
|
|
public bool CellCreate(int WAREHOUSE_ID, int AREA_ID,
|
|
int LOGIC_ID,
|
|
string DEVICE_CODE,
|
|
string DEVICE_NAME,
|
|
string LANE_WAY,
|
|
string SHELF_TYPE,
|
|
string SHELF_NEIGHBOUR,
|
|
string CELL_MODEL,
|
|
string CELL_LOGICAL_NAME,
|
|
string CELL_INOUT,
|
|
string CELL_TYPE,
|
|
string CELL_STORAGE_TYPE,
|
|
string CELL_FORK_TYPE,
|
|
int CELL_WIDTH,
|
|
int CELL_HEIGHT
|
|
)
|
|
{
|
|
bool bResult = true;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mST_CELL = new SiaSun.LMS.Model.WH_CELL();
|
|
|
|
mST_CELL.AREA_ID = AREA_ID;
|
|
mST_CELL.WAREHOUSE_ID = WAREHOUSE_ID;
|
|
mST_CELL.LOGIC_ID = LOGIC_ID;
|
|
mST_CELL.CELL_CODE = DEVICE_CODE;
|
|
mST_CELL.CELL_NAME = DEVICE_NAME;
|
|
mST_CELL.LANE_WAY = LANE_WAY;
|
|
mST_CELL.DEVICE_CODE = DEVICE_CODE;
|
|
mST_CELL.SHELF_TYPE = SHELF_TYPE;
|
|
mST_CELL.SHELF_NEIGHBOUR = SHELF_NEIGHBOUR;
|
|
mST_CELL.CELL_MODEL = CELL_MODEL;
|
|
mST_CELL.CELL_LOGICAL_NAME = CELL_LOGICAL_NAME;
|
|
mST_CELL.CELL_INOUT = CELL_INOUT;
|
|
mST_CELL.CELL_TYPE = CELL_TYPE;
|
|
mST_CELL.CELL_STORAGE_TYPE = CELL_STORAGE_TYPE;
|
|
mST_CELL.CELL_FORK_TYPE = CELL_FORK_TYPE;
|
|
mST_CELL.CELL_Z = 0;
|
|
mST_CELL.CELL_X = 0;
|
|
mST_CELL.CELL_Y = 0;
|
|
mST_CELL.CELL_STATUS = SiaSun.LMS.Enum.CELL_STATUS.Nohave.ToString();
|
|
mST_CELL.RUN_STATUS = SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString();
|
|
mST_CELL.CELL_FLAG = "1";
|
|
mST_CELL.CELL_HEIGHT = CELL_HEIGHT;
|
|
mST_CELL.CELL_WIDTH = CELL_WIDTH;
|
|
|
|
|
|
SiaSun.LMS.Model.WH_CELL temp_st_cell = this._P_WH_CELL.GetModel(AREA_ID, mST_CELL.CELL_CODE);
|
|
|
|
if (null == temp_st_cell)
|
|
{
|
|
this._P_WH_CELL.Add(mST_CELL);
|
|
}
|
|
else
|
|
{
|
|
mST_CELL.CELL_ID = temp_st_cell.CELL_ID;
|
|
|
|
mST_CELL.CELL_STATUS = temp_st_cell.CELL_STATUS;
|
|
|
|
mST_CELL.RUN_STATUS = temp_st_cell.RUN_STATUS;
|
|
|
|
this._P_WH_CELL.Update(mST_CELL);
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
/// <summary>获得入库货位
|
|
/// 获得入库货位
|
|
/// </summary>
|
|
/// <param name="WAREHOUSE_ID">库房编号</param>
|
|
/// <param name="AREA_ID">库区编号</param>
|
|
/// <param name="LOGIC_ID">存储区编号</param>
|
|
/// <param name="START_CELL_ID">起始货位</param>
|
|
/// <param name="CELL_STATUS">货位状态</param>
|
|
/// <param name="RUN_STATUS">运行状态</param>
|
|
/// <param name="CELL_MODEL">货位尺寸</param>
|
|
/// <param name="STOCK_BARCODE">托盘条码</param>
|
|
/// <param name="END_CELL_ID">终止货位</param>
|
|
/// <param name="sResult">返回结果</param>
|
|
/// <returns></returns>
|
|
public bool CellInAllocate(string START_DEVICE_CODE, string CELL_MODEL, int MANAGE_ID, out int END_CELL_ID, out string sResult)
|
|
{
|
|
sResult = string.Empty;
|
|
bool bResult = true;
|
|
int DEVICE_CODE = 0;
|
|
int index = 0;
|
|
int index_n = 0;
|
|
string PnOrder = string.Empty;
|
|
string ordered = string.Empty;
|
|
string strLaneway = string.Empty;
|
|
|
|
SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID);
|
|
|
|
IList<Model.MANAGE_LIST> lsManageList = this._P_MANAGE_LIST.GetListManageID(MANAGE_ID);
|
|
if (lsManageList == null)
|
|
{
|
|
sResult = string.Format("入库没有list明细");
|
|
END_CELL_ID = 0;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
PnOrder = string.IsNullOrEmpty(lsManageList[0].GOODS_PROPERTY2) ? " and 1=1 " : string.Format(@" and goods_property2='{0}'", lsManageList[0].GOODS_PROPERTY2);
|
|
}
|
|
//设备状态可用并且有可用货位的巷道
|
|
strLaneway = string.Format(@"SELECT DEVICE_CODE
|
|
FROM (SELECT DISTINCT DEVICE_CODE AS DEVICE_CODE
|
|
FROM WH_CELL
|
|
INNER JOIN IO_CONTROL_ROUTE ON DEVICE_CODE =
|
|
IO_CONTROL_ROUTE.END_DEVICE
|
|
WHERE CELL_TYPE = 'Cell'
|
|
AND START_DEVICE = {0}
|
|
AND CONTROL_ROUTE_TYPE = 1
|
|
AND CONTROL_ROUTE_STATUS = 1
|
|
AND RUN_STATUS ='Enable'
|
|
) T ORDER BY DEVICE_CODE desc", START_DEVICE_CODE);
|
|
|
|
//获得所有可用巷道
|
|
DataTable dt_laneway = this.GetList(strLaneway);
|
|
|
|
if (dt_laneway.Rows.Count == 0)
|
|
{
|
|
sResult = string.Format("入库未找到可用路径,请检查设备状态");
|
|
END_CELL_ID = 0;
|
|
return false;
|
|
}
|
|
|
|
if (dt_laneway.Rows.Count == 1)
|
|
{
|
|
DataTable dt_cellnear = this.GetList(string.Format(@"SELECT CELL_ID
|
|
FROM WH_CELL
|
|
WHERE DEVICE_CODE = {0}
|
|
AND CELL_STATUS = 'Nohave'
|
|
AND RUN_STATUS = 'Enable'
|
|
AND CELL_FORK_TYPE = 'Near'
|
|
AND CELL_TYPE ='Cell'",
|
|
Convert.ToInt32(dt_laneway.Rows[0]["DEVICE_CODE"])));
|
|
|
|
if (dt_cellnear.Rows.Count < 3)
|
|
{
|
|
bResult = false;
|
|
sResult = "当前双申巷道近端空货位不足,请查看!";
|
|
END_CELL_ID = 0;
|
|
return bResult;
|
|
}
|
|
DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[0]["DEVICE_CODE"]);
|
|
}
|
|
|
|
#region 货物平均分配 可用巷道>=2时
|
|
if (dt_laneway.Rows.Count >= 2)
|
|
{
|
|
#region 排除掉没有可用货位的巷道
|
|
DataTable dt_laneway1 = dt_laneway.Clone();
|
|
dt_laneway1.Clear();
|
|
foreach (DataRow item in dt_laneway.Rows)
|
|
{
|
|
string x500 = string.Empty;
|
|
if (lsManageList[0].MANAGE_LIST_QUANTITY > 500)
|
|
{
|
|
x500 = "AND CELL_X_NEAR>1";
|
|
}
|
|
DataTable dt_cellnear1 = this.GetList(string.Format(@"SELECT 1
|
|
FROM V_WH_CELL_DOUBLE_TO_NORMAL
|
|
WHERE DEVICE_CODE = {0}
|
|
AND CELL_STATUS_NEAR = 'Nohave'
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND RUN_STATUS = 'Enable'
|
|
{1}", item["DEVICE_CODE"], x500));
|
|
// AND CELL_TYPE = 'Cell'
|
|
if (dt_cellnear1.Rows.Count > 2)
|
|
{
|
|
dt_laneway1.Rows.Add(item.ItemArray);
|
|
}
|
|
}
|
|
if (dt_laneway1.Rows.Count < 1)
|
|
{
|
|
sResult = string.Format("未找到可用货位");
|
|
END_CELL_ID = 0;
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
dt_laneway = dt_laneway1;
|
|
}
|
|
#endregion
|
|
//获得库存少的巷道
|
|
IList<MANAGE_LIST> lsMANAGE_LIST = this._P_MANAGE_LIST.GetListManageID(mMANAGE_MAIN.MANAGE_ID);
|
|
DataTable dt_nohave = null;
|
|
DataTable dt_manage_num = null;
|
|
DataTable lane_way = null;
|
|
int manage_num = Convert.ToInt32(SiaSun.LMS.Common.StringUtil.GetConfig("ManageCountLimit").ToString());
|
|
int[] su = new int[dt_laneway.Rows.Count];
|
|
int[] sm = new int[dt_laneway.Rows.Count];
|
|
for (int i = 0; i < dt_laneway.Rows.Count; i++)
|
|
{
|
|
//当前巷道的库存数
|
|
//AND RUN_STATUS = 'Enable'
|
|
dt_nohave = this.GetList(string.Format(@"SELECT CELL_ID FROM WH_CELL
|
|
WHERE CELL_TYPE ='Cell' AND CELL_STATUS='Nohave'
|
|
AND DEVICE_CODE = '{0}'",
|
|
Convert.ToInt32(dt_laneway.Rows[i]["DEVICE_CODE"])
|
|
));
|
|
|
|
lane_way = this.GetList(string.Format(@"SELECT TOP 1 * FROM WH_CELL WHERE device_code = {0} AND CELL_TYPE ='Cell'",
|
|
Convert.ToInt32(dt_laneway.Rows[i]["DEVICE_CODE"])));
|
|
//当前巷道的任务数
|
|
dt_manage_num = this.GetList(string.Format(@"SELECT * FROM V_MANAGE WHERE LANE_WAY = {0} AND MANAGE_STATUS = 'Executing'
|
|
AND MANAGE_TYPE_CLASS in ('ManageIn','StockInMin','StockIn','ManageUp')",
|
|
lane_way.Rows[0]["LANE_WAY"]));
|
|
|
|
su[i] = dt_nohave.Rows.Count;//记库存数
|
|
sm[i] = dt_manage_num.Rows.Count;//记任务数
|
|
}
|
|
#region 原入库分配巷道逻辑
|
|
//int iMinIndex = 0;
|
|
//for (int i = 1; i < dt_laneway.Rows.Count; ++i)
|
|
//{
|
|
// if (sm[i] < sm[iMinIndex])
|
|
// {
|
|
// iMinIndex = i;
|
|
// }
|
|
// else if (sm[i] == sm[iMinIndex] && su[i] > su[iMinIndex])
|
|
// {
|
|
// iMinIndex = i;
|
|
// }
|
|
//}
|
|
//DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[iMinIndex]["DEVICE_CODE"]);
|
|
#endregion
|
|
|
|
#region 新入库分配巷道逻辑
|
|
index_n = SiaSun.LMS.Common.StringUtil.CheckMin(sm);
|
|
DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[index_n]["DEVICE_CODE"]);
|
|
#endregion
|
|
//index = SiaSun.LMS.Common.StringUtil.CheckMin(su);
|
|
//index_n = SiaSun.LMS.Common.StringUtil.CheckMin(sm);
|
|
|
|
//if (sm[index] >= manage_num)
|
|
//{
|
|
// DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[index_n]["DEVICE_CODE"]);
|
|
//}
|
|
//else
|
|
//{
|
|
// DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[index]["DEVICE_CODE"]);
|
|
//}
|
|
|
|
////优先入库双伸巷道的空货位数
|
|
//DataTable dt_cellnear = this.GetList(string.Format(@"SELECT CELL_ID
|
|
// FROM WH_CELL
|
|
// WHERE DEVICE_CODE = {0}
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS = 'Enable'
|
|
// AND CELL_FORK_TYPE = 'Near'
|
|
// AND CELL_TYPE ='Cell'", DEVICE_CODE));
|
|
//if (dt_cellnear.Rows.Count == 2)
|
|
//{
|
|
// bResult = false;
|
|
// sResult = "当前双申巷道近端空货位货位不足,请查看!";
|
|
// END_CELL_ID = 0;
|
|
// return bResult;
|
|
//}
|
|
}
|
|
#endregion
|
|
|
|
string strSQL = string.Empty;
|
|
DataTable dtCELL = null;
|
|
//GOODS_MAIN gm = this._P_GOODS_MAIN.GetModel(lsManageList[0].GOODS_ID);
|
|
//if (gm == null)
|
|
//{
|
|
// bResult = false;
|
|
// sResult = string.Format("未找到物料ID {0}", lsManageList[0].GOODS_ID);
|
|
// END_CELL_ID = 0;
|
|
// return bResult;
|
|
//}
|
|
#region//母托盘入库
|
|
if (mMANAGE_MAIN.MANAGE_TYPE_CODE == "StockIn")
|
|
{
|
|
///条件1:
|
|
///Double有货无任务,且Double物料与上架物料一致时,选择Normal空货位
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
AND CELL_STATUS = 'Pallet' AND RUN_STATUS_NEAR = 'Enable' AND DEVICE_CODE = {0}
|
|
AND CELL_STATUS_NEAR ='Nohave' ORDER BY CELL_X,CELL_Y", DEVICE_CODE);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count != 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
///条件2:
|
|
///Double无货有任务,且Double任务物料与上架物料一致时,选择Normal空货位
|
|
//strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Selected' AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS_NEAR = 'Enable' AND CELL_STATUS_NEAR ='Nohave' AND DEVICE_CODE = {0}
|
|
// ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
//dtCELL = this.GetList(strSQL);
|
|
//if (dtCELL.Rows.Count != 0)
|
|
//{
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
//}
|
|
///条件2:Double 无货无任务禁用状态
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS IN ('Disable')
|
|
and device_code = '{0}' and CELL_STATUS ='Nohave' AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave' ORDER BY CELL_X,CELL_Y", DEVICE_CODE);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count > 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
///条件3:
|
|
///Double无任务,货位状态空容器-运行状态为可用/禁用,选择Normal空货位
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS IN ('Disable','Enable')
|
|
AND CELL_STATUS IN ('Pallet') AND RUN_STATUS_NEAR = 'Enable'
|
|
AND DEVICE_CODE = {0} AND CELL_STATUS_NEAR ='Nohave'
|
|
ORDER BY CELL_X,CELL_Y", DEVICE_CODE);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count != 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
///条件4:
|
|
///Double和Normal全部空货位,选择Double空货位
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable' AND CELL_STATUS = 'Nohave'
|
|
AND RUN_STATUS_NEAR = 'Enable' AND CELL_STATUS_NEAR ='Nohave' AND DEVICE_CODE = {0}
|
|
ORDER BY CELL_X,CELL_Y", DEVICE_CODE);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count != 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_FAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS IN ('Disable','Enable')
|
|
AND CELL_STATUS not IN ('Nohave') AND RUN_STATUS_NEAR = 'Enable'
|
|
AND DEVICE_CODE = {0} AND CELL_STATUS_NEAR ='Nohave'
|
|
ORDER BY CELL_X,CELL_Y", DEVICE_CODE);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count == 0)
|
|
{
|
|
bResult = false;
|
|
sResult = "当前双申巷道空货位货位不足,请查看!";
|
|
END_CELL_ID = 0;
|
|
return bResult;
|
|
}
|
|
else
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
}
|
|
#endregion
|
|
#region 货物入库
|
|
else
|
|
{
|
|
//分配的巷道为双申巷道
|
|
///条件1:
|
|
///Double有货无任务,且Double物料与上架物料批次一致时,选择Normal空货位
|
|
///
|
|
string x500 = string.Empty;
|
|
if (lsManageList[0].MANAGE_LIST_QUANTITY > 500)
|
|
{
|
|
x500 = "AND CELL_X>1";
|
|
}
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
AND DEVICE_CODE='{0}'
|
|
AND CELL_STATUS = 'Full'
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave'
|
|
{1}
|
|
AND GOODS_ID = {2}
|
|
{3}
|
|
ORDER BY CELL_Y,CELL_X",
|
|
DEVICE_CODE, PnOrder, lsManageList[0].GOODS_ID, x500);
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count > 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
///条件2:Double 无货禁用状态
|
|
///
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Disable'
|
|
AND DEVICE_CODE = '{0}'
|
|
AND CELL_STATUS ='Nohave'
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave'
|
|
{1}
|
|
ORDER BY CELL_Y,CELL_X",
|
|
DEVICE_CODE, x500);
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count > 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
///条件4:
|
|
/// Double和Normal全部空货位,选择Double空货位
|
|
/// (RUN_STATUS_NEAR = 'Enable' or RUN_STATUS_NEAR = 'Disable')
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
AND CELL_STATUS = 'Nohave'
|
|
AND DEVICE_CODE = {0}
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave'
|
|
{1}
|
|
ORDER BY CELL_Y,CELL_X",
|
|
DEVICE_CODE, x500);
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count > 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_FAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
///条件5:
|
|
///Double有货无任务,选择Normal空货位
|
|
///
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
AND DEVICE_CODE='{0}'
|
|
AND CELL_STATUS = 'Full'
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave'
|
|
{1}
|
|
ORDER BY CELL_Y,CELL_X",
|
|
DEVICE_CODE, x500);
|
|
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count > 0)
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
|
|
|
|
///条件6:
|
|
///Double全部为实货位,运行状态为禁用,Double物料与上架物料的批次不同,选择Normal空货位
|
|
///
|
|
strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS in ('Enable','Disable')
|
|
AND CELL_STATUS in ('Full','Forbiden')
|
|
AND DEVICE_CODE = {0}
|
|
AND RUN_STATUS_NEAR = 'Enable'
|
|
AND CELL_STATUS_NEAR ='Nohave'
|
|
{1}
|
|
ORDER BY CELL_Y,CELL_X",
|
|
DEVICE_CODE, x500);
|
|
dtCELL = this.GetList(strSQL);
|
|
if (dtCELL.Rows.Count == 0)
|
|
{
|
|
bResult = false;
|
|
END_CELL_ID = 0;
|
|
sResult = "无法找到入库货位";
|
|
return bResult;
|
|
}
|
|
else
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
return true;
|
|
}
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
//public bool CellMoveAllocate(string START_DEVICE_CODE, string CELL_MODEL, int MANAGE_ID, out int END_CELL_ID, out string sResult)
|
|
//{
|
|
// sResult = string.Empty;
|
|
// bool bResult = true;
|
|
// int DEVICE_CODE = 0;
|
|
// int index = 0;
|
|
// int index_n = 0;
|
|
// string PnOrder = string.Empty;
|
|
// string ordered = string.Empty;
|
|
// string strLaneway = string.Empty;
|
|
|
|
// SiaSun.LMS.Model.MANAGE_MAIN mMANAGE_MAIN = this._P_MANAGE_MAIN.GetModel(MANAGE_ID);
|
|
|
|
// IList<Model.MANAGE_LIST> lsManageList = this._P_MANAGE_LIST.GetListManageID(MANAGE_ID);
|
|
// if (lsManageList == null)
|
|
// {
|
|
// sResult = string.Format("入库没有list明细");
|
|
// END_CELL_ID = 0;
|
|
// return false;
|
|
// }
|
|
// else
|
|
// {
|
|
// PnOrder = string.IsNullOrEmpty(lsManageList[0].GOODS_PROPERTY2) ? " and 1=1 " : string.Format(@" and goods_property2='{0}'", lsManageList[0].GOODS_PROPERTY2);
|
|
// }
|
|
// //设备状态可用并且有可用货位的巷道
|
|
// strLaneway = string.Format(@"SELECT DEVICE_CODE
|
|
// FROM (SELECT DISTINCT DEVICE_CODE AS DEVICE_CODE
|
|
// FROM WH_CELL
|
|
// INNER JOIN IO_CONTROL_ROUTE ON DEVICE_CODE =
|
|
// IO_CONTROL_ROUTE.END_DEVICE
|
|
// WHERE CELL_TYPE = 'Cell'
|
|
// AND START_DEVICE = {0}
|
|
// AND CONTROL_ROUTE_TYPE = 3
|
|
// AND CONTROL_ROUTE_STATUS = 1
|
|
// AND RUN_STATUS ='Enable'
|
|
// ) T ORDER BY DEVICE_CODE desc", START_DEVICE_CODE);
|
|
|
|
// //获得所有可用巷道
|
|
// DataTable dt_laneway = this.GetList(strLaneway);
|
|
|
|
// if (dt_laneway.Rows.Count == 0)
|
|
// {
|
|
// sResult = string.Format("入库未找到可用路径,请检查设备状态");
|
|
// END_CELL_ID = 0;
|
|
// return false;
|
|
// }
|
|
|
|
// if (dt_laneway.Rows.Count == 1)
|
|
// {
|
|
// DataTable dt_cellnear = this.GetList(string.Format(@"SELECT CELL_ID
|
|
// FROM WH_CELL
|
|
// WHERE DEVICE_CODE = {0}
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS = 'Enable'
|
|
// AND CELL_FORK_TYPE = 'Near'
|
|
// AND CELL_TYPE ='Cell'",
|
|
// Convert.ToInt32(dt_laneway.Rows[0]["DEVICE_CODE"])));
|
|
|
|
// if (dt_cellnear.Rows.Count == 2)
|
|
// {
|
|
// bResult = false;
|
|
// sResult = "当前双申巷道近端空货位不足,请查看!";
|
|
// END_CELL_ID = 0;
|
|
// return bResult;
|
|
// }
|
|
// DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[0]["DEVICE_CODE"]);
|
|
// }
|
|
|
|
// #region 货物平均分配 可用巷道>=2时
|
|
// if (dt_laneway.Rows.Count >= 2)
|
|
// {
|
|
// #region 排除掉没有可用货位的巷道
|
|
// DataTable dt_laneway1 = dt_laneway.Clone();
|
|
// dt_laneway1.Clear();
|
|
// foreach (DataRow item in dt_laneway.Rows)
|
|
// {
|
|
// DataTable dt_cellnear1 = this.GetList(string.Format(@"SELECT CELL_ID
|
|
// FROM WH_CELL
|
|
// WHERE DEVICE_CODE = {0}
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS = 'Enable'
|
|
// AND CELL_FORK_TYPE = 'Near'
|
|
// AND CELL_TYPE ='Cell'", item["DEVICE_CODE"]));
|
|
// if (dt_cellnear1.Rows.Count >= 2)
|
|
// {
|
|
// dt_laneway1.Rows.Add(item.ItemArray);
|
|
// }
|
|
// }
|
|
// if (dt_laneway1.Rows.Count < 1)
|
|
// {
|
|
// sResult = string.Format("未找到可用货位");
|
|
// END_CELL_ID = 0;
|
|
// return false;
|
|
// }
|
|
// else
|
|
// {
|
|
// dt_laneway = dt_laneway1;
|
|
// }
|
|
// #endregion
|
|
// //获得库存少的巷道
|
|
// IList<MANAGE_LIST> lsMANAGE_LIST = this._P_MANAGE_LIST.GetListManageID(mMANAGE_MAIN.MANAGE_ID);
|
|
// DataTable dt_storage = null;
|
|
// DataTable dt_manage_num = null;
|
|
// DataTable lane_way = null;
|
|
// int manage_num = Convert.ToInt32(SiaSun.LMS.Common.StringUtil.GetConfig("ManageCountLimit").ToString());
|
|
// int[] su = new int[dt_laneway.Rows.Count];
|
|
// int[] sm = new int[dt_laneway.Rows.Count];
|
|
// for (int i = 0; i < dt_laneway.Rows.Count; i++)
|
|
// {
|
|
// //当前巷道的库存数
|
|
// //AND RUN_STATUS = 'Enable'
|
|
// dt_storage = this.GetList(string.Format(@"SELECT CELL_ID FROM WH_CELL
|
|
// WHERE CELL_TYPE ='Cell' AND CELL_STATUS NOT LIKE '%No%'
|
|
// AND DEVICE_CODE = '{0}'",
|
|
// Convert.ToInt32(dt_laneway.Rows[i]["DEVICE_CODE"])
|
|
// ));
|
|
|
|
// lane_way = this.GetList(string.Format(@"SELECT TOP 1 * FROM WH_CELL WHERE device_code = {0} AND CELL_TYPE ='Cell'",
|
|
// Convert.ToInt32(dt_laneway.Rows[i]["DEVICE_CODE"])));
|
|
// //当前巷道的任务数
|
|
// dt_manage_num = this.GetList(string.Format(@"SELECT * FROM V_MANAGE WHERE LANE_WAY = {0} AND MANAGE_STATUS = 'Executing'
|
|
// AND MANAGE_TYPE_CLASS in ('ManageIn','StockInMin','StockIn','ManageUp')",
|
|
// lane_way.Rows[0]["LANE_WAY"]));
|
|
|
|
// su[i] = dt_storage.Rows.Count;//记库存数
|
|
// sm[i] = dt_manage_num.Rows.Count;//记任务数
|
|
// }
|
|
|
|
// index = SiaSun.LMS.Common.StringUtil.CheckMin(su);
|
|
// index_n = SiaSun.LMS.Common.StringUtil.CheckMin(sm);
|
|
|
|
// if (sm[index] >= manage_num)
|
|
// {
|
|
// DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[index_n]["DEVICE_CODE"]);
|
|
// }
|
|
// else
|
|
// {
|
|
// DEVICE_CODE = Convert.ToInt32(dt_laneway.Rows[index]["DEVICE_CODE"]);
|
|
// }
|
|
|
|
// //优先入库双伸巷道的空货位数
|
|
// DataTable dt_cellnear = this.GetList(string.Format(@"SELECT CELL_ID
|
|
// FROM WH_CELL
|
|
// WHERE DEVICE_CODE = {0}
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS = 'Enable'
|
|
// AND CELL_FORK_TYPE = 'Near'
|
|
// AND CELL_TYPE ='Cell'", DEVICE_CODE));
|
|
// if (dt_cellnear.Rows.Count == 2)
|
|
// {
|
|
// bResult = false;
|
|
// sResult = "当前双申巷道近端空货位货位不足,请查看!";
|
|
// END_CELL_ID = 0;
|
|
// return bResult;
|
|
// }
|
|
// }
|
|
// #endregion
|
|
|
|
// string strSQL = string.Empty;
|
|
// DataTable dtCELL = null;
|
|
// //GOODS_MAIN gm = this._P_GOODS_MAIN.GetModel(lsManageList[0].GOODS_ID);
|
|
// //if (gm == null)
|
|
// //{
|
|
// // bResult = false;
|
|
// // sResult = string.Format("未找到物料ID {0}", lsManageList[0].GOODS_ID);
|
|
// // END_CELL_ID = 0;
|
|
// // return bResult;
|
|
// //}
|
|
// #region//母托盘入库
|
|
// if (mMANAGE_MAIN.MANAGE_TYPE_CODE == "StockIn")
|
|
// {
|
|
// ///条件1:
|
|
// ///Double有货无任务,且Double物料与上架物料一致时,选择Normal空货位
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
// AND CELL_STATUS = 'Pallet' AND RUN_STATUS_NEAR = 'Enable' AND DEVICE_CODE = {0}
|
|
// AND CELL_STATUS_NEAR ='Nohave' ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count != 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
// ///条件2:
|
|
// ///Double无货有任务,且Double任务物料与上架物料一致时,选择Normal空货位
|
|
// //strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Selected' AND CELL_STATUS = 'Nohave'
|
|
// // AND RUN_STATUS_NEAR = 'Enable' AND CELL_STATUS_NEAR ='Nohave' AND DEVICE_CODE = {0}
|
|
// // ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
// //dtCELL = this.GetList(strSQL);
|
|
// //if (dtCELL.Rows.Count != 0)
|
|
// //{
|
|
// // END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// // SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// // mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// // this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// // return true;
|
|
// //}
|
|
// ///条件2:Double 无货无任务禁用状态
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS IN ('Disable')
|
|
// and device_code = '{0}' and CELL_STATUS ='Nohave' AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave' ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count > 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
// ///条件3:
|
|
// ///Double无任务,货位状态空容器-运行状态为可用/禁用,选择Normal空货位
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS IN ('Disable','Enable')
|
|
// AND CELL_STATUS IN ('Pallet') AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND DEVICE_CODE = {0} AND CELL_STATUS_NEAR ='Nohave'
|
|
// ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count != 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
// ///条件4:
|
|
// ///Double和Normal全部空货位,选择Double空货位
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable' AND CELL_STATUS = 'Nohave'
|
|
// AND RUN_STATUS_NEAR = 'Enable' AND CELL_STATUS_NEAR ='Nohave' AND DEVICE_CODE = {0}
|
|
// ORDER BY CELL_Y,CELL_X", DEVICE_CODE);
|
|
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count == 0)
|
|
// {
|
|
// bResult = false;
|
|
// sResult = "当前双申巷道空货位货位不足,请查看!";
|
|
// END_CELL_ID = 0;
|
|
// return bResult;
|
|
// }
|
|
// else
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_FAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
|
|
// }
|
|
// #endregion
|
|
// #region 货物入库
|
|
// else
|
|
// {
|
|
// //分配的巷道为双申巷道
|
|
// ///条件1:
|
|
// ///Double有货无任务,且Double物料与上架物料批次一致时,选择Normal空货位
|
|
// ///
|
|
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
// AND DEVICE_CODE='{0}'
|
|
// AND CELL_STATUS = 'Full'
|
|
// AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave'
|
|
// {1}
|
|
// AND GOODS_ID = {2}
|
|
// AND CELL_X>1
|
|
// ORDER BY CELL_Y,CELL_X",
|
|
// DEVICE_CODE, PnOrder, lsManageList[0].GOODS_ID);
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count > 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
|
|
// ///条件2:Double 无货禁用状态
|
|
// ///
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Disable'
|
|
// AND DEVICE_CODE = '{0}'
|
|
// AND CELL_STATUS ='Nohave'
|
|
// AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave'
|
|
// AND CELL_X>1
|
|
// ORDER BY CELL_Y,CELL_X",
|
|
// DEVICE_CODE);
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count > 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
|
|
// ///条件4:
|
|
// /// Double和Normal全部空货位,选择Double空货位
|
|
// /// (RUN_STATUS_NEAR = 'Enable' or RUN_STATUS_NEAR = 'Disable')
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
// AND CELL_STATUS = 'Nohave'
|
|
// AND DEVICE_CODE = {0}
|
|
// AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave'
|
|
// AND CELL_X>1
|
|
// ORDER BY CELL_Y,CELL_X",
|
|
// DEVICE_CODE);
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count > 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_FAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
|
|
// ///条件5:
|
|
// ///Double有货无任务,选择Normal空货位
|
|
// ///
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS = 'Enable'
|
|
// AND DEVICE_CODE='{0}'
|
|
// AND CELL_STATUS = 'Full'
|
|
// AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave'
|
|
// AND CELL_X>1
|
|
// ORDER BY CELL_Y,CELL_X",
|
|
// DEVICE_CODE);
|
|
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count > 0)
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
|
|
|
|
// ///条件6:
|
|
// ///Double全部为实货位,运行状态为禁用,Double物料与上架物料的批次不同,选择Normal空货位
|
|
// ///
|
|
// strSQL = string.Format(@"SELECT top 1 * FROM V_WH_CELL_DOUBLE_TO_NORMAL WHERE RUN_STATUS in ('Enable','Disable')
|
|
// AND CELL_STATUS in ('Full','Forbiden')
|
|
// AND DEVICE_CODE = {0}
|
|
// AND RUN_STATUS_NEAR = 'Enable'
|
|
// AND CELL_STATUS_NEAR ='Nohave'
|
|
// AND CELL_X>1
|
|
// ORDER BY CELL_Y,CELL_X",
|
|
// DEVICE_CODE);
|
|
// dtCELL = this.GetList(strSQL);
|
|
// if (dtCELL.Rows.Count == 0)
|
|
// {
|
|
// bResult = false;
|
|
// END_CELL_ID = 0;
|
|
// sResult = "无法找到入库货位";
|
|
// return bResult;
|
|
// }
|
|
// else
|
|
// {
|
|
// END_CELL_ID = Convert.ToInt32(dtCELL.Rows[0]["CELL_ID_NEAR"].ToString());
|
|
// SiaSun.LMS.Model.WH_CELL mEND_WH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
// mEND_WH_CELL.RUN_STATUS = Enum.RUN_STATUS.Selected.ToString();
|
|
// this._P_WH_CELL.Update(mEND_WH_CELL);
|
|
// return true;
|
|
// }
|
|
// }
|
|
// #endregion
|
|
//}
|
|
|
|
/// <summary>
|
|
/// 根据起始位置分配终止位置,适合终止位置为固定授货台
|
|
/// </summary>成品库获得出库站台
|
|
/// <param name="START_DEVICE_CODE"></param>
|
|
/// <param name="END_CELL_ID"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public bool CellOutAllocate(string START_DEVICE_CODE, out int END_CELL_ID, out string sResult)
|
|
{
|
|
bool bResult = false;
|
|
|
|
sResult = string.Empty;
|
|
int index = 0;
|
|
string strSQL = string.Empty;
|
|
|
|
DataTable dt = null;
|
|
|
|
END_CELL_ID = 0;
|
|
|
|
//出库-》站台
|
|
strSQL = string.Format(@"SELECT CELL_ID,CELL_CODE FROM WH_CELL
|
|
WHERE CELL_TYPE ='Station'
|
|
AND CELL_INOUT = 'Out'
|
|
AND CELL_CODE IN (SELECT END_DEVICE FROM IO_CONTROL_ROUTE
|
|
WHERE START_DEVICE = (SELECT DEVICE_CODE FROM WH_CELL WHERE CELL_CODE = '{0}')
|
|
AND CONTROL_ROUTE_STATUS =1)",
|
|
START_DEVICE_CODE);
|
|
|
|
dt = this.GetList(strSQL);
|
|
|
|
bResult = dt.Rows.Count > 0;
|
|
|
|
if (bResult)
|
|
{
|
|
//两个以上(包含两个)可用站台
|
|
if (dt.Rows.Count > 1)
|
|
{
|
|
DataTable dt_manage = null;
|
|
int[] su = new int[dt.Rows.Count];
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
{
|
|
dt_manage = this.GetList(string.Format(@"SELECT MANAGE_ID FROM MANAGE_MAIN
|
|
WHERE END_CELL_ID = {0}",
|
|
Convert.ToInt32(dt.Rows[i]["CELL_ID"])));
|
|
su[i] = dt_manage.Rows.Count;
|
|
}
|
|
|
|
index = SiaSun.LMS.Common.StringUtil.CheckMin(su);
|
|
|
|
END_CELL_ID = Convert.ToInt32(dt.Rows[index]["CELL_ID"]);
|
|
}
|
|
else
|
|
{
|
|
END_CELL_ID = Convert.ToInt32(dt.Rows[0]["CELL_ID"]);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
sResult = string.Format("未找到出库货位");
|
|
return false;
|
|
}
|
|
|
|
if (END_CELL_ID == 0)
|
|
return false;
|
|
else
|
|
return true;
|
|
}
|
|
|
|
/// <summary>获得出库货位
|
|
/// 四川电力 根据巷道 物料及物料属性 获得出库货位
|
|
/// </summary>
|
|
/// <param name="IO_TASK_NO"></param>
|
|
/// <param name="LANE_WAY"></param>
|
|
/// <param name="END_CELL_ID"></param>
|
|
/// <param name="GOODS_ID"></param>
|
|
/// <param name="GOODS_PROPERTY"></param>
|
|
/// <param name="STORAGE_LIST_TYPE"></param>
|
|
/// <param name="MANAGE_LIST_QUANTITY"></param>
|
|
/// <param name="START_CELL_ID"></param>
|
|
/// <param name="STOCK_BARCODE"></param>
|
|
/// <param name="STORAGE_LIST_QUANTITY"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public bool CellOutAllocate(int LANE_WAY,
|
|
int END_CELL_ID,
|
|
int GOODS_ID,
|
|
string GOODS_PROPERTY,
|
|
decimal MANAGE_LIST_QUANTITY,
|
|
out int START_CELL_ID,
|
|
out string STOCK_BARCODE,
|
|
out decimal STORAGE_LIST_QUANTITY,
|
|
out string sResult)
|
|
{
|
|
bool bResult = false;
|
|
|
|
sResult = string.Empty;
|
|
|
|
START_CELL_ID = 0;
|
|
|
|
STORAGE_LIST_QUANTITY = 0;
|
|
|
|
STOCK_BARCODE = string.Empty;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mWH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
bResult = null != mWH_CELL;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = "未找到出库站台";
|
|
|
|
return bResult;
|
|
}
|
|
|
|
string sSQL = string.Format(@"SELECT STORAGE_MAIN.CELL_ID ,STOCK_BARCODE ,
|
|
isnull(SUM(STORAGE_LIST_QUANTITY),0) AS MANAGE_LIST_QUANTITY
|
|
FROM STORAGE_LIST
|
|
INNER JOIN STORAGE_MAIN ON (STORAGE_LIST.STORAGE_ID = STORAGE_MAIN.STORAGE_ID )
|
|
INNER JOIN WH_CELL ON (STORAGE_MAIN.CELL_ID = WH_CELL.CELL_ID)
|
|
WHERE GOODS_ID = {2}
|
|
{0}
|
|
{1}
|
|
{3}
|
|
AND LANE_WAY = {4}
|
|
AND CELL_TYPE = 'Cell'
|
|
|
|
GROUP BY STOCK_BARCODE,
|
|
|
|
STORAGE_MAIN.CELL_ID,
|
|
CELL_Y,
|
|
CELL_X
|
|
|
|
ORDER BY
|
|
max(substring(ENTRY_TIME,0,11)),
|
|
ABS({5}-isnull(SUM(STORAGE_LIST_QUANTITY),0)),
|
|
MANAGE_LIST_QUANTITY DESC,
|
|
CELL_Y,
|
|
CELL_X",
|
|
/*0*/string.Format(" AND CELL_STATUS = '{0}'", SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*1*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*2*/GOODS_ID,
|
|
/*3*/ GOODS_PROPERTY,
|
|
/*4*/LANE_WAY,
|
|
/*5*/MANAGE_LIST_QUANTITY);
|
|
///*6自动检定必须是24*/(GOODS_ID.Equals(1) && mWH_CELL.CELL_CODE.Equals("22004")) ? " HAVING ISNULL(SUM(STORAGE_LIST_QUANTITY),0) = 24" : string.Empty);
|
|
//,
|
|
///*7任务号*/ string.IsNullOrEmpty(IO_TASK_NO)?
|
|
//string.Format(" and ( IO_TASK_NO = '' or IO_TASK_NO is null)"):
|
|
//string.Format(" and ( IO_TASK_NO = '{0}' or IO_TASK_NO = '' or IO_TASK_NO is null)", IO_TASK_NO)
|
|
|
|
DataTable dt = this.GetList(sSQL);
|
|
|
|
bResult = dt.Rows.Count > 0;
|
|
|
|
if (bResult)
|
|
{
|
|
START_CELL_ID = Convert.ToInt32(dt.Rows[0]["CELL_ID"]);
|
|
|
|
STOCK_BARCODE = Convert.ToString(dt.Rows[0]["STOCK_BARCODE"]);
|
|
|
|
STORAGE_LIST_QUANTITY = Convert.ToDecimal(dt.Rows[0]["MANAGE_LIST_QUANTITY"]);
|
|
}
|
|
else
|
|
{
|
|
START_CELL_ID = 0;
|
|
|
|
sResult = string.Format("未找到出库货位");
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 四川电力 根据物料及物料属性获得出库巷道
|
|
/// </summary>
|
|
/// <param name="START_WAREHOUSE_ID"></param>
|
|
/// <param name="START_AREA_ID"></param>
|
|
/// <param name="START_LOGIC_ID"></param>
|
|
/// <param name="END_CELL_ID"></param>
|
|
/// <param name="GOODS_ID"></param>
|
|
/// <param name="GOODS_PROPERTY"></param>
|
|
/// <param name="STORAGE_LIST_TYPE"></param>
|
|
/// <param name="dtLANEWAY"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public bool LaneWayGetList(int END_CELL_ID,
|
|
int GOODS_ID,
|
|
string GOODS_PROPERTY_CONDITION,
|
|
out DataTable dtLANEWAY,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
dtLANEWAY = null;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mWH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
bResult = null != mWH_CELL;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = "未找到出库站台";
|
|
|
|
return bResult;
|
|
}
|
|
|
|
string sSQL = string.Format(@"SELECT DEVICE_CODE,
|
|
LANE_WAY ,
|
|
SUM(STORAGE_LIST_QUANTITY) AS STORAGE_BALANCE,
|
|
dbo.OUTTASKBALANCE(DEVICE_CODE) AS OUT_TASK_BALANCE
|
|
FROM V_STORAGE_LIST
|
|
WHERE GOODS_ID = {2}
|
|
{3}
|
|
AND CELL_TYPE = 'Cell'
|
|
AND DEVICE_CODE IN (SELECT START_DEVICE FROM IO_CONTROL_ROUTE WHERE END_DEVICE='{4}' AND CONTROL_ROUTE_STATUS = 1 AND CONTROL_ROUTE_TYPE = 2)
|
|
{0}
|
|
{1}
|
|
GROUP BY LANE_WAY,DEVICE_CODE",
|
|
/*0*/string.Format(" AND ( CELL_STATUS = '{0}' or CELL_STATUS = '{1}') ", SiaSun.LMS.Enum.CELL_STATUS.Full.ToString(), SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*1*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*2*/GOODS_ID,
|
|
/*3*/GOODS_PROPERTY_CONDITION,
|
|
/*4*/mWH_CELL.DEVICE_CODE
|
|
);
|
|
|
|
dtLANEWAY = this.GetList(sSQL);
|
|
|
|
bResult = dtLANEWAY.Rows.Count > 0;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = string.Format("未找到出库巷道");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 根据配盘方案 获得出库巷道
|
|
/// </summary>
|
|
/// <param name="END_CELL_ID"></param>
|
|
/// <param name="GOODS_ID"></param>
|
|
/// <param name="GOODS_PROPERTY_CONDITION"></param>
|
|
/// <param name="dtLANEWAY"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public bool LaneWayGetList(int END_CELL_ID,
|
|
int TEMPLATE_ID,
|
|
out DataTable dtLANEWAY,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
dtLANEWAY = null;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mWH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
bResult = null != mWH_CELL;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = "未找到出库站台";
|
|
|
|
return bResult;
|
|
}
|
|
|
|
string sSQL = string.Format(@"SELECT DEVICE_CODE,
|
|
LANE_WAY ,
|
|
SUM(STORAGE_LIST_QUANTITY) AS STORAGE_BALANCE,
|
|
dbo.OUTTASKBALANCE(DEVICE_CODE) AS OUT_TASK_BALANCE
|
|
FROM V_STORAGE_LIST
|
|
WHERE TEMPATE_ID = {0}
|
|
AND CELL_TYPE = 'Cell'
|
|
AND DEVICE_CODE IN (SELECT START_DEVICE FROM IO_CONTROL_ROUTE WHERE END_DEVICE='{3}' AND CONTROL_ROUTE_STATUS = 1)
|
|
{1}
|
|
{2}
|
|
GROUP BY LANE_WAY,DEVICE_CODE",
|
|
/*0*/ TEMPLATE_ID,
|
|
/*1*/string.Format(" AND ( CELL_STATUS = '{0}' or CELL_STATUS = '{1}') ", SiaSun.LMS.Enum.CELL_STATUS.Full.ToString(), SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*2*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*3*/mWH_CELL.DEVICE_CODE
|
|
);
|
|
|
|
dtLANEWAY = this.GetList(sSQL);
|
|
|
|
bResult = dtLANEWAY.Rows.Count > 0;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = string.Format("未找到出库巷道");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 计划出库根据物料及物料属性获得出库巷道
|
|
/// </summary>
|
|
/// <param name="START_WAREHOUSE_ID"></param>
|
|
/// <param name="START_AREA_ID"></param>
|
|
/// <param name="START_LOGIC_ID"></param>
|
|
/// <param name="END_CELL_ID"></param>
|
|
/// <param name="GOODS_ID"></param>
|
|
/// <param name="GOODS_PROPERTY"></param>
|
|
/// <param name="STORAGE_LIST_TYPE"></param>
|
|
/// <param name="dtLANEWAY"></param>
|
|
/// <param name="sResult"></param>
|
|
/// <returns></returns>
|
|
public bool LaneWayGetListPlan(int END_CELL_ID,
|
|
int GOODS_ID,
|
|
string GOODS_PROPERTY_CONDITION,
|
|
out DataTable dtLANEWAY,
|
|
out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
|
|
dtLANEWAY = null;
|
|
|
|
string sSQL = string.Empty;
|
|
|
|
sResult = string.Empty;
|
|
|
|
SiaSun.LMS.Model.WH_CELL mWH_CELL = this._P_WH_CELL.GetModel(END_CELL_ID);
|
|
|
|
bResult = null != mWH_CELL;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = "未找到出库站台";
|
|
|
|
return bResult;
|
|
}
|
|
|
|
if (GOODS_ID == -1 || GOODS_ID == 102)//托盘和货笼
|
|
{
|
|
sSQL = string.Format(@"SELECT DEVICE_CODE,
|
|
LANE_WAY ,
|
|
SUM(STORAGE_LIST_QUANTITY) AS STORAGE_BALANCE,
|
|
SUM(DEVICE_CODE) AS OUT_TASK_BALANCE
|
|
FROM V_STORAGE_LIST
|
|
WHERE GOODS_ID = {2}
|
|
{3}
|
|
AND CELL_TYPE = 'Cell'
|
|
AND DEVICE_CODE IN (SELECT START_DEVICE FROM IO_CONTROL_ROUTE WHERE END_DEVICE='{4}' AND CONTROL_ROUTE_STATUS = 1)
|
|
{0}
|
|
{1}
|
|
GROUP BY LANE_WAY,DEVICE_CODE",
|
|
/*0*/string.Format(" AND ( CELL_STATUS = '{0}' or CELL_STATUS = '{1}') ", SiaSun.LMS.Enum.CELL_STATUS.Full.ToString(), SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*1*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*2*/GOODS_ID,
|
|
/*3*/GOODS_PROPERTY_CONDITION,
|
|
/*4*/mWH_CELL.DEVICE_CODE
|
|
);
|
|
}
|
|
else if (GOODS_ID == 3)//成品
|
|
{
|
|
sSQL = string.Format(@"SELECT DEVICE_CODE,
|
|
LANE_WAY ,
|
|
SUM(STORAGE_LIST_QUANTITY) AS STORAGE_BALANCE,
|
|
SUM(DEVICE_CODE) AS OUT_TASK_BALANCE
|
|
FROM V_STORAGE_LIST
|
|
WHERE GOODS_ID = {2} AND
|
|
GOODS_PROPERTY1='{3}'
|
|
AND CELL_TYPE = 'Cell'
|
|
AND DEVICE_CODE IN (SELECT START_DEVICE FROM IO_CONTROL_ROUTE WHERE END_DEVICE='{4}' AND CONTROL_ROUTE_STATUS = 1)
|
|
{0}
|
|
{1}
|
|
GROUP BY LANE_WAY,DEVICE_CODE",
|
|
/*0*/string.Format(" AND ( CELL_STATUS = '{0}' or CELL_STATUS = '{1}') ", SiaSun.LMS.Enum.CELL_STATUS.Full.ToString(), SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*1*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*2*/GOODS_ID,
|
|
/*3*/GOODS_PROPERTY_CONDITION,
|
|
/*4*/mWH_CELL.DEVICE_CODE
|
|
);
|
|
}
|
|
else
|
|
{
|
|
sSQL = string.Format(@"SELECT DEVICE_CODE,
|
|
LANE_WAY ,
|
|
SUM(STORAGE_LIST_QUANTITY) AS STORAGE_BALANCE,
|
|
SUM(DEVICE_CODE) AS OUT_TASK_BALANCE
|
|
FROM V_STORAGE_LIST
|
|
WHERE GOODS_ID = {2}
|
|
{3}
|
|
AND CELL_TYPE = 'Cell'
|
|
AND DEVICE_CODE IN (SELECT START_DEVICE FROM IO_CONTROL_ROUTE WHERE END_DEVICE='{4}' AND CONTROL_ROUTE_STATUS = 1)
|
|
{0}
|
|
{1}
|
|
GROUP BY LANE_WAY,DEVICE_CODE",
|
|
/*0*/string.Format(" AND ( CELL_STATUS = '{0}' or CELL_STATUS = '{1}') ", SiaSun.LMS.Enum.CELL_STATUS.Full.ToString(), SiaSun.LMS.Enum.CELL_STATUS.Pallet.ToString()),
|
|
/*1*/string.Format(" AND RUN_STATUS = '{0}'", SiaSun.LMS.Enum.RUN_STATUS.Enable.ToString()),
|
|
/*2*/GOODS_ID,
|
|
/*3*/GOODS_PROPERTY_CONDITION,
|
|
/*4*/mWH_CELL.DEVICE_CODE
|
|
);
|
|
}
|
|
|
|
dtLANEWAY = this.GetList(sSQL);
|
|
|
|
bResult = dtLANEWAY.Rows.Count > 0;
|
|
|
|
if (!bResult)
|
|
{
|
|
sResult = string.Format("未找到出库巷道");
|
|
|
|
return bResult;
|
|
}
|
|
|
|
return bResult;
|
|
}
|
|
|
|
/// <summary>货位-更改状态
|
|
/// 货位-更改状态
|
|
/// </summary>
|
|
/// <param name="CELL_ID">货位编号</param>
|
|
/// <param name="CELL_TYPE">货位类型</param>
|
|
/// <param name="CELL_STATUS">存储状态</param>
|
|
/// <param name="RUN_STATUS">运行状态</param>
|
|
/// <param name="sResult">返回值</param>
|
|
/// <returns></returns>
|
|
public bool CellUpdateStatus(int CELL_ID, string CELL_STATUS, string RUN_STATUS, out string sResult)
|
|
{
|
|
bool bResult = true;
|
|
sResult = string.Empty;
|
|
if (0 == CELL_ID)
|
|
{
|
|
return bResult;
|
|
}
|
|
|
|
SiaSun.LMS.Model.WH_CELL mWH_CELL = this._P_WH_CELL.GetModel(CELL_ID);
|
|
if (null == mWH_CELL)
|
|
{
|
|
bResult = false;
|
|
sResult = string.Format("未找到货位{0}", CELL_ID.ToString());
|
|
return bResult;
|
|
}
|
|
|
|
if (mWH_CELL.CELL_TYPE == Enum.CELL_TYPE.Cell.ToString() ||
|
|
mWH_CELL.CELL_STORAGE_TYPE == Enum.CELL_STORAGE_TYPE.Single.ToString())
|
|
{
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(CELL_STATUS))
|
|
{
|
|
mWH_CELL.CELL_STATUS = CELL_STATUS;
|
|
}
|
|
if (!string.IsNullOrEmpty(RUN_STATUS))
|
|
{
|
|
mWH_CELL.RUN_STATUS = RUN_STATUS;
|
|
}
|
|
this._P_WH_CELL.Update(mWH_CELL);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
bResult = false;
|
|
sResult = ex.Message;
|
|
}
|
|
}
|
|
return bResult;
|
|
}
|
|
}
|
|
}
|