/// <summary> /// 获取EMS物流单号 /// </summary> /// <param name="strNo">当前物流单号</param> /// <returns></returns> public static string GetNewEmsNo(string strNo) { try { string fri = ""; int res; int num3, num4, num5, num6, num7, num8, num9, num0; int mid; string strZero = "00000000"; fri = (Convert.ToUInt32(strNo.Substring(2, 8)) + 1).ToString(); //不足零自动补零 //if (fri.Length < 8) //{ // string strTmp = strZero + fri; // fri = strTmp.Substring(strTmp.Length - 8); //} fri=fri.PadLeft(8, '0'); num3 = Convert.ToInt32(fri.Substring(0, 1)); num4 = Convert.ToInt32(fri.Substring(1, 1)); num5 = Convert.ToInt32(fri.Substring(2, 1)); num6 = Convert.ToInt32(fri.Substring(3, 1)); num7 = Convert.ToInt32(fri.Substring(4, 1)); num8 = Convert.ToInt32(fri.Substring(5, 1)); num9 = Convert.ToInt32(fri.Substring(6, 1)); num0 = Convert.ToInt32(fri.Substring(7, 1)); mid = 8 * num3 + 6 * num4 + 4 * num5 + 2 * num6 + 3 * num7 + 5 * num8 + 9 * num9 + 7 * num0; res = 11 - (mid) % (11); if (res == 10) res = 0; if (res == 11) res = 5; string strHead = strNo.Substring(0, 2); if (!IsLetter(strHead)) { throw new Exception("EMS单号前2位不为字母"); } string strEnd = strNo.Substring(strNo.Length - 2); if (!IsLetter(strEnd)) { throw new Exception("EMS单号末2位不为字母"); } string strEMSres = (strHead + fri + res.ToString() + strEnd); return strEMSres; } catch (Exception ex) { MessageForm.Error(ex.Message); return string.Empty; } } /// <summary> /// 获取顺丰物流单号 /// </summary> /// <param name="strNo"></param> /// <returns></returns> public static string GetNewShunfengNo(string strNo) { try { if (strNo.Length != 12) { throw new Exception("顺丰单号为12位,请检测单号是否正确"); } string fri, Nfri, Yuandanhao, strNewNo; int num9, num10, num11, num12; int Nnum9, Nnum12; int iIndex = 8; fri = strNo.Substring(0, 11); Yuandanhao = strNo; Nfri = (Convert.ToInt64(fri) + 1).ToString().PadLeft(11,'0'); num9 = Convert.ToInt32(Yuandanhao.Substring(iIndex++, 1)); num10 = Convert.ToInt32(Yuandanhao.Substring(iIndex++, 1)); num11 = Convert.ToInt32(Yuandanhao.Substring(iIndex++, 1)); num12 = Convert.ToInt32(Yuandanhao.Substring(iIndex++, 1)); iIndex = 8; Nnum9 = Convert.ToInt32(Nfri.Substring(iIndex++, 1)); if ((Nnum9 - num9 == 1) && ((num9) % (2) == 1)) { if (num12 - 8 >= 0) Nnum12 = num12 - 8; // -8 else Nnum12 = num12 - 8 + 10; } else if ((Nnum9 - num9 == 1) && ((num9) % (2) == 0)) { if (num12 - 7 >= 0) Nnum12 = num12 - 7; // -7 else Nnum12 = num12 - 7 + 10; } else { if (((num10 == 3) || (num10 == 6)) && (num11 == 9)) { if (num12 - 5 >= 0) Nnum12 = num12 - 5; // -5 else Nnum12 = num12 - 5 + 10; } else if (num11 == 9) { if (num12 - 4 >= 0) Nnum12 = num12 - 4; // -4 else Nnum12 = num12 - 4 + 10; } else { if (num12 - 1 >= 0) Nnum12 = num12 - 1; // -1 else Nnum12 = num12 - 1 + 10; } } return strNewNo = Nfri + Nnum12.ToString(); } catch (Exception ex) { throw ex; } } public static bool IsLetter(string str) { foreach (char c in str) { if (!char.IsLetter(c)) { return false; } } return true; }