abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)
abp(net core)+easyui+efcore实现仓储管理系统目录
abp(net core)+easyui+efcore实现仓储管理系统——EasyUI前端页面框架 (十八)
一.前言
出库单的功能。能学习了出库单管理之后,WMS的 最基本的功能算是完成了。当然一个成熟的WMS还包括了盘点,报表,策略规则,移库功能及与其他系统(ERP、TMS等)的接口,实现无缝集成,打破信息孤岛,让数据实时、准确和同步。
二、出库单的流程
1.一般情况下会有一个前置的OMS系统——即订单管理系统。主要功能之一是由客户填写订单。
2.客户把订单下第三方物流公司时,第三方物流公司会生成出货单推送到仓库时,系统会自动生成拣货单,理货员根据拣货单拣货,并制作出库单,然后打印标签,粘贴条码标签,分配托盘,核验条码标签,货物装箱,订舱出库,并在系统中对出库单进行审核通过。整个流程如下图。
当然我们接下来要实现的出库单功能,没有这么复杂。
三、创建出库单实体
1. 做为一个出库单,在数据库中一般存在两张表,表头OutStockOrder,表体OutStockDetail
2.在Visual Studio 2017的“解决方案资源管理器”中,右键单击“ABP.TPLMS.Core”项目的“Entitys”文件夹,在弹出菜单中选择“添加” >
> “类”。 将类命名为 OutStockOrder,然后选择“添加”。
3.创建OutStockOrder类继承自Entity<int>,通过实现审计模块中的IHasCreationTime来实现保存创建时间。代码如下:
- using Abp.Domain.Entities;
- using Abp.Domain.Entities.Auditing;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using System.Text;
- namespace ABP.TPLMS.Entitys
- {
- public class OutStockOrder: Entity<int>, IHasCreationTime
- {
- public const int MaxLength = ;
- public OutStockOrder()
- {
- No = string.Empty;
- CustomerCode = string.Empty;
- CustomerName = string.Empty;
- WarehouseNo = string.Empty;
- DeliveryNo = string.Empty;
- TallyClerk = string.Empty;
- TallyTime = string.Empty;
- CreationTime = DateTime.Now;
- Oper = string.Empty;
- Checker = string.Empty;
- CheckTime = string.Empty;
- Gwt = ;
- Nwt = ;
- PackageQty = ;
- OwnerCode = string.Empty;
- OwnerName = string.Empty;
- Remark = string.Empty;
- Status = ;
- PreOutStockTime = string.Empty;
- }
- [StringLength()]
- [Required]
- public string No { get; set; }
- /// <summary>
- /// 客户名称
- /// </summary>
- [StringLength(MaxLength)]
- [Required]
- public string CustomerName { get; set; }
- /// <summary>
- /// 车牌号
- /// </summary>
- public string VehicleNo { get; set; }
- /// <summary>
- /// 客户代码
- /// </summary>
- [StringLength()]
- [Required]
- public string CustomerCode { get; set; }
- /// <summary>
- /// 收货人代码
- /// </summary>
- public string ConsigneeCode { get; set; }
- /// <summary>
- /// 收货人
- /// </summary>
- public string Consignee{get ;set;}
- /// <summary>
- /// 收货人社会信用代码
- /// </summary>
- public string ConsigneeSCCD { get; set; }
- /// <summary>
- /// 托运人,发货人
- /// </summary>
- public string Shipper { get; set; }
- /// <summary>
- /// 托运人,发货人代码
- /// </summary>
- public string ShipperCode { get; set; }
- /// <summary>
- /// 托运人,发货人社会信用代码
- /// </summary>
- public string ShipperSCCD { get; set; }
- /// <summary>
- /// 通知人
- /// </summary>
- public string Notify { get; set; }
- /// <summary>
- /// 通知人代码
- /// </summary>
- public string NotifyCode { get; set; }
- /// <summary>
- /// 通知人社会信用代码
- /// </summary>
- public string NotifySCCD { get; set; }
- /// <summary>
- /// 出货单号
- /// </summary>
- public string DeliveryNo { get; set; }
- /// <summary>
- /// 仓库号
- /// </summary>
- public string WarehouseNo { get; set; }
- /// <summary>
- /// 货主
- /// </summary>
- [StringLength(MaxLength)]
- [Required]
- public string OwnerName { get; set; }
- public decimal Gwt { get; set; }
- public decimal Nwt { get; set; }
- public int PackageQty { get; set; }
- /// <summary>
- /// 理货时间
- /// </summary>
- [StringLength()]
- public string TallyTime { get; set; }
- /// <summary>
- /// 理货员
- /// </summary>
- [StringLength()]
- public string TallyClerk { get; set; }
- [StringLength()]
- public string Oper { get; set; }
- public int Status { get; set; }
- [StringLength()]
- public string OwnerCode { get; set; }
- /// <summary>
- /// 预计出库时间
- /// </summary>
- [StringLength()]
- public string PreOutStockTime { get; set; }
- /// <summary>
- /// 审核人
- /// </summary>
- [StringLength()]
- public string Checker { get; set; }
- [StringLength()]
- public string CheckTime { get; set; }
- [StringLength()]
- public string Remark { get; set; }
- public DateTime CreationTime { get; set; }
- [StringLength()]
- public string LastUpdateTime { get; set; }
- [StringLength()]
- public string LastOper { get; set; }
- }
- }
4. 重得第2,3步,我们在“ABP.TPLMS.Core”项目的“Entitys”文件夹,创建OutStockOrderDetail类。代码如下:
- using Abp.Domain.Entities;
- using Abp.Domain.Entities.Auditing;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel.DataAnnotations;
- using System.ComponentModel.DataAnnotations.Schema;
- using System.Text;
- namespace ABP.TPLMS.Entitys
- {
- public class OutStockOrderDetail : Entity<int>, IHasCreationTime
- {
- public const int MaxLength = ;
- public OutStockOrderDetail()
- {
- this.Qty = ;
- this.CargoCode = string.Empty;
- this.CargoName = string.Empty;
- this.Brand = string.Empty;
- this.Country = string.Empty;
- this.CreationTime = DateTime.Now;
- this.Curr = string.Empty;
- this.GrossWt = ;
- this.Height = ;
- this.HSCode = string.Empty;
- this.Length = ;
- this.SecdLawfQty = ;
- this.LawfQty = ;
- this.NetWt = ;
- this.Package = string.Empty;
- this.Price = ;
- this.Spcf = string.Empty;
- this.Unit = string.Empty;
- this.InStockNo = string.Empty;
- this.LawfUnit = string.Empty;
- this.Vol = ;
- this.Width = ;
- this.LawfUnit = string.Empty;
- this.SecdLawfUnit = string.Empty;
- this.Batch = string.Empty;
- this.InStockOrderDetailId = ;
- }
- public int SupplierId { get; set; }
- [MaxLength()]
- public string CargoCode { get; set; }
- [MaxLength()]
- public string HSCode { get; set; }
- [MaxLength(MaxLength)]
- public string CargoName { get; set; }
- [MaxLength(MaxLength)]
- public string Spcf { get; set; }
- [MaxLength()]
- public string Unit { get; set; }
- /// <summary>
- /// 目的国
- /// </summary>
- [MaxLength()]
- public string DestCountry { get; set; }
- /// <summary>
- /// 原产国
- /// </summary>
- [MaxLength()]
- public string Country { get; set; }
- [MaxLength()]
- public string Brand { get; set; }
- [MaxLength()]
- public string Curr { get; set; }
- [MaxLength()]
- public string Package { get; set; }
- public decimal Length { get; set; }
- public decimal Width { get; set; }
- public decimal Height { get; set; }
- public decimal Vol { get; set; }
- public decimal Price { get; set; }
- public decimal TotalAmt { get; set; }
- public decimal GrossWt { get; set; }
- public decimal NetWt { get; set; }
- public DateTime CreationTime { get; set; }
- [MaxLength()]
- public string InStockNo { get; set; }
- public int InStockOrderDetailId { get; set; }
- public decimal Qty { get; set; }
- public decimal LawfQty { get; set; }
- public decimal SecdLawfQty { get; set; }
- [MaxLength()]
- public string LawfUnit { get; set; }
- [MaxLength()]
- public string SecdLawfUnit { get; set; }
- [MaxLength()]
- public string Batch { get; set; }
- public string Loc { get; set; }
- }
- }
5.定义入库单的实体之后,我们去“ABP.TPLMS.EntityFrameworkCore”项目中的“TPLMSDbContext”类中定义实体对应的DbSet,以应用Code First 数据迁移。添加以下代码
- using Microsoft.EntityFrameworkCore;
- using Abp.Zero.EntityFrameworkCore;
- using ABP.TPLMS.Authorization.Roles;
- using ABP.TPLMS.Authorization.Users;
- using ABP.TPLMS.MultiTenancy;
- using ABP.TPLMS.Entitys;
- namespace ABP.TPLMS.EntityFrameworkCore
- {
- public class TPLMSDbContext : AbpZeroDbContext<Tenant, Role, User, TPLMSDbContext>
- {
- /* Define a DbSet for each entity of the application */
- public TPLMSDbContext(DbContextOptions<TPLMSDbContext> options)
- : base(options)
- {
- }
- public DbSet<Module> Modules { get; set; }
- public DbSet<Supplier> Suppliers { get; set; }
- public DbSet<Cargo> Cargos { get; set; }
- public DbSet<Org> Orgs { get; set; }
- public virtual DbSet<InStockOrder> InStockOrder { get; set; }
- public virtual DbSet<InStockOrderDetail> InStockOrderDetail { get; set; }
- public virtual DbSet<InStockOrderDetailLoc> InStockOrderDetailLoc { get; set; }
- public virtual DbSet<OutStockOrder> OutStockOrder { get; set; }
- public virtual DbSet<OutStockOrderDetail> OutStockOrderDetail { get; set; }
- }
- }
6.从菜单中选择“工具->NuGet包管理器器—>程序包管理器控制台”菜单。
7. 在PMC中,默认项目选择EntityframeworkCore对应的项目后。输入以下命令:Add-Migration AddEntityOutStock,创建迁移。如下图。
8. 在上面的命令执行完毕之后,创建成功后,会在Migrations文件夹下创建时间_AddEntityOutStock格式的类文件,这些代码是基于DbContext指定的模型。如下图。
9.在程序包管理器控制台,输入Update-Database,回车执行迁移。执行成功后,如下图。
10. 在SQL Server Management Studio中查看数据库,OutStockOrder、OutStockOrderDetail两张表创建成功。
abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)的更多相关文章
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之五(五十四)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之六(五十五)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- Abp(net core)+easyui+efcore实现仓储管理系统——出库管理之七(五十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之二(五十)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之三(五十一)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——出库管理之四(五十三)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- Abp(net core)+easyui+efcore实现仓储管理系统——出库管理之八(五十七)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之六(四十二)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
随机推荐
- K - Painful Bases 状压dp
Painful Bases LightOJ - 1021 这个题目一开始看,感觉有点像数位dp,但是因为是最多有16进制,因为限制了每一个数字都不同最多就有16个数. 所以可以用状压dp,看网上题解是 ...
- 网络流二十四题,题解summary
没有全部写完,有几题以后再补吧. 第一题:最简单的:飞行员配对方案问题 讲讲这个题目为什么可以用网络流? 因为这个题目是要进行两两之间的匹配,这个就可以想到用二分图匹配,二分图匹配又可以用网络流写. ...
- 使用 Minikube 安装 Kubernetes
概述: 单机低配置主机也可以玩转kubernetes集群.该文章是将介绍使用Minikube安装Kubernetes集群(一般用于本地/开发环境). 配置环境: 硬件:CPU 至少2个核心,至少2.5 ...
- CSS实现div填充剩余高度
相信小伙伴们经常会遇到这个问题,我也是填了很多坑,查了很多资料,才解决的,下面我列出2个方法: 我们的需求如图: 1:(这个方法不推荐使用,因为可能会因为设备不同,而出现未知BUG,特别是div出现p ...
- CF-612D The Union of k-Segments 差分
D. The Union of k-Segments 题意 给出n个线段,以及一个数字k,让求出有哪些线段:线段上所有的点至少被覆盖了k次. 思路 假如忽略掉线段的左右端点范围,肯定是使用差分来维护每 ...
- PK,FK, UK,DF, CK
PK 主键 constraint primary key FK 主外键关系 constraint foreign references UK 唯一约束 constraint unique key DF ...
- 手把手golang教程【二】——数组与切片
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第五篇,这一篇我们将会了解golang中的数组和切片的使用. 数组与切片 golang当中数组和C++中的定义类似, ...
- kali2020解决安装pip的问题
在以前的版本中,我们需要安装pip时,只需要执行下面命令即可安装: apt-get install python-pip 但是在更新到2020.1以后,上面的命令安装会提示无法定位安装包的问题! 解决 ...
- 学习笔记:平衡树-splay
嗯好的今天我们来谈谈cosplay splay是一种操作,是一种调整二叉排序树的操作,但是它并不会时时刻刻保持一个平衡,因为它会根据每一次操作把需要操作的点旋转到根节点上 所谓二叉排序树,就是满足对树 ...
- JavaScript和TypeScript的区别和联系
转载自:http://web.jobbole.com/93618/?utm_source=group.jobbole.com&utm_medium=relatedArticles JavaSc ...