using Dapper; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace VueWebCoreApi.Tools { public class SeachEncodeJob { 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 TCodeRules where menucode=@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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; 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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; 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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; 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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; 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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; 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();//最终流水号 } else { for (int i = 1; i <= digitdiff; i++) { q = q + "0"; } cunm2 = q + value2.ToString();//最终流水号 } Encode = prefix + fdate + cunm2; //最终编码 listdt.Add(Encode); listdt.Add(cunm2); mes.code = "200"; mes.Message = "成功!"; mes.data = listdt; break; default: break; } } } else { mes.code = "300"; mes.count = 0; mes.Message = "未设置编码规则,生成单号失败,请设置编码为【" + rightcode + "】的编码规则!"; 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 StrEncodingUpdate(string rightcode, string incbit) { List list = new List(); list.Clear(); string sql = @"update TCodeRules set value=@cunm2,incbit=@incbit where menucode=@rightcode"; list.Add(new { str = sql, parm = new { rightcode = rightcode, cunm2 = Convert.ToInt32(incbit), incbit = incbit.Length } }); return list; } #endregion } }