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 } }