在一般的仓储系统,我们常常有个表是存放物品信息的,常见的属性有grid,layer,注意:这个属性是最大索引表示,也就是这个格子最大的储存数量,然后在物品明细中,我们会单个存放其中的粒子属性,所以我们就要去遍历了。算法如下。其中的剩余货架就是我们可用的货架隔层,这是最基本的出入库算法。
public class STORE_goods_Detail { public static List<CanIn> GetCanInList(string Line_Code,List<XModel.STORE_SHELVE> list) { #region 1.先查询这个line里的所有货架 List<XModel.STORE_SHELVE> shelveList = list; //最大索引 List<CanIn> detailList = new List<CanIn>();//单个粒子 List<CanIn> surplusList = new List<CanIn>();//剩余货架 #endregion #region 2.根据这些货架的代码去关联详情表然后看看里面的列和行有没有被占用 foreach (XModel.STORE_SHELVE item in shelveList) { string shelve_code = item.Shelve_code; //在每个货架中来循环看看详情表 string sql = $"select * from STORE_GOODS_DETAIL where shelve_code = '{shelve_code}' and sout_code is null";//查询这个货架未出库的 SqlDataReader DetailReader = XTools.XDB.SQLHelper.GetReader(sql); if (DetailReader != null) { while (DetailReader.Read()) { detailList.Add(new CanIn() { shelve_code = DetailReader["shelve_code"].ToString(), shelve_grid = DetailReader["shelve_grid"].ToString(), shelve_layer = DetailReader["shelve_layer"].ToString() }); } } } #endregion #region 3.查询剩余的货架粒子 for (int i = 0; i < shelveList.Count; i++)//循环每个货架<