Ejemplo n.º 1
0
        public string UnmarshalBinary(byte[] b, int startindex, int endindex)
        {
            if (endindex - startindex < 8 || (endindex - startindex) % 8 != 0)
            {
                return(Constants.ErrWALCorrupt);
            }
            Sids.Clear();
            int i = startindex;

            while (i < endindex)
            {
                Sids.Add(BitConverter.ToUInt64(b, i));
                i += 8;
            }
            return(null);
        }
Ejemplo n.º 2
0
        public string UnmarshalBinary(byte[] b, int startindex, int endindex)
        {
            if (endindex - startindex < 16)
            {
                return(Constants.ErrWALCorrupt);
            }
            int i = startindex;

            Min = BitConverter.ToInt64(b, i);
            Max = BitConverter.ToInt64(b, i + 8);
            i  += 16;
            Sids.Clear();
            while (i < endindex)
            {
                if (i + 8 > endindex)
                {
                    return(Constants.ErrWALCorrupt);
                }
                Sids.Add(BitConverter.ToUInt64(b, i));
                i += 8;
            }
            return(null);
        }
Ejemplo n.º 3
0
        public override bool Import()
        {
            string s = Sr.ReadToEnd();

            TemplateHelper tmph = new TemplateHelper("");

            string[]            arys = regRowSplit.Split(s);
            List <DAL.ShowBase> sbs  = new List <DAL.ShowBase>();
            List <DAL.STPa>     pas  = new List <DAL.STPa>();
            List <DAL.STIV>     ivs  = new List <DAL.STIV>();
            List <DAL.STIpc>    ipcs = new List <DAL.STIpc>();
            List <DAL.STPR>     prs  = new List <DAL.STPR>();
            List <DAL.STDT>     dts  = new List <DAL.STDT>();
            List <DAL.STQY>     qys  = new List <DAL.STQY>();

            int count = arys.Length - 1;

            SetMaxProcess(this, count);
            Thimport = new Thread(() =>
            {
                //第一行为空
                for (int i = 1; i <= arys.Length - 1; i++)
                {
                    string tmp = regspace.Replace(regcharRNT.Replace(arys[i].Trim(), ""), "");
                    foreach (string x in otherstring)
                    {
                        tmp = tmp.Replace(x, "");
                    }
                    tmp = RemoveZaoZi(tmp);
                    MatchCollection mhs = rowRege.Matches(tmp);
                    ShowBase sb         = new ShowBase();
                    sb.ZTID             = ZTId;
                    sb.ImportDate       = DateTime.Now;

                    foreach (Match m in mhs)
                    {
                        string colname        = m.Groups["colname"].Value;
                        string val            = m.Groups["colval"].Value.Trim().Trim('\t');
                        string mappingcolname = tmph.getMappingColumnName(colname);
                        switch (mappingcolname)
                        {
                        case "申请号":
                            sb.An  = val;
                            sb.SiD = val;
                            break;

                        case "发明名称":
                            sb.Title = val;
                            break;

                        case "摘要":
                            sb.ABs = val;
                            break;

                        case "权利要求":
                            sb.ClM = val;
                            break;

                        case "国际分类号":
                            sb.Ipc = val;
                            break;

                        case "范畴分类号":
                            sb.FCfL = val;
                            break;

                        case "国家/省市":
                            sb.ShEng = val;
                            break;

                        case "申请人":
                            sb.Pa = val;
                            break;

                        case "联系地址":
                            sb.AddR = val;
                            break;

                        case "邮编":
                            sb.Zip = val;
                            break;

                        case "代理机构":
                            sb.DLJG = val;
                            break;

                        case "代理人":
                            sb.DLr = val;
                            break;

                        case "代理机构地址":
                            sb.DLJGAddR = val;
                            break;

                        case "发明人":
                            sb.IV = val;
                            break;

                        case "申请日":
                            sb.Ad = val;
                            break;

                        case "公开号":
                            sb.PN = val;
                            break;

                        case "公开日":
                            sb.PD = val;
                            break;

                        //case "授权公告日":
                        //    sb.Gd = val;
                        //    break;
                        case "公告日":
                            sb.Gd = val;
                            break;

                        //case "授权日":
                        //    sb.Gd = val;
                        //    break;
                        case "公告号":
                            sb.GN = val;
                            break;

                        case "优先权":
                            sb.PR = val;
                            break;

                        case "审批历史":
                            sb.LG = val;
                            break;

                        case "附图数":
                            sb.PiCSum = val;
                            break;

                        case "页数":
                            sb.DesPageSum = val;
                            break;

                        case "权利要求项数":
                            sb.ClMSum = val;
                            break;
                        }
                    }
                    if (CheckExist(sb.SiD))
                    {
                        if (Skip)
                        {
                            Skip_sum++;
                            continue;
                        }
                        else
                        {
                            DelExist(sb.ZTID.ToString(), sb.SiD.ToString());
                            Overwrite_sum++;
                        }
                    }
                    else
                    {
                        Sids.Add(sb.SiD, true);
                    }
                    sbs.Add(sb);

                    List <STPa> pa   = new List <STPa>();
                    List <STIV> iv   = new List <STIV>();
                    List <STIpc> ipc = new List <STIpc>();
                    List <STPR> pr   = new List <STPR>();
                    List <STQY> qy   = new List <STQY>();
                    dts.Add(CPRSIndex.AutoIndex(sb, out pa, out iv, out ipc, out pr, out qy));
                    pas.AddRange(pa);
                    ivs.AddRange(iv);
                    ipcs.AddRange(ipc);
                    prs.AddRange(pr);
                    qys.AddRange(qy);

                    if (i % 100 == 0)
                    {
                        //Thread.Sleep(1000);
                        //todo:标引
                        //todo:标引信息入库

                        //todo:基本信息入库
                        BulkInsert(sbs, pas, ivs, ipcs, prs, dts, qys);
                        sbs.Clear();
                        pas.Clear();
                        ivs.Clear();
                        ipcs.Clear();
                        prs.Clear();
                        dts.Clear();
                        qys.Clear();
                        ShowProcess(this, i, Skip_sum, Overwrite_sum, "导入");
                    }
                }
                if (sbs.Count > 0)
                {
                    BulkInsert(sbs, pas, ivs, ipcs, prs, dts, qys);
                    sbs.Clear();
                    pas.Clear();
                    ivs.Clear();
                    ipcs.Clear();
                    prs.Clear();
                    dts.Clear();
                    qys.Clear();
                }

                log.Info(string.Format("导入完毕: 专题库:{0},ID:{1},类型:,{2}总量:{3},跳过:{4}", ztName, ZTId, Type, count, Skip_sum));
                ShowProcess(this, count, Skip_sum, Overwrite_sum, "导入完毕");

                Sr.Close();
                Sr.Dispose();
            });
            Thimport.Start();
            return(true);
        }
Ejemplo n.º 4
0
        public override bool Import()
        {
            string s = Sr.ReadToEnd().Replace(kunkaojin, "");
            TemplateHelper tmph = new TemplateHelper("");
            string[] arys = regRowSplit.Split(s);
            List<ShowBase> sbs = new List<ShowBase>();
            List<STPa> pas = new List<STPa>();
            List<STIV> ivs = new List<STIV>();
            List<STIpc> ipcs = new List<STIpc>();
            List<STPR> prs = new List<STPR>();
            List<STDT> dts = new List<STDT>();
            List<STFML> fmls = new List<STFML>();
            List<STCPc> cpcs = new List<STCPc>();
            int count = arys.Length - 1;
            SetMaxProcess(this, count);
            Thimport = new Thread(() =>
            {
                //第一行为空
                for (int i = 1; i <= count; i++)
                {
                    string tmp = regsharp.Replace(arys[i], "");
                    tmp = regspace.Replace(regcharRNT.Replace(tmp, ""), " ");
                    tmp = MarkReplece.Replace(tmp, "【$1】").Trim();
                    MatchCollection mhs = rowRege.Matches(tmp);
                    ShowBase sb = new ShowBase() { An = "", SiD = "", Ipc = "", Pa = "", IV = "", PN = "" };
                    sb.ZTID = ZTId;
                    sb.ImportDate = DateTime.Now;

                    foreach (Match m in mhs)
                    {
                        string colname = m.Groups["colname"].Value;
                        string val = m.Groups["colval"].Value.Trim().Trim('\t');
                        string mappingcolname = tmph.getMappingColumnName(colname);
                        switch (mappingcolname)
                        {
                            case "AN":
                                sb.SiD = val;
                                break;
                            case "AP":
                                sb.An = val;
                                break;
                            case "TI":
                                sb.Title = val;
                                break;
                            case "IC":
                            case "CCA":
                            case "CCI":
                                if (sb.Ipc == null)
                                {
                                    sb.Ipc = val;
                                }
                                else
                                {
                                    sb.Ipc += ";" + val;
                                }
                                break;
                            case "PA":
                                sb.Pa = val;
                                break;
                            case "CPY":
                                sb.CPY = val;
                                break;
                            case "OPD":
                                sb.OpD = val;
                                break;
                            case "AB":
                                sb.ABs = val;
                                break;
                            case "IN":
                                sb.IV = val;
                                break;
                            case "PN":
                                sb.PN = val;
                                break;
                            case "PR":
                                sb.PR = val;
                                break;
                            case "PD":
                                sb.PD = val;
                                break;
                            case "DS":
                                sb.DS = val;
                                break;
                            case "DMC":
                                sb.DMc = val;
                                break;
                            case "FAMN":
                                sb.FaMN = val;
                                break;
                            case "CT":
                                sb.Ct = val;
                                break;
                            case "CTNP":
                                sb.CtNP = val;
                                break;
                            case "FI":
                                sb.FI = val;
                                break;
                            case "FT":
                                sb.FT = val;
                                break;
                            case "RF":
                                sb.RF = val;
                                break;
                            case "RFAP":
                                sb.RFaP = val;
                                break;
                            case "RFNP":
                                sb.RFNP = val;
                                break;
                            case "EC":
                                sb.Ec = val;
                                break;

                        }
                    }
                    if (CheckExist(sb.SiD))
                    {
                        if (Skip)
                        {

                            Skip_sum++;
                            continue;
                        }
                        else
                        {
                            DelExist(sb.ZTID.ToString(), sb.SiD.ToString());
                            Overwrite_sum++;
                        }

                    }
                    else
                    {
                        Sids.Add(sb.SiD, true);
                    }
                    sbs.Add(sb);

                    List<STPa> pa = new List<STPa>();
                    List<STIV> iv = new List<STIV>();
                    List<STIpc> ipc = new List<STIpc>();
                    List<STPR> pr = new List<STPR>();
                    List<STFML> fml = new List<STFML>();
                    List<STCPc> cpc = new List<STCPc>();
                    dts.Add(EPODOCIndex.AutoIndex(sb, out pa, out iv, out ipc, out pr, out fml, out cpc));
                    pas.AddRange(pa);
                    ivs.AddRange(iv);
                    ipcs.AddRange(ipc);
                    prs.AddRange(pr);
                    fmls.AddRange(fml);
                    cpcs.AddRange(cpc);
                    if (i % 100 == 0)
                    {

                        //Thread.Sleep(1000);
                        //todo:标引
                        //todo:标引信息入库

                        //todo:基本信息入库
                        //BulkInsert(sbs);
                        BulkInsert(sbs, pas, ivs, ipcs, prs, fml, dts, cpcs);
                        sbs.Clear();
                        pas.Clear();
                        ivs.Clear();
                        ipcs.Clear();
                        prs.Clear();
                        dts.Clear();
                        fmls.Clear();
                        cpcs.Clear();
                        ShowProcess(this, i, Skip_sum, Overwrite_sum, "导入");
                    }

                }
                if (sbs.Count > 0)
                {
                    BulkInsert(sbs, pas, ivs, ipcs, prs, fmls, dts, cpcs);
                    sbs.Clear();
                    pas.Clear();
                    ivs.Clear();
                    ipcs.Clear();
                    prs.Clear();
                    dts.Clear();
                    fmls.Clear();
                    cpcs.Clear();
                }

                ShowProcess(this, count, Skip_sum, Overwrite_sum, "导入完毕");

                Sr.Close();
                Sr.Dispose();

            });
            Thimport.Start();
            return true;
        }
Ejemplo n.º 5
0
        public bool EPODocImport()
        {
            List <ShowBase> sbs  = new List <ShowBase>();
            List <STPa>     pas  = new List <STPa>();
            List <STIV>     ivs  = new List <STIV>();
            List <STIpc>    ipcs = new List <STIpc>();
            List <STPR>     prs  = new List <STPR>();
            List <STDT>     dts  = new List <STDT>();
            List <STFML>    fmls = new List <STFML>();
            List <STCPc>    cpcs = new List <STCPc>();

            int count = dt.Rows.Count;

            SetMaxProcess(this, count);
            Thimport = new Thread(() =>
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ShowBase sb   = new ShowBase();
                    sb.ZTID       = ZTId;
                    sb.ImportDate = DateTime.Now;
                    STDT st       = new STDT()
                    {
                        ZTID = sb.ZTID, ImportDate = sb.ImportDate
                    };

                    #region 处理一条数据
                    foreach (DataColumn col in dt.Columns)
                    {
                        string colname = col.ColumnName;
                        string val     = dt.Rows[i][col].ToString();
                        if (!Template.ColumnMapping.ContainsKey(colname))
                        {
                            continue;
                        }
                        ColumnMapping mapping = Template.ColumnMapping[colname];
                        string mappingcolname = mapping.SystemColumnShowName;
                        string tbname         = mapping.Tablename;
                        int?intval            = null;
                        sbyte?sbval           = null;
                        sbyte ssb             = 0;
                        if (SByte.TryParse(val.Replace("是", "1"), out ssb))
                        {
                            sbval = ssb;
                        }

                        int iit = 0;
                        if (int.TryParse(val, out iit))
                        {
                            intval = iit;
                        }

                        #region STDT
                        if (tbname.ToUpper() == "ST_DT")
                        {
                            switch (mappingcolname)
                            {
                            case "申请年":
                                st.AdY = intval;
                                break;

                            case "公开年":
                                st.PDy = intval;
                                break;

                            case "最早优先权年":
                                st.OpDy = intval;
                                break;

                            case "主申请人":
                                st.FPa = val;
                                break;

                            case "主发明人":
                                st.FIn = val;
                                break;

                            case "主IPC":
                                st.FIpc = val;
                                break;

                            case "主CPC":
                                st.FCPc = val;
                                break;

                            case "是否合作申请":
                                st.IsHeZUO = sbval;
                                break;

                            case "洲际":
                                st.ZHoU = val;
                                break;

                            case "国家":
                                st.GJ = val;
                                break;

                            case "公开年差":
                                st.PDyDef = intval;
                                break;

                            case "申请人数量":
                                st.PaSum = sbval;
                                break;

                            case "发明人数量":
                                st.InSum = sbval;
                                break;

                            case "IPC数量":
                                st.IpcSum = sbval;
                                break;

                            case "CPC数量":
                                st.CPcSum = sbval;
                                break;

                            case "引证数量":
                                st.YZSum = sbval;
                                break;

                            case "被引证数量":
                                st.ByZSum = sbval;
                                break;

                            default:
                                break;
                            }
                        }
                        #endregion
                        #region SHOWBASE
                        switch (mappingcolname)
                        {
                        case "AN":
                        case "入藏号":
                            sb.SiD = val;
                            break;

                        case "申请号":
                            sb.An = val;
                            break;

                        case "申请日":
                            sb.Ad = val;
                            break;

                        case "标题":
                            sb.Title = val;
                            break;

                        case "IPC":
                            if (sb.Ipc == null)
                            {
                                sb.Ipc = val;
                            }
                            else
                            {
                                sb.Ipc += ";" + val;
                            }
                            break;

                        case "CPC":
                            if (sb.CPc == null)
                            {
                                sb.CPc = val;
                            }
                            else
                            {
                                sb.CPc += ";" + val;
                            }

                            break;

                        case "申请人":
                            sb.Pa = val;
                            break;

                        case "申请人代码":
                            sb.CPY = val;
                            break;

                        case "最早优先权日":
                            sb.OpD = val;
                            break;

                        case "摘要":
                            sb.ABs = val;
                            break;

                        case "发明人":
                            sb.IV = val;
                            break;

                        case "公开号":
                            sb.PN = val;
                            break;

                        case "优先权":
                            sb.PR = val;
                            break;

                        case "公开日":
                            sb.PD = val;
                            break;

                        case "DS":
                            sb.DS = val;
                            break;

                        case "FAMN":
                            sb.FaMN = val;
                            break;

                        case "CT":
                            sb.Ct = val;
                            break;

                        case "CTNP":
                            sb.CtNP = val;
                            break;

                        case "FI":
                            sb.FI = val;
                            break;

                        case "FT":
                            sb.FT = val;
                            break;

                        case "RF":
                            sb.RF = val;
                            break;

                        case "RFAP":
                            sb.RFaP = val;
                            break;

                        case "RFNP":
                            sb.RFNP = val;
                            break;

                        case "EC":
                            sb.Ec = val;
                            break;
                        }
                        #endregion
                    }
                    #endregion
                    #region 标引
                    if (CheckExist(sb.SiD))
                    {
                        if (Skip)
                        {
                            Skip_sum++;
                            continue;
                        }
                        else
                        {
                            DelExist(sb.ZTID.ToString(), sb.SiD.ToString());
                            Overwrite_sum++;
                        }
                    }
                    else
                    {
                        Sids.Add(sb.SiD, true);
                    }
                    sbs.Add(sb);

                    List <STPa> pa   = new List <STPa>();
                    List <STIV> iv   = new List <STIV>();
                    List <STIpc> ipc = new List <STIpc>();
                    List <STPR> pr   = new List <STPR>();
                    List <STFML> fml = new List <STFML>();
                    List <STCPc> cpc = new List <STCPc>();
                    st = XLSEPODOCIndex.AutoIndex(sb, st, out pa, out iv, out ipc, out pr, out fml, out cpc);
                    dts.Add(st);
                    pas.AddRange(pa);
                    ivs.AddRange(iv);
                    ipcs.AddRange(ipc);
                    prs.AddRange(pr);
                    fmls.AddRange(fml);
                    cpcs.AddRange(cpc);
                    #endregion

                    if (i % 100 == 0)
                    {
                        EPODOCBulkInsert(sbs, pas, ivs, ipcs, prs, fml, dts, cpcs);
                        sbs.Clear();
                        pas.Clear();
                        ivs.Clear();
                        ipcs.Clear();
                        prs.Clear();
                        dts.Clear();
                        fmls.Clear();
                        cpcs.Clear();
                        ShowProcess(this, i, Skip_sum, Overwrite_sum, "导入");
                    }
                }

                if (sbs.Count > 0)
                {
                    EPODOCBulkInsert(sbs, pas, ivs, ipcs, prs, fmls, dts, cpcs);
                    sbs.Clear();
                    pas.Clear();
                    ivs.Clear();
                    ipcs.Clear();
                    prs.Clear();
                    dts.Clear();
                    fmls.Clear();
                    cpcs.Clear();
                }

                ShowProcess(this, count, Skip_sum, Overwrite_sum, "导入完毕");
            });
            Thimport.Start();
            return(true);
        }
Ejemplo n.º 6
0
        public bool CNImport()
        {
            XLSCPRSIndex.initmp(Template);
            List <DAL.ShowBase> sbs  = new List <DAL.ShowBase>();
            List <DAL.STPa>     pas  = new List <DAL.STPa>();
            List <DAL.STIV>     ivs  = new List <DAL.STIV>();
            List <DAL.STIpc>    ipcs = new List <DAL.STIpc>();
            List <DAL.STPR>     prs  = new List <DAL.STPR>();
            List <DAL.STDT>     dts  = new List <DAL.STDT>();
            List <DAL.STQY>     qys  = new List <DAL.STQY>();

            int count = dt.Rows.Count;

            SetMaxProcess(this, count);
            Thimport = new Thread(() =>
            {
                #region 处理一个DataTable
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ShowBase sb   = new ShowBase();
                    sb.ZTID       = ZTId;
                    sb.ImportDate = DateTime.Now;
                    STDT st       = new STDT()
                    {
                        ZTID = sb.ZTID, ImportDate = sb.ImportDate
                    };
                    #region 处理一条数据
                    foreach (DataColumn col in dt.Columns)
                    {
                        string colname = col.ColumnName;
                        string val     = dt.Rows[i][col].ToString();
                        if (!Template.ColumnMapping.ContainsKey(colname))
                        {
                            continue;
                        }
                        ColumnMapping mapping = Template.ColumnMapping[colname];
                        string mappingcolname = mapping.SystemColumnShowName;
                        string tbname         = mapping.Tablename;
                        int?intval            = null;
                        sbyte?sbval           = null;
                        sbyte ssb             = 0;
                        if (SByte.TryParse(val.Replace("是", "1"), out ssb))
                        {
                            sbval = ssb;
                        }

                        int iit = 0;
                        if (int.TryParse(val, out iit))
                        {
                            intval = iit;
                        }

                        #region STDT
                        if (tbname.ToUpper() == "ST_DT")
                        {
                            switch (mappingcolname)
                            {
                            case "申请年":
                                st.AdY = intval;
                                break;

                            case "公开年":
                                st.PDy = intval;
                                break;

                            case "授权年":
                                st.GdY = intval;
                                break;

                            case "主申请人":
                                st.FPa = val;
                                break;

                            case "主发明人":
                                st.FIn = val;
                                break;

                            case "主IPC":
                                st.FIpc = val;
                                break;

                            case "权利要求1字数":
                                st.ClSCharSum = intval;
                                break;

                            case "专利类型":
                                st.Type = val;
                                break;

                            case "专利类型(含PCT)":
                                st.Type1 = val;
                                break;

                            case "主申请人类型":
                                st.FPaType = val;
                                break;

                            case "是否合作申请":
                                st.IsHeZUO = sbval;
                                break;

                            case "洲际":
                                st.ZHoU = val;
                                break;

                            case "是否国外来华":
                                st.IsGuOwAi = sbval;
                                break;

                            case "国家":
                                st.GJ = val;
                                break;

                            case "省":
                                st.ShEng = val;
                                break;

                            case "省(计划单列市)":
                                st.ShEng1 = val;
                                break;

                            case "市":
                                st.ShI = val;
                                break;

                            case "区县":
                                st.QUXian = val;
                                break;

                            case "经济区域":
                                st.QUYU = val;
                                break;

                            case "最终法律状态":
                                st.LG = val;
                                break;

                            case "法律截止年":
                                st.LGYear = intval;;
                                break;

                            case "公开年差":
                                st.PDyDef = intval;;
                                break;

                            case "授权年差":
                                st.GdYDef = intval;;
                                break;

                            case "专利年龄":
                                st.Age = sbval;
                                break;

                            case "是否公知技术":
                                st.IsGongZHi = sbval;
                                break;

                            case "申请人数量":
                                st.PaSum = sbval;
                                break;

                            case "发明人数量":
                                st.InSum = sbval;
                                break;

                            case "IPC数量":
                                st.IpcSum = sbval;
                                break;

                            default:
                                break;
                            }
                        }
                        #endregion
                        #region showbase
                        switch (mappingcolname)
                        {
                        case "申请号":
                            sb.An  = val;
                            sb.SiD = val;
                            break;

                        case "发明名称":
                        case "标题":
                            sb.Title = val;
                            break;

                        case "摘要":
                            sb.ABs = val;
                            break;

                        case "权利要求":
                            sb.ClM = val;
                            break;

                        case "国际分类号":
                            sb.Ipc = val;
                            break;

                        case "范畴分类号":
                            sb.FCfL = val;
                            break;

                        case "省":
                        case "国家/省市":
                            sb.ShEng = val;
                            break;

                        case "申请人":
                            sb.Pa = val;
                            break;

                        case "联系地址":
                            sb.AddR = val;
                            break;

                        case "邮编":
                            sb.Zip = val;
                            break;

                        case "代理机构":
                            sb.DLJG = val;
                            break;

                        case "代理人":
                            sb.DLr = val;
                            break;

                        case "代理机构地址":
                            sb.DLJGAddR = val;
                            break;

                        case "发明人":
                            sb.IV = val;
                            break;

                        case "申请日":
                            sb.Ad = val;
                            break;

                        case "公开号":
                            sb.PN = val;
                            break;

                        case "公开日":
                            sb.PD = val;
                            break;

                        case "公告日":
                        case "授权日":
                            if (string.IsNullOrEmpty(sb.Gd))
                            {
                                sb.Gd = val;
                            }
                            break;

                        case "授权号":
                        case "公告号":
                            if (string.IsNullOrEmpty(sb.GN))
                            {
                                sb.GN = val;
                            }
                            break;

                        case "优先权":
                            sb.PR = val;
                            break;

                        case "审批历史":
                            sb.LG = val;
                            break;

                        case "附图数":
                            sb.PiCSum = val;
                            break;

                        case "页数":
                            sb.DesPageSum = val;
                            break;

                        case "权利要求项数":
                            sb.ClMSum = val;
                            break;
                        }
                        #endregion
                    }
                    #endregion
                    if (CheckExist(sb.SiD))
                    {
                        if (Skip)
                        {
                            Skip_sum++;
                            continue;
                        }
                        else
                        {
                            DelExist(sb.ZTID.ToString(), sb.SiD.ToString());
                            Overwrite_sum++;
                        }
                    }
                    else
                    {
                        Sids.Add(sb.SiD, true);
                    }
                    sbs.Add(sb);

                    List <STPa> pa   = new List <STPa>();
                    List <STIV> iv   = new List <STIV>();
                    List <STIpc> ipc = new List <STIpc>();
                    List <STPR> pr   = new List <STPR>();
                    List <STQY> qy   = new List <STQY>();

                    st = XLSCPRSIndex.AutoIndex(sb, st, out pa, out iv, out ipc, out pr, out qy);
                    dts.Add(st);
                    pas.AddRange(pa);
                    ivs.AddRange(iv);
                    ipcs.AddRange(ipc);
                    prs.AddRange(pr);
                    qys.AddRange(qy);

                    if (i % 100 == 0)
                    {
                        //todo:基本信息入库
                        CNBulkInsert(sbs, pas, ivs, ipcs, prs, dts, qys);
                        sbs.Clear();
                        pas.Clear();
                        ivs.Clear();
                        ipcs.Clear();
                        prs.Clear();
                        dts.Clear();
                        qys.Clear();
                        ShowProcess(this, i, Skip_sum, Overwrite_sum, "导入");
                    }
                }
                #endregion

                if (sbs.Count > 0)
                {
                    CNBulkInsert(sbs, pas, ivs, ipcs, prs, dts, qys);
                    sbs.Clear();
                    pas.Clear();
                    ivs.Clear();
                    ipcs.Clear();
                    prs.Clear();
                    dts.Clear();
                    qys.Clear();
                }
                log.Info(string.Format("导入完毕: 专题库:{0},ID:{1},类型:,{2}总量:{3},跳过:{4}", ztName, ZTId, Type, count, Skip_sum));
                ShowProcess(this, count, Skip_sum, Overwrite_sum, "导入完毕");
            });
            Thimport.Start();
            return(true);
        }
Ejemplo n.º 7
0
        public bool WPIImport()
        {
            XLSWPIIndex.initmp(Template);
            List <ShowBase> sbs  = new List <ShowBase>();
            List <STPa>     pas  = new List <STPa>();
            List <STIV>     ivs  = new List <STIV>();
            List <STIpc>    ipcs = new List <STIpc>();
            List <STPR>     prs  = new List <STPR>();
            List <STDT>     dts  = new List <STDT>();
            List <STDc>     dcs  = new List <STDc>();
            List <STPNS>    pns  = new List <STPNS>();
            List <STAnS>    ans  = new List <STAnS>();

            int count = dt.Rows.Count;

            SetMaxProcess(this, count);
            Thimport = new Thread(() =>
            {
                //
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    ShowBase sb   = new ShowBase();
                    sb.ZTID       = ZTId;
                    sb.ImportDate = DateTime.Now;
                    STDT st       = new STDT()
                    {
                        ZTID = sb.ZTID, SiD = sb.SiD, ImportDate = sb.ImportDate
                    };

                    #region 一行记录
                    foreach (DataColumn col in dt.Columns)
                    {
                        string colname = col.ColumnName;
                        string val     = dt.Rows[i][col].ToString();
                        if (!Template.ColumnMapping.ContainsKey(colname))
                        {
                            continue;
                        }
                        ColumnMapping mapping = Template.ColumnMapping[colname];
                        string mappingcolname = mapping.SystemColumnShowName;
                        string tbname         = mapping.Tablename;

                        int?intval  = null;
                        sbyte?sbval = null;

                        int iit   = 0;
                        sbyte ssb = 0;
                        if (sbyte.TryParse(val, out ssb))
                        {
                            sbval = ssb;
                        }
                        if (int.TryParse(val, out iit))
                        {
                            intval = iit;
                        }
                        #region STDT

                        if (tbname.ToUpper() == "ST_DT")
                        {
                            switch (mappingcolname)
                            {
                            case "申请年":
                                st.AdY = intval;
                                break;

                            case "公开年":
                                st.AdY = intval;
                                break;

                            case "最早优先权年":
                                st.OpDy = intval;
                                break;

                            case "主申请人":
                                st.FPa = val;
                                break;

                            case "主发明人":
                                st.FIn = val;
                                break;

                            case "主IPC":
                                st.FIpc = val;
                                break;

                            case "主CPC":
                                st.FCPc = val;
                                break;

                            case "主DC":
                                st.FDMc = val;
                                break;

                            case "是否合作申请":
                                st.IsHeZUO = sbval;
                                break;

                            case "洲际":
                                st.ZHoU = val;
                                break;

                            case "是否三局":
                                st.IsSanJU = sbval;
                                break;

                            case "是否五局":
                                st.IsWuJU = sbval;
                                break;

                            case "国家":
                                st.GJ = val;
                                break;

                            case "公开年差":
                                st.PDyDef = intval;
                                break;

                            case "申请人数量":
                                st.PaSum = sbval;
                                break;

                            case "发明人数量":
                                st.InSum = sbval;
                                break;

                            case "IPC数量":
                                st.IpcSum = sbval;
                                break;

                            case "CPC数量":
                                st.CPcSum = sbval;
                                break;

                            case "DC数量":
                                st.DMcSum = sbval;
                                break;

                            case "同族数量":
                                st.FMLSum = sbval;
                                break;

                            case "国家数量":
                                st.GJSum = sbval;
                                break;

                            case "引证数量":
                                st.YZSum = sbval;
                                break;

                            case "被引证数量":
                                st.ByZSum = sbval;
                                break;

                            default:
                                break;
                            }
                        }
                        #endregion
                        #region SHOWBASE
                        switch (mappingcolname)
                        {
                        case "AN":
                        case "入藏号":
                            sb.SiD = val;
                            break;

                        case "申请号(原始)":
                        case "申请号":
                            sb.An = val;
                            break;

                        case "标题":
                        case "专利名称":
                            sb.Title = val;
                            break;

                        case "IPC":
                            if (sb.Ipc == null)
                            {
                                sb.Ipc = val;
                            }
                            else
                            {
                                sb.Ipc += ";" + val;
                            }

                            break;

                        case "申请人":
                            sb.Pa = val;
                            break;

                        case "申请人代码":
                            sb.CPY = val;
                            break;

                        case "最早优先权日":
                            sb.OpD = val;
                            break;

                        case "摘要":
                            sb.ABs = val;
                            break;

                        case "发明人":
                            sb.IV = val;
                            break;

                        case "公开号(原始)":
                        case "公开号":
                            sb.PN = val;
                            break;

                        case "优先权":
                            sb.PR = val;
                            break;

                        case "公开日":
                            sb.PD = val;
                            break;

                        case "DC":
                            sb.Dc = val;
                            break;

                        case "DMC":
                            sb.DMc = val;
                            break;

                        case "DS":
                            break;

                        case "YZ":
                            break;

                        case "BY":
                            break;

                        case "CPC":
                            sb.CPc = val;
                            break;

                        default:
                            break;
                        }
                        #endregion
                    }
                    #endregion
                    if (CheckExist(sb.SiD))
                    {
                        if (Skip)
                        {
                            Skip_sum++;
                            continue;
                        }
                        else
                        {
                            DelExist(sb.ZTID.ToString(), sb.SiD.ToString());
                            Overwrite_sum++;
                        }
                    }
                    else
                    {
                        Sids.Add(sb.SiD, true);
                    }
                    sbs.Add(sb);

                    List <STPa> pa   = new List <STPa>();
                    List <STIV> iv   = new List <STIV>();
                    List <STIpc> ipc = new List <STIpc>();
                    List <STPR> pr   = new List <STPR>();
                    List <STAnS> an  = new List <STAnS>();
                    List <STPNS> pn  = new List <STPNS>();
                    List <STDc> dc   = new List <STDc>();
                    st = XLSWPIIndex.AutoIndex(sb, st, out pa, out iv, out ipc, out pr, out pn, out an, out dc);
                    dts.Add(st);
                    pas.AddRange(pa);
                    ivs.AddRange(iv);
                    ipcs.AddRange(ipc);
                    prs.AddRange(pr);
                    pns.AddRange(pn);
                    ans.AddRange(an);
                    dcs.AddRange(dc);
                    if (i % 100 == 0)
                    {
                        WPIBulkInsert(sbs, pas, ivs, ipcs, prs, dts, pns, ans, dcs);
                        sbs.Clear();
                        pas.Clear();
                        ivs.Clear();
                        ipcs.Clear();
                        prs.Clear();
                        dts.Clear();
                        pns.Clear();
                        ans.Clear();
                        dcs.Clear();
                        ShowProcess(this, i, Skip_sum, Overwrite_sum, "导入");
                    }
                }
                if (sbs.Count > 0)
                {
                    WPIBulkInsert(sbs, pas, ivs, ipcs, prs, dts, pns, ans, dcs);
                    sbs.Clear();
                    pas.Clear();
                    ivs.Clear();
                    ipcs.Clear();
                    prs.Clear();
                    dts.Clear();
                    pns.Clear();
                    ans.Clear();
                    dcs.Clear();
                }

                ShowProcess(this, count, Skip_sum, Overwrite_sum, "导入完毕");
            });
            Thimport.Start();
            return(true);
        }