经典的出入库算法(C#实现)
在一般的仓储系统,我们常常有个表是存放物品信息的,常见的属性有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 --删除时间
)
转载于:https://www.cnblogs.com/ZaraNet/p/11242465.html
经典的出入库算法(C#实现)相关推荐
- 经典十大排序算法(含升序降序,基数排序含负数排序)【Java版完整代码】【建议收藏系列】
经典十大排序算法[Java版完整代码] 写在前面的话 十大排序算法对比 冒泡排序 快速排序 直接选择排序 堆排序 归并排序 插入排序 希尔排序 计数排序 桶排序 基数排序 完整测试类 写在前面的话 ...
- java实现apriori算法_七大经典、常用排序算法的原理、Java 实现以及算法分析
0. 前言 大家好,我是多选参数的程序员,一个正再 neng 操作系统.学数据结构和算法以及 Java 的硬核菜鸡.数据结构和算法是我准备新开的坑,主要是因为自己再这块确实很弱,需要大补(残废了一般) ...
- 经典的K-means聚类算法
原理部分主要来自大牛zouxy09和trnadomeet两个人的博客:后面的代码详细讲解为自己精心编写 一.概述 非监督学习的一般流程是:先从一组无标签数据中学习特征,然后用学习到的 ...
- 游戏编程里面有哪些经典或者很酷的算法?
光栅化 Bresenham's line algorithm [1]:经典的绘画直线算法,后来还可以稍作修改用于绘画圆弧[2],都不用三角函数或除数,只需用整数加法.减法和乘法. Perspectiv ...
- 详解4种经典的限流算法
最近,我们的业务系统引入了Guava的RateLimiter限流组件,它是基于令牌桶算法实现的,而令牌桶是非常经典的限流算法.本文将跟大家一起学习几种经典的限流算法. 限流是什么? 维基百科的概念如下 ...
- 经典SVM之SMO算法实现
经典SVM之SMO算法实现 一.浅谈理论 (1)原始问题部分 对于理论不做过深的解释和讨论.原因有两个.第一,我也不会.第二,写公式符号太头疼!所以,只是简单 给出 一些最重要的公式或者 ...
- C++中经典的垃圾回收算法
1.引用计数算法 引用计数(Reference Counting)算法是每个对象计算指向它的指针的数量,当有一个指针指向自己时计数值加1:当删除一个指向自己的指针时,计数值减1,如果计数值减为0,说明 ...
- [算法] 当今世界最为经典的十大算法--投票进行时
当今世界最为经典的十大算法--投票进行时 ---------------------------------------- 第一部分.来自圣经的十大算法 第十名:Huffman coding(霍夫曼编 ...
- 自动化立体仓库出入库调度研究
1 引言 自动化立体仓库是一种用计算机控制管理和用自动控制装置控制堆垛机进行存取作业的仓库.对于给定的自动化立体仓库,其运行效率高低与出入库调度系统的设计好坏有密切关系,文献?1?3?对自动化立体仓库 ...
- 汽车出入库的计时计费系统设计
摘要 随着汽车的普及程度越来越高,人们对汽车的便捷停车管理提出了新的要求,既要求方便快捷,又要求精准计算停车费.传统的汽车入库计时计费不仅需要耗费大量的人工去计算,还易出现计算错误.因此,设计一款数字 ...
最新文章
- Python的进度条的制作
- 使用Slf4j集成Log4j2构建项目日志系统的完美解决方案
- 遭央视曝光的“AI算命”,背后竟然隐藏了一个价值千亿的市场!?
- 请问这样写法,第二个container的内容怎么没有显示的呢?但是加上jumbotron就可以显示了,不明白。...
- 计算机本地无法连接失败怎么办,本地连接连不上怎么办?本地连接连不上解决方法...
- Synchronized 锁升级机制
- onclick 事件
- MySQL 字符串拼接 - 多种字符串拼接实战案例
- 电路基础学习笔记2:串并联电路
- 完整的省市县三级联动
- 空间相关性(1)——莫兰散点图
- [深度学习入门]两阶段目标检测算法到Faster RCNN
- SSM毕设项目超市会员卡管理系统dq469(java+VUE+Mybatis+Maven+Mysql)
- TJOI2015 弦论
- java applet插件_Atitit.java的浏览器插件技术 Applet japplet attilax总结
- 如何在PPT中对文字进行错位排版
- 【机器学习】专题学习丨1. 损失函数loss积累丨
- JVM(java堆)
- BeanCopy 常用工具类
- word缺失字体问题
热门文章
- python 伪多线程_从伪并行的 Python 多线程说起
- ppt地图分布图一块一块的怎么做_没想到PPT还能这样做动态地图,实在是太炫酷了,用了再也离不开...
- python数据分析:Pandas
- hdoj1003+codeup2086:Max Sum最大连续子序列和(dp基础题+dp入门-----分治/遍历求和/dp)
- 列转行 带逗号_Excel 统计压岁钱?按逗号拆分单元格且纵向排列,分离中文和数字...
- gitee java pdf转图片_openOffice word转pdf,pdf转图片优化版
- 算法: 最大矩形面积85. Maximal Rectangle
- 自动驾驶 6-1: 横向车辆控制介绍 Lesson 1: Introduction to Lateral Vehicle Control
- 翻译:YOLOv5 新版本——改进与评估
- 极客大学产品经理训练营:数据分析 第16课总结