为了减少类的实例,这里定义了一个静态类,并在类里面嵌了字典,于是有了下面几种方法的查询,三种查询方法 代码如下:
public static class PddCodeAndStatusHelper
{
//返回错误码与错误信息对照表
public readonly static Dictionary<int, string> codeDic = new Dictionary<int, string>();
//物流状态与状态描述对照表
public readonly static Dictionary<string, string> statusDic = new Dictionary<string, string>();
static PddCodeAndStatusHelper()
{
//返回错误码与错误信息对照表
codeDic.Add(0, "成功");//接口调用成功,无业务、系统异常
codeDic.Add(9999, "失败");//业务失败,重复调用接口也不会成功的异常码
codeDic.Add(9990, "系统异常--ISV 系统内部发生异常");
codeDic.Add(1001, "非法的渠道编号--ship_id 有误");
codeDic.Add(1100, "签名为空");
codeDic.Add(1101, "验签信息错误");
codeDic.Add(1202, "缺少必填字段");
codeDic.Add(1204, "推送消息解析失败");
codeDic.Add(1205, "时间戳格式有误");
codeDic.Add(1206, "物流轨迹数超过阈值");
codeDic.Add(1208, "超过调用频率限制");
codeDic.Add(1209, "用户没有授权此接口");
codeDic.Add(1210, "当前接口系统维护,暂时下线,请稍后再试");
codeDic.Add(1211, "重复订阅");
codeDic.Add(1230, "不存在的运单");
codeDic.Add(1250, "不支持推送");
codeDic.Add(1251, "消息体过大");
//物流状态与状态描述对照表
statusDic.Add("GOT", "揽件");
statusDic.Add("SEND", "派件");
statusDic.Add("SIGN", "签收");
statusDic.Add("STAY_IN_WAREHOUSE", "留仓");
statusDic.Add("OTHER", "其他");
statusDic.Add("RETURN", "退件");
statusDic.Add("CLEARANCE_START", "清关开始");
statusDic.Add("TRUCK_IN", "到车");
statusDic.Add("TRUCK_OUT", "发车");
//问题件
statusDic.Add("FAIL_100", "异常天气");
statusDic.Add("FAIL_101", "客户电话无人接听");
statusDic.Add("FAIL_102", "客户要求改派地址");
statusDic.Add("FAIL_103", "与客户协商另约时间派送");
statusDic.Add("FAIL_104", "客户电话错误");
statusDic.Add("FAIL_105", "客户地址错误");
statusDic.Add("FAIL_106", "超区件");
statusDic.Add("FAIL_107", "包装破损或污损");
statusDic.Add("FAIL_108", "系统问题");
statusDic.Add("FAIL_109", "延迟-不可抗力");
statusDic.Add("FAIL_110", "其他原因失败");
statusDic.Add("FAIL_111", "客户地址不详且联系不到客户");
statusDic.Add("FAIL_112", "商家拦截");
statusDic.Add("FAIL_113", "客户要求暂放/自提");
statusDic.Add("FAIL_114", "错发件");
statusDic.Add("FAIL_115", "违禁品");
statusDic.Add("FAIL_116", "疫情相关原因");
statusDic.Add("FAIL_601", "检疫审核未过");
statusDic.Add("FAIL_602", "单证审核未过");
statusDic.Add("FAIL_603", "海关抽检未过");
statusDic.Add("FAIL_604", "订购人购买超过年度限额");
statusDic.Add("FAIL_651", "海关系统维护");
statusDic.Add("FAIL_652", "查验");
statusDic.Add("FAIL_653", "订购人姓名或身份信息不一致");
statusDic.Add("FAIL_699", "清关异常 其他原因");
//REJECTION 拒签
statusDic.Add("REJECTION_200", "其他原因拒收");
statusDic.Add("REJECTION _201", "外包装完好,现场未开箱,客户无理由拒收");
statusDic.Add("REJECTION_202", "外包装完好,现场已开箱,内物完好,客户无理由拒收");
statusDic.Add("REJECTION_203", "因用户地址错误,导致客户拒收");
statusDic.Add("REJECTION_204", "物流商品丢失,导致客户拒收");
statusDic.Add("REJECTION_205", "外包装完好,开箱后发现内商品少附件/短少,导致客户拒收");
statusDic.Add("REJECTION_206", "(非开箱服务)客户强制要求开箱");
statusDic.Add("REJECTION_207", "外包装破损,导致客户拒收");
statusDic.Add("REJECTION_208", "外包装完好,开箱后内外商品不相符,导致客户拒收");
statusDic.Add("REJECTION_209", "外包装破损,开箱后内外商品不相符,导致客户拒收");
statusDic.Add("REJECTION_210", "外包装破损,开箱后发现内商品少附件/短少,导致客户拒收");
statusDic.Add("REJECTION_211", "客户拒收,现场要求退回");
//SIGN_ON_BEHALF代收点代签
statusDic.Add("SIGN_ON_BEHALF_300", "包裹到代收点,客户正常签收");
statusDic.Add("SIGN_ON_BEHALF_301", "包裹到代收点后,客户要求送货上门");
statusDic.Add("SIGN_ON_BEHALF_302", "包裹到代收点后,因客户原因超过 24 小时未取件");
statusDic.Add("SIGN_ON_BEHALF_303", "包裹到代收点后,客户拒签");
//ARRIVAL 到件
statusDic.Add("ARRIVAL_100", "陆运到达");
statusDic.Add("ARRIVAL_101", "航空到达");
statusDic.Add("ARRIVAL_102", "河或海运到达");
statusDic.Add("ARRIVAL_103", "铁路到达");
//DEPARTURE 发件
statusDic.Add("DEPARTURE_100", "陆运发出");
statusDic.Add("DEPARTURE_101", "航空发出");
statusDic.Add("DEPARTURE_102", "河或海运发出");
statusDic.Add("DEPARTURE_103", "铁路发出");
//IN_CABINET 入柜/入代收点
statusDic.Add("IN_CABINET_401", "正常入柜/入代收点");
statusDic.Add("IN_CABINET_402", "超时未取件");
//OUT_CABINET 出柜/出代收点
statusDic.Add("OUT_CABINET_501", "收件人取件通知,正常出柜/出代收点");
statusDic.Add("OUT_CABINET_502", "快递员取消派件通知,快递员已经将快件从快递柜取走");
statusDic.Add("OUT_CABINET_503", "管理员取件");
//CLEARANCE_FINISH 清关结束
statusDic.Add("CLEARANCE_FINISH_101", "BC(海外直邮报关");
statusDic.Add("CLEARANCE_FINISH_102", "CC(个人物品报关");
statusDic.Add("CLEARANCE_FINISH_103", "BBC(保税");
statusDic.Add("CLEARANCE_FINISH_104", "邮关");
statusDic.Add("CLEARANCE_FINISH_105", "一般贸易");
}
/// <summary>
/// 获取字典的内容
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static string GetCodeMsg(int code)
{
string msg = "";
if (codeDic.ContainsKey(code))
{
msg = codeDic[code];
}
return msg;
//string value = (from entry in codeDic//这个方法也是可以的
// where entry.Key == code
// select entry.Value).FirstOrDefault();
}
/// <summary>
/// 获取状态的值
/// </summary>
/// <param name="statuCode"></param>
/// <returns></returns>
public static string GetStatusMsg(string statuCode)
{
string msg = "";
// msg = statusDic[statuCode];
//msg = statusDic.FirstOrDefault(x => x.Key == statuCode).Value;这个方法也是可以的
if (statusDic.ContainsKey(statuCode))
{
msg = statusDic[statuCode];
}
return msg;
}
}
调用代码
string reuslt="";
reuslt = PddCodeAndStatusHelper.GetCodeMsg(code);
reuslt+= "-----"+ PddCodeAndStatusHelper.GetStatusMsg(statuCode);