在做MVC项目需要单据编号或者条码的时候,如何让单据编号或条码实现字母开头+当天日期+单据编号或条码, -、建一个公共类: namespace PSSMTSystem.Common { public class OriginalNumber { //实例化Model PSSMTSystemEntities myModel = new PSSMTSystemEntities();
public string GenerateReceipts(string strQZ, string Number)//生成单据数
{
try
{
string strNumber = "";
//从第几个开始,截取长度为 几 的字符串
string date = Number.Substring(0, 8);//日期(202103300001)
string dtnow = DateTime.Now.ToString("yyyyMMdd");
//比较单号日期和现在日期
if (date == dtnow)
{
//(1)日期一致:原来单号 + 1
//从右边开始取4个字符
int intNumber = System.Convert.ToInt32(Number.Substring((Number.Trim()).Length - 4));
strNumber = (intNumber + 1).ToString();
}
else
{
//(2)日期不一致:从1开始
strNumber = "1";
}
switch (strNumber.Length)
{
case 1:
strNumber = "000" + strNumber;
break;
case 2:
strNumber = "00" + strNumber;
break;
case 3:
strNumber = "0" + strNumber;
break;
case 4:
strNumber = "" + strNumber;
break;
}
//获取日期
strNumber = strQZ + dtnow + strNumber;
return strNumber;
}
catch (Exception e)
{
Console.WriteLine(e);
return null;
}
}
//生成进货单号
public string CreateCJNo()
{
string purchase = "";
try
{
//获取上一次订单,查看日期是否为今天,若是订单号码加一,反之从今天第一单开始
var CJOrderNo = myModel.B_PurchaseStock.OrderByDescending(o => o.purchaseStockID).First().StockOrderNo;
//截取后面的数组进行对比
string strpurchase = CJOrderNo.Substring(CJOrderNo.Trim().Length - 12);
purchase = GenerateReceipts("CJ", strpurchase);
}
catch (Exception)
{
purchase = "CJ" + DateTime.Now.ToString("yyyyMMdd") + "0001";
}
return purchase;
}
}
}
二、控制器 public ActionResult Index() { //实例化单号 OriginalNumber StockOrderNo = new OriginalNumber(); //把单号传回页面 ViewBag.StockOrderNo = StockOrderNo.CreateCJNo();
return View(); }
三、页面
单号:
@ViewBag.StockOrderNo
四、最后实现的效果
每当你生成一个单号也就是说每当你使用了一个单号,它会在原来的基础上加一, 实例:当CJ202105200001使用了之后,第二次使用就变成CJ202105200002。 而当你第二天使用的时候单据编号里面的日期也会随之变化,从CJ202105200001变化成CJ202105210001。当然后面的编号也将从1开始。