/// <summary> /// 在读取数据前,插入一个"原标准文号列" /// </summary> /// <param name="reader"></param> /// <param name="err"></param> /// <returns></returns> protected override PM getPM(OleDbDataReader reader, out String err) { err = String.Empty; GJBZ_PM pm = new GJBZ_PM(); if (hasFormatTable) { pm.flbm = reader["分类编码"].ToString().Trim(); pm.bzwh = reader["标准文号"].ToString(); pm.ybzwh = pm.bzwh; //记住原有的“标准文号” pm.wjm = reader["文件名"].ToString().Trim(); pm.ywjm = pm.wjm; pm.icsfl = reader["ICS分类"].ToString().Trim(); pm.gbfl = reader["GB分类"].ToString().Trim(); pm.bbxz = reader["版本性质"].ToString().Trim(); pm.zwmc = reader["中文名称"].ToString().Trim(); pm.wwmc = reader["外文名称"].ToString().Trim(); try { pm.isOK = Boolean.Parse(reader["强制入库"].ToString()); } catch { pm.isOK = false; } string dateStr = ""; dateStr = reader["发布日期"].ToString().Trim(); try { if (!String.Empty.Equals(dateStr)) { pm.fbrq = DateTime.Parse(dateStr); } } catch { err += "发布日期\"" + reader["发布日期"] + "\"出错 "; } dateStr = reader["实施日期"].ToString().Trim(); try { if (!String.Empty.Equals(dateStr)) { pm.ssrq = DateTime.Parse(dateStr); } } catch { err += "实施日期\"" + reader["实施日期"] + "\"出错 "; } pm.cygx = reader["采用关系"].ToString().Trim(); string yeshu = ""; yeshu = reader["页数"].ToString().Trim(); try { if (!String.Empty.Equals(yeshu)) { pm.ys = Int32.Parse(yeshu); } else pm.ys = 0; } catch { err += "页数\"" + reader["页数"] + "\"出错 "; } try { pm.zf = Boolean.Parse(reader["作废"].ToString().Trim()); } catch (Exception) { pm.zf = false; } if (true == pm.zf) pm.zf1 = "T"; else pm.zf1 = "F"; pm.dtbz = reader["代替标准"].ToString().Trim(); pm.bdtbz = reader["被代替标准"].ToString().Trim(); pm.zfnf = reader["作废年份"].ToString().Trim(); pm.zwztc = reader["中文主题词"].ToString().Trim(); pm.wwztc = reader["外文主题词"].ToString().Trim(); pm.qcdw = reader["起草单位"].ToString().Trim(); pm.fbdw = reader["发布单位"].ToString().Trim(); pm.pzdw = reader["批准单位"].ToString().Trim(); pm.bzdhhy = reader["标准代号含义"].ToString().Trim(); pm.bz = reader["备注"].ToString().Trim(); pm.gxx = reader["更新项"].ToString().Trim(); } if (!"".Equals(err)) err += pmKeyInfo(pm); pm.gxrq = DateTime.Now; pm.dlr = user.name; pm.fillEmptyStringAsNull(); return pm; }
/// <summary> /// 进行潜在的标准代替关系更新 /// </summary> /// <param name="gp"></param> /// <returns></returns> public String UpdateDTBZ(GJBZ_PM gp) { String err = String.Empty; if (gp.bzwh.LastIndexOf('-') < 0) { err = "标准文号缺少年份 "; return err; } //进行标准替代关系的更新, 确保标准文号格式正确 string pre_wh = gp.bzwh.Substring(0, gp.bzwh.LastIndexOf('-') + 1); //找到代替的标准,只代替最近的标准 GJBZ_PM gpm = gjbzDAO.GetAlikeGJBZ_PM(pre_wh, gp.bzwh, "desc"); if (gpm != null && gpm.bzwh.CompareTo(gp.bzwh) < 0) { gpm.zf = false; gpm.zf1 = "F"; gpm.zfnf = gp.bzwh.Substring(gp.bzwh.Length - 4); if (GlobalMethod.IsBzInvalid(gp.ssrq)) { gpm.zf = true; gpm.zf1 = "T"; } string bzwh_full = ComposeFullBZWH(gp); if (gpm.bdtbz == null) { gpm.bdtbz = bzwh_full; } else if (gpm.bdtbz.IndexOf(gp.bzwh) < 0 && gpm.bdtbz.IndexOf(bzwh_full) < 0) { if (!"".Equals(gpm.bdtbz)) gpm.bdtbz += ";"; gpm.bdtbz += bzwh_full; } bzwh_full = ComposeFullBZWH(gpm); if (gp.dtbz == null) { gp.dtbz = bzwh_full; } else if (gp.dtbz.IndexOf(gpm.bzwh) < 0 && gp.dtbz.IndexOf(bzwh_full) < 0) { if (!"".Equals(gp.dtbz)) gp.dtbz += ";"; gp.dtbz += bzwh_full; } try { gjbzDAO.UpdateGJBZ_PM(gpm, user.name); /* 更新access表中记录 */ if (gp.bzwjm.Equals("NULL")) { gp.fillEmptyStringAsNull(); deletePM((PM)gp, out err); insertPM((PM)gp); gp.eraseNullInEmptyString(); } } catch(Exception e) { err += "更新替代关系异常(" + e.Message + ") " + pmKeyInfo(gp); } } return err; }