using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CK.SCP.Models;
using CK.SCP.Utils;
namespace CK.SCP.Controller
{
public class SCP_BILLCODE_CONTROLLER
{
public static string MakeClaimCode()
{
return GetTablePK("M", "TM_HYANTOLIN_REVIEW", "ReviewBillNum", "yyMMdd", 4);
}
public static string MakePOCode()
{
return GetTablePK("P", "TB_PO", "PoBillNum", "yyMMdd", 4);
}
public static string MakeQualityCode()
{
return GetTablePK("Q", "TB_QUALITY", "QualityNo", "yyMMdd", 4);
}
public static string MakeASNCode()
{
return GetTablePK("N", "TB_ASN", "AsnBillNum", "yyMMdd", 4);
}
public static string MakePalletCode()
{
return GetTablePK("G", "TB_PALLET", "PalletNum", "yyMMdd", 4);
}
///
/// 生成托盘码(青岛)
///
///
///
public static string MakePalletCode_QD(int num)
{
return GetTablePK_QD("G", "TB_PALLETS", "PalletNum", "yyMMdd", 4,num);
}
///
/// 生成订单编号
///
///
///
public static string MakePoNum(int num = 1)
{
return GetTablePO("P", "TB_PO", "PoBillNum", 7, num);
}
public static string MakeASKCodeByNum(int num)
{
return GetTablePKByNum("K", "TB_ASK", "AskBillNum", "yyMMdd", 4, num);
}
public static string MakeASKCode()
{
return GetTablePK("K", "TB_ASK", "AskBillNum", "yyMMdd", 4);
}
public static string MakePLAN_ASKCode()
{
return GetTablePK("E", "TB_ASK", "AskBillNum", "yyMMdd", 4);
}
///
/// 生成收货单码
///
///
public static string MakeReviceCode_ASN()
{
return GetTablePK("C", "TB_RECEIVE", "RecvBillNum", "yyMMdd", 4);
}
public static string MakePLAN_EXTEND_ASKCode()
{
return GetTablePK("U", "TB_ASK", "AskBillNum", "yyMMdd", 4);
}
public static string MakeReviceCode()
{
return GetTablePK("R", "TB_RECEIVE", "RecvBillNum", "yyMMdd", 4);
}
public static string MakeRejectCode()
{
return GetTablePK("J", "TB_REJECT", "RjctBillNum", "yyMMdd", 4);
}
public static string MakeInvoiceCode()
{
return GetTablePK("F", "TB_INVOICE", "InvcBillNum", "yyMMdd", 4);
}
public static string MakeCode(string p_Header, string p_TableName,string p_ColumnName)
{
return GetTablePK(p_Header, p_TableName, p_ColumnName, "yyMMdd",4);
}
public static string GetTablePO(string Ext, string TableName, string ColName, int len, int num)
{
var _result = string.Empty;
try
{
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
string sql = "select max(right(" + ColName + "," + len.ToString() + ")+" + num + ") from " + TableName + " where " + ColName + " like '%P[0-9]%' ";
DbRawSqlQuery result = db.Database.SqlQuery(sql);
var obj = result.FirstOrDefault();
if (obj == null)
{
_result = Ext + num.ToString().PadLeft(len, '0');
}
else
{
_result = Ext + result.FirstOrDefault().ToString().PadLeft(len, '0');
}
}
}
catch (Exception e)
{
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_BILLCODE_CONTROLLER), "GetTablePK", e.Message);
}
return _result;
}
public static string GetTablePKByNum(string Ext, string TableName, string ColName, string Format, int len, int num)
{
var _result = string.Empty;
try
{
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
string time = Ext + DateTime.Now.ToString(Format);
string sql = "select max(right(" + ColName + "," + len.ToString() + ")+" + num + ") from " + TableName + " where " + ColName + " like '" + time + "%'";
DbRawSqlQuery result = db.Database.SqlQuery(sql);
var obj = result.FirstOrDefault();
if (obj == null)
{
_result = time + num.ToString().PadLeft(len, '0');
}
else
{
_result = time + result.FirstOrDefault().ToString().PadLeft(len, '0');
}
}
}
catch (Exception e)
{
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_BILLCODE_CONTROLLER), "GetTablePK", e.Message);
}
return _result;
}
public static string GetTablePK(string Ext, string TableName, string ColName, string Format, int len)
{
var _result = string.Empty;
try
{
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
string time = Ext + DateTime.Now.ToString(Format);
string sql = "select max(right(" + ColName + "," + len.ToString() + ")+1) from " + TableName + " where " + ColName + " like '" + time + "%'";
DbRawSqlQuery result = db.Database.SqlQuery(sql);
var obj = result.FirstOrDefault();
if (obj==null)
{
_result= time + "1".PadLeft(len, '0');
}
else
{
_result= time + result.FirstOrDefault().ToString().PadLeft(len, '0');
}
}
}
catch(Exception e)
{
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_BILLCODE_CONTROLLER), "GetTablePK", e.Message);
}
return _result;
}
public static string GetTablePK_QD(string Ext, string TableName, string ColName, string Format, int len,int num)
{
var _result = string.Empty;
try
{
using (ScpEntities db = EntitiesFactory.CreateScpInstance())
{
string time = Ext + DateTime.Now.ToString(Format);
string sql = "select max(right(" + ColName + "," + len.ToString() + ")+1) from " + TableName + " where " + ColName + " like '" + time + "%'";
DbRawSqlQuery result = db.Database.SqlQuery(sql);
var obj = result.FirstOrDefault();
if (obj == null)
{
_result = time + num.ToString().PadLeft(len, '0');
}
else
{
_result = time + (result.FirstOrDefault()+num).ToString().PadLeft(len, '0');
}
}
}
catch (Exception e)
{
LogHelper.Writlog(LogHelper.LogType.Error, typeof(SCP_BILLCODE_CONTROLLER), "GetTablePK", e.Message);
}
return _result;
}
}
}