Esempio n. 1
0
        /// <summary>
        /// 插入更新历史//检索成功
        /// </summary>
        /// <param name="se"></param>
        /// <param name="srcFilePath">当前检索结果文件</param>
        /// <param name="compareFilePath">差异文件</param>
        /// <param name="hits">结果数</param>
        ///  <param name="hits">差异数</param>
        /// <returns></returns>
        public bool AddSearchLis(Searches se, byte[] strFs, byte[] compareFile, string hits, string changenum)
        {
            int HisOrder_ID = getMaxHisOrder(se.C_ID);
            //插入检索历史表
            string sql = "insert into C_W_SEARCHLIS (W_ID,C_ID,S_NAME,CHANGEDATE,CURRENTNUM,CHANGENUM,SEARCHFILE,COMPAREFILE,TYPE,HisOrder)"
                + " VALUES (@W_ID,@C_ID,@S_NAME,@CHANGEDATE,@CURRENTNUM,@CHANGENUM,@SEARCHFILE,@COMPAREFILE,@TYPE,@HisOrder) ";
            SqlParameter[] param ={
                                     new SqlParameter("@W_ID",SqlDbType.Int,4),
                                     new SqlParameter("@C_ID",SqlDbType.Int,4),
                                       new SqlParameter("@S_NAME", SqlDbType.VarChar ,200),
                                     new SqlParameter("@CHANGEDATE",SqlDbType.DateTime,10),
                                     new SqlParameter("@CURRENTNUM",SqlDbType.Int,4),
                                     new SqlParameter("@CHANGENUM",SqlDbType.Int,4),
                                     new SqlParameter("@SEARCHFILE",SqlDbType.VarBinary,strFs.Length),
                                     new SqlParameter("@COMPAREFILE",SqlDbType.VarBinary,compareFile.Length),
                                     new SqlParameter("@TYPE",SqlDbType.Int,4) ,
                                     new SqlParameter("@HisOrder",SqlDbType.Int,4)
                                 };
            param[0].Value = se.W_ID;
            param[1].Value = se.C_ID;
            param[2].Value = getSNamebyCWID(se.W_ID);
            param[3].Value = System.DateTime.Now;
            param[4].Value = hits;
            param[5].Value = changenum;
            param[6].Value = strFs;
            param[7].Value = compareFile;
            param[8].Value = se.TYPE;
            param[9].Value = HisOrder_ID;
            using (SqlConnection con = new SqlConnection(DBA.SqlDbAccess.ConnStr))
            {
                con.Open();
                SqlTransaction trans = con.BeginTransaction();
                if (DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql, param) <= 0)
                {
                    trans.Rollback();
                    return false;
                }
                //修改检索式表 变更日期为当前日期,当前数量为引擎返回数量,差异量为(A-B)+(B-A)
                sql = "UPDATE C_W_SECARCH SET CHANGEDATE=GETDATE(),CURRENTNUM=@CURRENTNUM,CHANGENUM=@CHANGENUM,SEARCHFILE=@SEARCHFILE,COMPAREFILE=@COMPAREFILE WHERE W_ID=@W_ID";
                SqlParameter[] param1 ={
                                          new SqlParameter("@W_ID",se.W_ID),
                                          new SqlParameter("CURRENTNUM",hits),
                                          new SqlParameter("CHANGENUM",changenum),
                                          new SqlParameter("SEARCHFILE",strFs),
                                          new SqlParameter("COMPAREFILE",compareFile)
                                      };
                if (DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql, param) <= 0)
                {
                    trans.Rollback();
                    return false;
                }

                // add by zhangqiuyi 20151103 增加更新标记
                if (int.Parse(changenum) > 0)
                {
                    sql = "UPDATE C_EARLY_WARNING SET ISUPDATE=@ISUPDATE WHERE C_ID=@C_ID";
                    SqlParameter[] param2 ={
                                              new SqlParameter("@C_ID",se.C_ID),
                                              new SqlParameter("@ISUPDATE","1")
                                          };
                    if (DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql, param2) <= 0)
                    {
                        trans.Rollback();
                        return false;
                    }
                }

                trans.Commit();
                return true;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 送检索引擎
        /// </summary>
        /// <param name="se"></param>
        /// <param name="sNo"></param>
        /// <param name="UserId"></param>
        /// <param name="_type"></param>
        /// <returns></returns>
        public string SendSearch(Searches se, int sNo, int UserId, ServiceReference.SearchDbType _type)
        {
            List<int> lstZhuanTi = new List<int>();//专题库结果
            List<int> lstRs = new List<int>();//合并对比文件
            List<int> lstHis = new List<int>();//预警历史结果
            List<int> lstResult = new List<int>();//检索结果文件
            List<string> leixing = new List<string>();
            List<string> shixiao = new List<string>();
            string strMsg = "";
            //判断是否为专题库预警
            if (!string.IsNullOrEmpty(se.NID))
            {
                string type = "CN";
                if (_type.ToString().ToUpper() == "DOCDB")
                {
                    type = "EN";
                }
                lstZhuanTi = ztHelper.GetZTResultList(se.NID, type);
            }

            ServiceReference.SearchWebServiceSoapClient mySearch = new ServiceReference.SearchWebServiceSoapClient();
            /// 返回CNP文件号单
            /// fm.cnp,授权:FS.cnp
            ///新型:um.cnp
            ///外观:wg.cnp
            ///有效:YX.cnp
            ///失效: SX.cnp
            if (se.C_TYPE == "16")//行业质量预警时
            {
                string[] lsttemp = se.SearchName.Split(';');
                foreach (string tmp in lsttemp)
                {
                    switch (tmp)
                    {
                        case "有效发明公开":
                            se.SearchName = "";
                            leixing.Add("FM");
                            shixiao.Add("YX");
                            break;
                        case "有效实用新型授权":
                            se.SearchName = "";
                            leixing.Add("UM");
                            shixiao.Add("YX");
                            break;
                        case "有效外观设计授权":
                            se.SearchName = "";
                            leixing.Add("WG");
                            shixiao.Add("YX");
                            break;
                        case "有效发明授权":
                            se.SearchName = "";
                            leixing.Add("FS");
                            shixiao.Add("YX");
                            break;
                        case "失效发明公开":
                            se.SearchName = "";
                            leixing.Add("FM");
                            shixiao.Add("SX");
                            break;
                        case "失效实用新型授权":
                            se.SearchName = "";
                            leixing.Add("UM");
                            shixiao.Add("SX");
                            break;
                        case "失效外观设计授权":
                            se.SearchName = "";
                            leixing.Add("WG");
                            shixiao.Add("SX");
                            break;
                        case "失效发明授权":
                            se.SearchName = "";
                            leixing.Add("FS");
                            shixiao.Add("SX");
                            break;
                    }
                }

            }
            if (!string.IsNullOrEmpty(se.SearchName))
            {
                if (!se.SearchName.StartsWith("F "))
                {
                    se.SearchName = "F XX " + se.SearchName;
                }
                //送引擎
                ServiceReference.ResultInfoWebService res = mySearch.Search(se.SearchName, UserId, sNo, _type);
                if (res == null)
                {
                    return null;
                }

                strMsg = res.ResultInfo.HitMsg;
                strMsg = strMsg.Substring(strMsg.LastIndexOf(":") + 1);
                if (res.ResultInfo.HitCount > 0)// 返回结果正确
                {
                    //获取结果文件路径
                    string srcFilePath = res.ResultSearchFilePath;
                    //对比结果文件
                    FileStream fs = new FileStream(srcFilePath, FileMode.Open);//当前检索结果文件
                    byte[] bteRs = new byte[fs.Length];
                    fs.Read(bteRs, 0, bteRs.Length);
                    fs.Close();

                    lstResult = ConvertLstByte.GetCnpList(bteRs);

                }
                else
                {
                    AddSearchLis(se);
                    return strMsg;
                }
            }
            //判断是否专题库
            if (!string.IsNullOrEmpty(se.NID) && !string.IsNullOrEmpty(se.SearchName))
            {
                lstRs = lstZhuanTi.Intersect(lstResult).ToList<int>();
            }
            else if (!string.IsNullOrEmpty(se.NID))
            {
                if (se.C_TYPE == "11")//专题库授权量统计
                {
                    List<int> lstFS = GetCNPList("FS");
                    List<int> lstWG = GetCNPList("WG");
                    List<int> lstUM = GetCNPList("UM");
                    List<int> lstZhuanTi_FS = lstZhuanTi.Intersect(lstFS).ToList<int>();
                    List<int> lstZhuanTi_WG = lstZhuanTi.Intersect(lstWG).ToList<int>();
                    List<int> lstZhuanTi_UM = lstZhuanTi.Intersect(lstUM).ToList<int>();

                    lstZhuanTi = lstZhuanTi_FS.Union(lstZhuanTi_WG).ToList<int>();
                    lstZhuanTi = lstZhuanTi.Union(lstZhuanTi_UM).ToList<int>();
                }
                else if (se.C_TYPE == "16")//专题库质量统计
                {
                    List<int> lst = new List<int>();
                    for (int i = 0; i < leixing.Count; i++)
                    {
                        List<int> lstLX = GetCNPList(leixing[i]);//根据LEIXING读取CNP文件
                        List<int> lstSX = GetCNPList(shixiao[i]);//根据失效,有效读取CNP文件
                        List<int> lstlx_sx = lstLX.Intersect(lstSX).ToList<int>();
                        List<int> lsttmp = lstZhuanTi.Intersect(lstlx_sx).ToList<int>();
                        lst = lst.Union(lsttmp).ToList<int>();
                    }
                    lstZhuanTi = lst;
                }
                lstRs = lstZhuanTi;
            }
            else
            {
                lstRs = lstResult;
            }
            byte[] bteResult = ConvertLstByte.GetListBytes(lstRs);//结果文件

            lstHis = ConvertLstByte.GetCnpList(se.SearchFile);

            // Union  Except  Intersect
            List<int> lstRs_His = lstRs.Except(lstHis).ToList<int>();
            List<int> lstHis_Rs = lstHis.Except(lstRs).ToList<int>();
            List<int> lstExcept = lstRs_His.Union(lstHis_Rs).ToList<int>();

            int Exceptnum = 0;
            if (lstHis.Count != 0)
            {
                Exceptnum = lstExcept.Count;//差异数
            }

            byte[] cbuffer = ConvertLstByte.GetListBytes(lstExcept);//差异文件
            if (se.C_TYPE.Substring(1, 1) == "7")//计算专利平均寿命
            {
                string avgage = GetPatentAvgAge(lstRs);
                //检索历史
                AddSearchLis(se, bteResult, cbuffer, avgage, Exceptnum.ToString());
            }
            else
            {
                //检索历史
                AddSearchLis(se, bteResult, cbuffer, lstRs.Count.ToString(), Exceptnum.ToString());
            }

            return strMsg;
        }
Esempio n. 3
0
        /// <summary>
        /// 提取符合更新周期的检索式
        /// </summary>
        /// <returns></returns>
        public List<Searches> ReadSearch()
        {
            List<string> sendMail = new List<string>();
            bool flag = true;
            List<Searches> LstSearch = new List<Searches>();

            // delete by zhangqiuyi 20151104
            //string sql = "select * from C_EARLY_WARNING a left join C_W_SECARCH b "
            //        + " on a.C_ID=b.C_ID "
            //        + " where CONVERT(varchar(10), DATEADD(DAY,PERIOD,GETDATE()),120)<=CONVERT(varchar(10),ChangeDate,120)";

            // modify by zhangqiuyi 20151104
            string sql = @"select b.W_ID, a.C_ID, b.ChangeDate, b.ChangeNum, b.CurrentNum, b.Pattern, b.type, b.SearchFile, a.dbsource,
                    a.USER_ID from C_EARLY_WARNING a left join C_W_SECARCH b  on a.C_ID=b.C_ID
                    where CONVERT(varchar(10), DATEADD(DAY,PERIOD*30,ChangeDate),120)<=CONVERT(varchar(10),GETDATE(),120)";

            DataTable dt = new DataTable();
            DataSet ds = new DataSet();
            dt = DBA.SqlDbAccess.GetDataTable(CommandType.Text, sql, null);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Searches sc = new Searches();
                sc.W_ID = Convert.ToInt32(dt.Rows[i]["W_ID"]);
                sc.C_ID = Convert.ToInt32(dt.Rows[i]["C_ID"]);
                sc.ChangeDate = Convert.ToDateTime(dt.Rows[i]["ChangeDate"]);
                sc.ChangeNum = Convert.ToInt32(dt.Rows[i]["ChangeNum"]);
                sc.CurrentNum = Convert.ToInt32(dt.Rows[i]["CurrentNum"]);
                sc.SearchName = dt.Rows[i]["Pattern"].ToString();
                sc.TYPE = Convert.ToInt32(dt.Rows[i]["type"]);

                MemoryStream ms = new MemoryStream();
                if (!(dt.Rows[i]["SearchFile"] is DBNull))
                {
                    ms = new MemoryStream((byte[])dt.Rows[i]["SearchFile"]);
                }

                byte[] bt = ms.ToArray();

                sc.SearchFile = bt;
                sc.DBSource = dt.Rows[i]["dbsource"].ToString();
                LstSearch.Add(sc);

                //if (sendMail.Contains(dt.Rows[i]["USER_ID"].ToString()))
                //{
                //    continue;
                //}
                //sendMail.Add(dt.Rows[i]["USER_ID"].ToString());
                //sql = "select EMail,RealName from TbUser Where ID=" + dt.Rows[i]["USER_ID"].ToString();
                //ds = DBA.SqlDbAccess.GetDataSet(CommandType.Text, sql);

                //if (ds.Tables[0].Rows.Count <= 0)
                //{
                //    continue;
                //}

                //if (ds.Tables[0].Rows[0]["EMail"].ToString().Trim() == "")
                //{
                //    continue;
                //}

                ////发送邮件
                //flag = SendMail(System.Configuration.ConfigurationSettings.AppSettings["UserName"].ToString().Trim(), System.Configuration.ConfigurationSettings.AppSettings["PWD"].ToString().Trim(), ds.Tables[0].Rows[0]["EMail"].ToString().Trim(), "你的预警信息已更新,请登陆厦漳泉科技基础资源服务平台查询");

                //string zt = flag ? "发送成功" : "发送失败";
                //sql = @"Insert Into TbSendMailLog(ShouJianRen,YouJianMingCheng,ZhuanLiQuYu,FaSongShiJian,FaSongZhuangTai) Values('"
                //    + ds.Tables[0].Rows[0]["RealName"].ToString().Trim() + "','" + ds.Tables[0].Rows[0]["EMail"].ToString().Trim()
                //    + "','','" + DateTime.Now + "','" + zt + "')";

                //DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql);
            }

            return LstSearch;
        }
Esempio n. 4
0
        /// <summary>
        /// 提取符合更新周期的检索式,第一次执行,或手动更新时使用
        /// </summary>
        /// <param name="C_ID"></param>
        /// <param name="flag">0:初次提取 1:手动更新</param>
        /// <returns></returns>
        public List<Searches> ReadSearch(int C_ID, int flag)
        {
            List<string> sendMail = new List<string>();
            DataSet ds = new DataSet();

            List<Searches> LstSearch = new List<Searches>();
            string sql = "select b.W_ID, a.C_ID,b.S_Name, b.Pattern, b.type, b.SearchFile, a.dbsource, a.USER_ID,b.NID,a.C_TYPE  from C_EARLY_WARNING a left join C_W_SECARCH b "
                    + " on a.C_ID=b.C_ID "
                    + " where  a.C_ID=" + C_ID;

            DataTable dt = new DataTable();

            dt = DBA.SqlDbAccess.GetDataTable(CommandType.Text, sql, null);

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                Searches sc = new Searches();
                sc.W_ID = Convert.ToInt32(dt.Rows[i]["W_ID"]);
                sc.C_ID = Convert.ToInt32(dt.Rows[i]["C_ID"]);
                sc.ChangeDate = DateTime.Now;
                sc.ChangeNum = 0;
                sc.NID = dt.Rows[i]["NID"].ToString();
                sc.CurrentNum = 0;
                sc.SearchName = dt.Rows[i]["Pattern"].ToString();
                sc.S_Name = dt.Rows[i]["S_Name"].ToString();
                sc.TYPE = Convert.ToInt32(dt.Rows[i]["type"]);
                sc.C_TYPE = dt.Rows[i]["C_TYPE"].ToString();

                if (flag != 0)
                {
                    try
                    {
                        MemoryStream ms = new MemoryStream((byte[])dt.Rows[i]["SearchFile"]);
                        byte[] bt = ms.ToArray();

                        sc.SearchFile = bt;
                    }
                    catch (Exception ex)
                    {
                        //不处理
                    }
                }
                sc.DBSource = dt.Rows[i]["dbsource"].ToString();
                LstSearch.Add(sc);

                //if (sendMail.Contains(dt.Rows[i]["USER_ID"].ToString()))
                //{
                //    continue;
                //}
                //sendMail.Add(dt.Rows[i]["USER_ID"].ToString());
                //sql = "select * from TbUser Where ID=" + dt.Rows[i]["USER_ID"].ToString();
                //ds = DBA.SqlDbAccess.GetDataSet(CommandType.Text, sql);

                //if (ds.Tables[0].Rows.Count <= 0)
                //{
                //    continue;
                //}

                //if (ds.Tables[0].Rows[0]["EMail"].ToString().Trim() == "")
                //{
                //    continue;
                //}
                ////发送邮件
                //bool flagSendMail = SendMail("xuxitao", "111111", ds.Tables[0].Rows[0]["EMail"].ToString().Trim(), "你的预警信息已更新,请登陆厦漳泉科技基础资源服务平台(http://192.168.131.10:8080)查询");

                //string zt = flagSendMail ? "发送成功" : "发送失败";
                //sql = "Insert Into TbSendMailLog(ShouJianRen,YouJianMingCheng,ZhuanLiQuYu,FaSongShiJian,FaSongZhuangTai) Values('" + ds.Tables[0].Rows[0]["RealName"].ToString().Trim() + "','" + ds.Tables[0].Rows[0]["EMail"].ToString().Trim() + "','','" + DateTime.Now + "','" + zt + "')";

                //DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql);

            }

            return LstSearch;
        }
Esempio n. 5
0
        /// <summary>
        /// 插入更新历史//检索失败
        /// </summary>
        /// <param name="se"></param>
        /// <param name="strFs"></param>
        /// <param name="compareFile"></param>
        /// <param name="hits"></param>
        /// <param name="changenum"></param>
        /// <returns></returns>
        public bool AddSearchLis(Searches se)
        {
            int HisOrder_ID = getMaxHisOrder(se.C_ID);

            //插入检索历史表
            string sql = "insert into C_W_SEARCHLIS (W_ID,C_ID,S_NAME,CHANGEDATE,CURRENTNUM,CHANGENUM,TYPE,HisOrder)"
                + " VALUES (@W_ID,@C_ID,@S_NAME,@CHANGEDATE,@CURRENTNUM,@CHANGENUM,@TYPE,@HisOrder) ";
            SqlParameter[] param ={
                                     new SqlParameter("@W_ID",SqlDbType.Int,4),
                                     new SqlParameter("@C_ID",SqlDbType.Int,4),
                                     new SqlParameter("@S_NAME", SqlDbType.VarChar ,200),
                                     new SqlParameter("@CHANGEDATE",SqlDbType.DateTime,10),
                                     new SqlParameter("@CURRENTNUM",SqlDbType.Int,4),
                                     new SqlParameter("@CHANGENUM",SqlDbType.Int,4),
                                     new SqlParameter("@TYPE",SqlDbType.Int,4) ,
                                     new SqlParameter("@HisOrder",SqlDbType.Int,4)
                                 };
            param[0].Value = se.W_ID;
            param[1].Value = se.C_ID;
            param[2].Value = getSNamebyCWID(se.W_ID);
            param[3].Value = System.DateTime.Now;
            param[4].Value = "0";
            param[5].Value = "0";
            param[6].Value = se.TYPE;
            param[7].Value = HisOrder_ID;
            using (SqlConnection con = new SqlConnection(DBA.SqlDbAccess.ConnStr))
            {
                con.Open();
                SqlTransaction trans = con.BeginTransaction();
                if (DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql, param) <= 0)
                {
                    trans.Rollback();
                    return false;
                }
                //修改检索式表 变更日期为当前日期,当前数量为引擎返回数量,差异量为(A-B)+(B-A)
                sql = "UPDATE C_W_SECARCH SET CHANGEDATE=GETDATE(),CURRENTNUM=@CURRENTNUM,CHANGENUM=@CHANGENUM WHERE W_ID=@W_ID";
                SqlParameter[] param1 ={
                                          new SqlParameter("@W_ID",se.W_ID),
                                          new SqlParameter("CURRENTNUM","0"),
                                          new SqlParameter("CHANGENUM","0"),
                                      };
                if (DBA.SqlDbAccess.ExecNoQuery(CommandType.Text, sql, param) <= 0)
                {
                    trans.Rollback();
                    return false;
                }
                trans.Commit();
                return true;
            }
        }
Esempio n. 6
0
 public ParamObject(ManualResetEvent mre, Searches se, int userid)
 {
     this._se = se;
     this.mre = mre;
     this.UserId = userid;
 }