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 [获取规则编码] /// /// 根据功能编码获取最新规则编码 /// /// 功能编码 /// 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(); List listdt = 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) { 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 [根据角色编码查询功能菜单] /// /// 根据角色编码查询功能菜单 /// /// /// /// public static List RightLocation(string rolecode,string type) { string sql = ""; var dynamicParams = new DynamicParameters(); List list = new List(); 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(); //第二层 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(); //第三层 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 = "0"; } else { cmt.code = "APP"; cmt.name = "APP"; cmt.flag = "N"; cmt.is_delete = "0"; } cmt.children = new List(); //第二层 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(); //第三层 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.is_delete= date3.Rows[j]["IS_DELETE"].ToString(); cmt1.children.Add(cmt2); } } list.Add(cmt); break; default: break; } return list; } #endregion } }