using Dapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace VueWebApi.Tools
{
public class SeachEncode
{
public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
#region [获取规则编码]
///
/// 根据功能编码获取最新规则编码
///
/// 功能编码
///
public static ToMessage EncodingSeach(string rightcode)
{
string sql, year, month, day, fdate, q, cunm2, Encode;
int digit2, value2, digit3, digitdiff;
bool stf;
List list = new List();
var dynamicParams = new DynamicParameters();
try
{
sql = @"select prefix,filingdate,incbit,value from T_CodeRules where rightcode=@rightcode";
dynamicParams.Add("@rightcode", rightcode);
var data = DapperHelper.selectdata(sql, dynamicParams);
if (data.Rows.Count > 0)
{
string prefix = data.Rows[0]["PREFIX"].ToString(); //固定字段
string filingdate = data.Rows[0]["FILINGDATE"].ToString(); //提交日期
int incbit = int.Parse(data.Rows[0]["INCBIT"].ToString()); //自增位数
string value = data.Rows[0]["VALUE"].ToString(); //流水号
if (int.Parse(value)>0) //判断是否为首次获取
{
switch (filingdate)
{
case "年月日":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
month = DateTime.Now.Month.ToString().PadLeft(2, '0');//获取月(2位)
day = DateTime.Now.Day.ToString().PadLeft(2, '0');//获取日(2位)
fdate = year + month + day;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 =value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
case "年月":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
month = DateTime.Now.Month.ToString().PadLeft(2, '0');//获取月(2位)
fdate = year + month;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 = value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
case "年":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
fdate = year;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 = value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
default:
break;
}
}
else
{
switch (filingdate)
{
case "年月日":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
month = DateTime.Now.Month.ToString().PadLeft(2, '0');//获取月(2位)
day = DateTime.Now.Day.ToString().PadLeft(2, '0');//获取日(2位)
fdate = year + month + day;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 = value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
case "年月":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
month = DateTime.Now.Month.ToString().PadLeft(2, '0');//获取月(2位)
fdate = year + month;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 = value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
case "年":
year = DateTime.Now.Year.ToString().Substring(2, 2);//获取年(2位)
fdate = year;
digit2 = value.Length;//获取string类型位数
value2 = int.Parse(value) + 1;// 将string类型转化为int自增1
digit3 = value2.ToString().Length; //获取转化后int型的位数
digitdiff = digit2 - digit3; //位数之差
q = "";
if (digitdiff < 0) //位数差为负数需要进补位
{
cunm2 = value2.ToString();//最终流水号
sql = @"update T_CodeRules set incbit=@incbit where rightcode=@rightcode";
dynamicParams.Add("@incbit", digit3);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
}
else
{
for (int i = 1; i <= digitdiff; i++)
{
q = q + "0";
}
cunm2 = q + value2.ToString();//最终流水号
}
Encode = prefix + fdate + cunm2; //最终编码
sql = @"update T_CodeRules set value=@cunm2 where rightcode=@rightcode";
dynamicParams.Add("@cunm2", cunm2);
dynamicParams.Add("@rightcode", rightcode);
list.Add(new { str = sql, parm = dynamicParams });
stf = DapperHelper.DoTransaction(list);
if (stf)
{
mes.code = "200";
mes.Message = "成功!";
mes.data = Encode;
}
else
{
mes.code = "300";
mes.Message = "失败!";
}
break;
default:
break;
}
}
}
else
{
mes.code = "300";
mes.Message = "未设置编码规则,生成编码失败!";
}
}
catch (Exception e)
{
mes.code = "300";
mes.Message = e.Message;
}
return mes;
}
#endregion
}
}