在一般的仓储系统,我们常常有个表是存放物品信息的,常见的属性有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++)//循环每个货架 {for (int g = 1; g <= Convert.ToInt32(shelveList[i].Shelve_grid); g++){for (int l = 1; l <= Convert.ToInt32(shelveList[i].Shelve_layer); l++){//如果未出库的里没有这个 那就可以添加if (detailList.FirstOrDefault(a => a.shelve_grid == g.ToString()&& a.shelve_code == shelveList[i].Shelve_code&& a.shelve_layer == l.ToString()) == null){surplusList.Add(new CanIn(){shelve_grid = g.ToString(),shelve_layer = l.ToString(),shelve_code = shelveList[i].Shelve_code,shelve_name = shelveList[i].Shelve_name});}}}}#endregionreturn surplusList;}public static int Add(XModel.STORE_GOODS_DETAIL model){string sql = @"INSERT INTO [STORE_GOODS_DETAIL](gdetail_code,goods_code,gdetail_index,sin_code,shelve_code,shelve_layer,shelve_grid,gdtail_build,create_time,del_status)VALUES ('@gdetail_code','@goods_code','@gdetail_index','@sin_code','@shelve_code','@shelve_layer','@shelve_grid','@gdtail_build','@create_time','@del_status')";SqlParameter[] paras ={XTools.XDB.SQLHelper.GetParameter("@gdetail_code",model.Gdetail_code,SqlDbType.Char,32),XTools.XDB.SQLHelper.GetParameter("@goods_code",model.Goods_code,SqlDbType.Char,32),XTools.XDB.SQLHelper.GetParameter("@gdetail_index",model.Gdetail_code,SqlDbType.VarChar,18),XTools.XDB.SQLHelper.GetParameter("@sin_code",model.Sin_code,SqlDbType.Char,32),XTools.XDB.SQLHelper.GetParameter("@shelve_code",model.Shelve_code,SqlDbType.Char,32),XTools.XDB.SQLHelper.GetParameter("@shelve_layer",model.Shelve_layer,SqlDbType.Int,32),XTools.XDB.SQLHelper.GetParameter("@shelve_grid",model.Shelve_grid,SqlDbType.Int,32),XTools.XDB.SQLHelper.GetParameter("@gdtail_build",model.Gdtail_build,SqlDbType.DateTime,255),XTools.XDB.SQLHelper.GetParameter("@create_time",model.Create_time,SqlDbType.DateTime,255),XTools.XDB.SQLHelper.GetParameter("@del_status",model.Del_status,SqlDbType.Int,4),};return XTools.XDB.SQLHelper.ExecuteSQL(sql, paras);}}public class CanIn{public string shelve_layer { get; set; }public string shelve_grid { get; set; }public string shelve_code { get; set; }public string shelve_name { get; set; }}
这个最近做的项目sql。保留下。
--【仓库信息】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_INFO(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号store_code CHAR(32) NOT NULL PRIMARY KEY, --仓库代码store_name VARCHAR(64) NOT NULL, --仓库名称store_order INT NOT NULL DEFAULT(0), --排序:倒序store_add VARCHAR(255), --地址store_warden VARCHAR(16), --管理员store_phone VARCHAR(16), --管理员手机store_tel VARCHAR(16), --固定电话store_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【仓库分区】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_AREA(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号sarea_code CHAR(32) NOT NULL PRIMARY KEY, --分区代码sarea_name VARCHAR(64) NOT NULL, --分区名称store_code CHAR(32) NOT NULL, --仓库代码FOREIGN KEY (store_code) REFERENCES STORE_INFO(store_code),sarea_order INT NOT NULL DEFAULT(0), --排序:倒序sarea_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【列管理】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_LINE(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号sline_code CHAR(32) NOT NULL PRIMARY KEY, --仓库列代码sline_name VARCHAR(64) NOT NULL, --列名称sline_order INT NOT NULL DEFAULT(0), --排序:倒序sarea_code CHAR(32) NOT NULL, --分区代码FOREIGN KEY (sarea_code) REFERENCES STORE_AREA(sarea_code),sline_index VARCHAR(18) NOT NULL, --条码编号:当前时间戳-2000年时间戳sline_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【货架管理】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_SHELVE(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号shelve_code CHAR(32) NOT NULL PRIMARY KEY, --货架代码shelve_name VARCHAR(64) NOT NULL, --货架名称shelve_order INT NOT NULL DEFAULT(0), --排序sline_code CHAR(32) NOT NULL, --所在列代码FOREIGN KEY (sline_code) REFERENCES STORE_LINE(sline_code),shelve_index VARCHAR(18) NOT NULL, --条码编号:当前时间戳-2000年时间戳shelve_layer INT NOT NULL, --货架层数shelve_grid INT NOT NULL DEFAULT(0), --每一层格子数,为0则精确到层shelve_bearing INT, --承重(单位KG)shelve_volume FLOAT, --体积(单位m³)shelve_desc TEXT, --备注 create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)--【物品分类】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_TYPE(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号stype_code CHAR(32) NOT NULL PRIMARY KEY, --分类代码stype_name VARCHAR(64) NOT NULL, --分类名称stype_name_fpy VARCHAR(255), --名称拼音首字母stype_name_py VARCHAR(255), --名称拼音全拼parent_stype_code CHAR(32), --上级分类代码FOREIGN KEY (parent_stype_code) REFERENCES STORE_TYPE(stype_code),stype_level VARCHAR(128) NOT NULL, --分类层级:以10000001为起始,+1递增,每一个级别+8位stype_order INT NOT NULL DEFAULT(0), --排序stype_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【物品信息】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_GOODS(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号goods_code CHAR(32) NOT NULL PRIMARY KEY, --物品代码goods_name VARCHAR(64) NOT NULL, --物品名称goods_name_fpy VARCHAR(255), --名称拼音首字母goods_name_py VARCHAR(255), --名称拼音全拼goods_order INT NOT NULL DEFAULT(0), --排序:倒序stype_code CHAR(32) NOT NULL, --分类代码FOREIGN KEY (stype_code) REFERENCES STORE_TYPE(stype_code),goods_alarm_lower INT NOT NULL DEFAULT(0), --库存数量预警,≤0不预警goods_alarm_upper INT NOT NULL DEFAULT(0), --库存数量预警,≤0不预警goods_valid INT NOT NULL DEFAULT(0), --保质期(单位:月)≤0不过期goods_index VARCHAR(18), --统一条码编号:当前时间戳-2000年时间戳goods_desc TEXT, --物品介绍goods_pic VARCHAR(255), --物品图片,人防系统展示不用create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【入库类型】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_IN_TYPE(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号itype_code CHAR(32) NOT NULL PRIMARY KEY, --入库类型代码itype_name VARCHAR(64) NOT NULL, --名称itype_name_fpy VARCHAR(255), --名称拼音首字母itype_name_py VARCHAR(255), --名称拼音全拼itype_order INT NOT NULL DEFAULT(0), --排序itype_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)--【入库记录】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_IN(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号sin_code CHAR(32) NOT NULL PRIMARY KEY, --入库记录代码sin_name VARCHAR(64) NOT NULL, --入库说明itype_code CHAR(32) NOT NULL, --入库类型代码FOREIGN KEY (itype_code) REFERENCES STORE_IN_TYPE(itype_code),sin_desc TEXT, --备注user_code CHAR(32) NOT NULL, --操作用户FOREIGN KEY (user_code) REFERENCES SYS_USER(user_code),create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【出库类型】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_OUT_TYPE(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号otype_code CHAR(32) NOT NULL PRIMARY KEY, --出库类型代码otype_name VARCHAR(64) NOT NULL, --名称otype_name_fpy VARCHAR(255), --名称拼音首字母otype_name_py VARCHAR(255), --名称拼音全拼otype_order INT NOT NULL DEFAULT(0), --排序otype_desc TEXT, --备注create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【出库记录】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_OUT(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号sout_code CHAR(32) NOT NULL PRIMARY KEY, --出库记录代码sout_name VARCHAR(64) NOT NULL, --出库说明otype_code CHAR(32) NOT NULL, --出库类型代码FOREIGN KEY (otype_code) REFERENCES STORE_OUT_TYPE(otype_code),sout_desc TEXT, --备注user_code CHAR(32) NOT NULL, --操作用户FOREIGN KEY (user_code) REFERENCES SYS_USER(user_code),create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)
--【物品明细】【编订人:ZQG】【编订时间:2019年05月21日】
CREATE TABLE STORE_GOODS_DETAIL(sys_id INT NOT NULL IDENTITY UNIQUE(sys_id), --自编号gdetail_code CHAR(32) NOT NULL PRIMARY KEY, --物品明细代码goods_code CHAR(32) NOT NULL, --物品代码FOREIGN KEY (goods_code) REFERENCES STORE_GOODS(goods_code), gdetail_index VARCHAR(18), --计件条码编号:当前时间戳-2000年时间戳sin_code CHAR(32), --入库记录代码FOREIGN KEY (sin_code) REFERENCES STORE_IN(sin_code),sout_code CHAR(32), --出库记录代码FOREIGN KEY (sout_code) REFERENCES STORE_OUT(sout_code),shelve_code CHAR(32), --货架代码FOREIGN KEY (shelve_code) REFERENCES STORE_SHELVE(shelve_code),shelve_layer INT NOT NULL DEFAULT(0), --货架层级shelve_grid INT NOT NULL DEFAULT(0), --层级位置gdtail_build DATETIME, --生产日期create_time DATETIME NOT NULL DEFAULT(GETDATE()), --创建时间del_status INT NOT NULL DEFAULT(0), --删除:0-未删除,1-已删除del_time DATETIME --删除时间
)