using Dapper;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Web;
|
using VueWebApi.Models;
|
|
namespace VueWebApi.Tools
|
{
|
public class SeachEncode
|
{
|
public static ToMessage mes = new ToMessage(); //定义全局返回信息对象
|
|
#region [获取规则编码]
|
/// <summary>
|
/// 根据功能编码获取最新规则编码
|
/// </summary>
|
/// <param name="rightcode">功能编码</param>
|
/// <returns></returns>
|
public static ToMessage EncodingSeach(string rightcode)
|
{
|
string sql, year, month, day, fdate, q, cunm2, Encode;
|
int digit2, value2, digit3, digitdiff;
|
bool stf;
|
List<object> list = new List<object>();
|
List<string> listdt = new List<string>();
|
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)
|
{
|
listdt.Add(Encode);
|
listdt.Add(cunm2);
|
mes.code = "200";
|
mes.Message = "成功!";
|
mes.data = listdt;
|
}
|
else
|
{
|
mes.code = "300";
|
mes.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
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)
|
{
|
listdt.Add(Encode);
|
listdt.Add(cunm2);
|
mes.code = "200";
|
mes.Message = "成功!";
|
mes.data = listdt;
|
}
|
else
|
{
|
mes.code = "300";
|
mes.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
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)
|
{
|
listdt.Add(Encode);
|
listdt.Add(cunm2);
|
mes.code = "200";
|
mes.Message = "成功!";
|
mes.data = listdt;
|
}
|
else
|
{
|
mes.code = "300";
|
mes.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
|
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.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
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.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
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.count = 0;
|
mes.Message = "失败!";
|
mes.data = null;
|
}
|
break;
|
default:
|
break;
|
}
|
}
|
}
|
else
|
{
|
mes.code = "300";
|
mes.count = 0;
|
mes.Message = "未设置编码规则,生成编码失败!";
|
mes.data = null;
|
}
|
}
|
catch (Exception e)
|
{
|
mes.code = "300";
|
mes.count = 0;
|
mes.Message = e.Message;
|
mes.data = null;
|
}
|
return mes;
|
}
|
#endregion
|
|
|
#region [根据角色编码查询功能菜单]
|
/// <summary>
|
/// 根据角色编码查询功能菜单
|
/// </summary>
|
/// <param name="rolecode"></param>
|
/// <param name="type"></param>
|
/// <returns></returns>
|
public static List<TreeDM> RightLocation(string rolecode,string type)
|
{
|
string sql = "";
|
var dynamicParams = new DynamicParameters();
|
List<TreeDM> list = new List<TreeDM>();
|
switch (type)
|
{
|
case "PC": //PC
|
//第一层
|
sql = @"select distinct A.parent_id from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code
|
where B.role_code=@rolecode and A.Type='PC' ";
|
dynamicParams.Add("@rolecode", rolecode);
|
dynamicParams.Add("@type", type);
|
var data1 = DapperHelper.selectdata(sql, dynamicParams);
|
TreeDM cmp = new TreeDM();
|
if (data1.Rows.Count > 0)
|
{
|
cmp.code = "PC";
|
cmp.name = "PC";
|
cmp.flag = "Y";
|
cmp.is_delete = "0";
|
}
|
else
|
{
|
cmp.code = "PC";
|
cmp.name = "PC";
|
cmp.flag = "N";
|
cmp.is_delete = "0";
|
}
|
cmp.children = new List<TreeDMOne>();
|
//第二层
|
sql = @"select A.right_code,A.right_name,(case when C.parent_id is null then 'N' else 'Y' end) flag,A.is_delete
|
from TRight A
|
left join (
|
select distinct A.parent_id from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code where B.role_code=@rolecode
|
) C on A.right_code=C.parent_id
|
where A.Type=@type and A.parent_id='0'";
|
dynamicParams.Add("@rolecode", rolecode);
|
dynamicParams.Add("@type", type);
|
var data2 = DapperHelper.selectdata(sql, dynamicParams);
|
for (int i = 0; i < data2.Rows.Count; i++)
|
{
|
TreeDMOne cmp1 = new TreeDMOne();
|
cmp1.code = data2.Rows[i]["RIGHT_CODE"].ToString();
|
cmp1.name = data2.Rows[i]["RIGHT_NAME"].ToString();
|
cmp1.flag = data2.Rows[i]["FLAG"].ToString();
|
cmp1.is_delete= data2.Rows[i]["IS_DELETE"].ToString();
|
cmp.children.Add(cmp1);
|
cmp1.children = new List<TreeDMTwo>();
|
//第三层
|
sql = @"select A.right_code,A.right_name,(case when C.right_code is null then 'N' else 'Y' end) flag,A.is_delete
|
from TRight A
|
left join (
|
select B.right_code from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code where A.parent_id=@right_code and B.role_code=@rolecode
|
) C on A.right_code=C.right_code
|
where A.parent_id=@right_code";
|
dynamicParams.Add("@right_code", data2.Rows[i]["RIGHT_CODE"].ToString());
|
dynamicParams.Add("@rolecode", rolecode);
|
var data3 = DapperHelper.selectdata(sql, dynamicParams);
|
for (int j = 0; j < data3.Rows.Count; j++)
|
{
|
TreeDMTwo cmp2 = new TreeDMTwo();
|
cmp2.code = data3.Rows[j]["RIGHT_CODE"].ToString();
|
cmp2.name = data3.Rows[j]["RIGHT_NAME"].ToString();
|
cmp2.flag = data3.Rows[j]["FLAG"].ToString();
|
cmp2.is_delete= data3.Rows[j]["IS_DELETE"].ToString();
|
cmp1.children.Add(cmp2);
|
}
|
}
|
list.Add(cmp);
|
break;
|
case "APP": //APP
|
//第一层
|
sql = @"select distinct A.parent_id from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code
|
where B.role_code=@rolecode and A.Type='APP' ";
|
dynamicParams.Add("@rolecode", rolecode);
|
dynamicParams.Add("@type", type);
|
var date1 = DapperHelper.selectdata(sql, dynamicParams);
|
TreeDM cmt = new TreeDM();
|
if (date1.Rows.Count > 0)
|
{
|
cmt.code = "APP";
|
cmt.name = "APP";
|
cmt.flag = "Y";
|
cmt.is_delete = "1";
|
}
|
else
|
{
|
cmt.code = "APP";
|
cmt.name = "APP";
|
cmt.flag = "N";
|
cmt.is_delete = "1";
|
}
|
cmt.children = new List<TreeDMOne>();
|
//第二层
|
sql = @"select A.right_code,A.right_name,(case when C.parent_id is null then 'N' else 'Y' end) flag,A.is_delete
|
from TRight A
|
left join (
|
select distinct A.parent_id from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code where B.role_code=@rolecode
|
) C on A.right_code=C.parent_id
|
where A.Type=@type and A.parent_id='0'";
|
dynamicParams.Add("@rolecode", rolecode);
|
dynamicParams.Add("@type", type);
|
var date2 = DapperHelper.selectdata(sql, dynamicParams);
|
for (int i = 0; i < date2.Rows.Count; i++)
|
{
|
TreeDMOne cmt1 = new TreeDMOne();
|
cmt1.code = date2.Rows[i]["RIGHT_CODE"].ToString();
|
cmt1.name = date2.Rows[i]["RIGHT_NAME"].ToString();
|
cmt1.flag = date2.Rows[i]["FLAG"].ToString();
|
cmt1.is_delete= date2.Rows[i]["IS_DELETE"].ToString();
|
cmt.children.Add(cmt1);
|
cmt1.children = new List<TreeDMTwo>();
|
//第三层
|
sql = @"select A.right_code,A.right_name,(case when C.right_code is null then 'N' else 'Y' end) flag,A.is_delete
|
from TRight A
|
left join (
|
select B.right_code from TRight A
|
inner join TRoleRightRelation B on A.right_code=B.right_code where A.parent_id=@right_code and B.role_code=@rolecode
|
) C on A.right_code=C.right_code
|
where A.parent_id=@right_code";
|
dynamicParams.Add("@right_code", date2.Rows[i]["RIGHT_CODE"].ToString());
|
dynamicParams.Add("@rolecode", rolecode);
|
var date3 = DapperHelper.selectdata(sql, dynamicParams);
|
for (int j = 0; j < date3.Rows.Count; j++)
|
{
|
TreeDMTwo cmt2 = new TreeDMTwo();
|
cmt2.code = date3.Rows[j]["RIGHT_CODE"].ToString();
|
cmt2.name = date3.Rows[j]["RIGHT_NAME"].ToString();
|
cmt2.flag = date3.Rows[j]["FLAG"].ToString();
|
cmt2.flag= date3.Rows[j]["IS_DELETE"].ToString();
|
cmt1.children.Add(cmt2);
|
}
|
}
|
list.Add(cmt);
|
break;
|
default:
|
break;
|
}
|
return list;
|
}
|
#endregion
|
}
|
}
|