Exemple #1
0
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public tabCVJDMatchModel GetModel(int id)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("select * ");
            strSql.Append("  from tabCVJDMatch ");
            strSql.Append(" where id=@id");
            SqlParameter[] parameters =
            {
                new SqlParameter("@id", SqlDbType.Int, 4)
            };
            parameters[0].Value = id;


            tabCVJDMatchModel model = new tabCVJDMatchModel();
            DataSet           ds    = DbHelperSQL.Query(strSql.ToString(), parameters);

            if (ds.Tables[0].Rows.Count > 0)
            {
                return(ModelHandler <tabCVJDMatchModel> .FillModel(ds.Tables[0].Rows[0]));
            }
            else
            {
                return(null);
            }
        }
Exemple #2
0
 /// <summary>
 /// 更新一条数据
 /// </summary>
 public bool Update(tabCVJDMatchModel model)
 {
     return(dal.Update(model));
 }
Exemple #3
0
 /// <summary>
 /// 增加一条数据
 /// </summary>
 public int Add(tabCVJDMatchModel model)
 {
     return(dal.Add(model));
 }
Exemple #4
0
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(tabCVJDMatchModel model, List <string> ChangedFields)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update tabCVJDMatch set ");

            strSql.Append(" BaseOn = @BaseOn , ");
            strSql.Append(" ResumeID = @ResumeID , ");
            strSql.Append(" ResumeNo = @ResumeNo , ");
            strSql.Append(" PositionID = @PositionID , ");
            strSql.Append(" CreateDate = @CreateDate , ");
            strSql.Append(" WordAddress = @WordAddress , ");
            strSql.Append(" Age = @Age , ");
            strSql.Append(" WorkYear = @WorkYear , ");
            strSql.Append(" Salary = @Salary , ");
            strSql.Append(" XueLi = @XueLi , ");
            strSql.Append(" Skill = @Skill , ");
            strSql.Append(" CoreSkill = @CoreSkill , ");
            strSql.Append(" Major = @Major , ");
            strSql.Append(" OrgScale = @OrgScale , ");
            strSql.Append(" MatchDegree = @MatchDegree , ");
            strSql.Append(" AppID = @AppID , ");
            strSql.Append(" Version = @Version , ");
            strSql.Append(" RandomNo = @RandomNo , ");
            strSql.Append(" ParentID = @ParentID , ");
            strSql.Append(" Remark = @Remark , ");
            strSql.Append(" LableText = @LableText , ");
            strSql.Append(" ExJson = @ExJson , ");
            strSql.Append(" Status = @Status , ");
            strSql.Append(" OrderNo = @OrderNo , ");
            strSql.Append(" ModifyDate = @ModifyDate , ");
            strSql.Append(" CreateUser = @CreateUser , ");
            strSql.Append(" ModifyUser = @ModifyUser  ");
            strSql.Append(" where id=@id ");
            SqlParameter[] parameters =
            {
                new SqlParameter("@id",          SqlDbType.Int,        4),
                new SqlParameter("@BaseOn",      SqlDbType.NVarChar, 200),
                new SqlParameter("@ResumeID",    SqlDbType.Int,        4),
                new SqlParameter("@ResumeNo",    SqlDbType.NVarChar,  50),
                new SqlParameter("@PositionID",  SqlDbType.Int,        4),
                new SqlParameter("@CreateDate",  SqlDbType.NVarChar, 200),
                new SqlParameter("@WordAddress", SqlDbType.Int,        4),
                new SqlParameter("@Age",         SqlDbType.Int,        4),
                new SqlParameter("@WorkYear",    SqlDbType.Int,        4),
                new SqlParameter("@Salary",      SqlDbType.Int,        4),
                new SqlParameter("@XueLi",       SqlDbType.Int,        4),
                new SqlParameter("@Skill",       SqlDbType.Int,        4),
                new SqlParameter("@CoreSkill",   SqlDbType.Int,        4),
                new SqlParameter("@Major",       SqlDbType.Int,        4),
                new SqlParameter("@OrgScale",    SqlDbType.Int,        4),
                new SqlParameter("@MatchDegree", SqlDbType.Int,        4),
                new SqlParameter("@AppID",       SqlDbType.NVarChar, 100),
                new SqlParameter("@Version",     SqlDbType.NVarChar, 100),
                new SqlParameter("@RandomNo",    SqlDbType.NVarChar, 200),
                new SqlParameter("@ParentID",    SqlDbType.Int,        4),
                new SqlParameter("@Remark",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@LableText",   SqlDbType.NVarChar,  -1),
                new SqlParameter("@ExJson",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@Status",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@OrderNo",     SqlDbType.Int,        4),
                new SqlParameter("@ModifyDate",  SqlDbType.NVarChar, 200),
                new SqlParameter("@CreateUser",  SqlDbType.Int,        4),
                new SqlParameter("@ModifyUser",  SqlDbType.Int, 4)
            };

            parameters[0].Value  = model.id;
            parameters[1].Value  = model.BaseOn;
            parameters[2].Value  = model.ResumeID;
            parameters[3].Value  = model.ResumeNo;
            parameters[4].Value  = model.PositionID;
            parameters[5].Value  = model.CreateDate;
            parameters[6].Value  = model.WordAddress;
            parameters[7].Value  = model.Age;
            parameters[8].Value  = model.WorkYear;
            parameters[9].Value  = model.Salary;
            parameters[10].Value = model.XueLi;
            parameters[11].Value = model.Skill;
            parameters[12].Value = model.CoreSkill;
            parameters[13].Value = model.Major;
            parameters[14].Value = model.OrgScale;
            parameters[15].Value = model.MatchDegree;
            parameters[16].Value = model.AppID;
            parameters[17].Value = model.Version;
            parameters[18].Value = model.RandomNo;
            parameters[19].Value = model.ParentID;
            parameters[20].Value = model.Remark;
            parameters[21].Value = model.LableText;
            parameters[22].Value = model.ExJson;
            parameters[23].Value = model.Status;
            parameters[24].Value = model.OrderNo;
            parameters[25].Value = model.ModifyDate;
            parameters[26].Value = model.CreateUser;
            parameters[27].Value = model.ModifyUser;
            int rows = DbHelperSQL.ExecuteSql(strSql.ToString(), parameters);

            if (rows > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #5
0
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(tabCVJDMatchModel model)
        {
            model.Version    = model.Version.IsNotNullOrEmpty() ? model.Version : "1";
            model.RandomNo   = model.RandomNo.IsNotNullOrEmpty() ? model.RandomNo : Guid.NewGuid().ToString("N");
            model.Status     = model.Status.IsNotNullOrEmpty() ? model.Status : "1";
            model.OrderNo    = model.OrderNo > 0 ? model.OrderNo : 1;
            model.CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            model.ModifyDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into tabCVJDMatch(");
            strSql.Append("BaseOn,ResumeID,ResumeNo,PositionID,CreateDate,WordAddress,Age,WorkYear,Salary,XueLi,Skill,CoreSkill,Major,OrgScale,MatchDegree,AppID,Version,RandomNo,ParentID,Remark,LableText,ExJson,Status,OrderNo,ModifyDate,CreateUser,ModifyUser");
            strSql.Append(") values (");
            strSql.Append("@BaseOn,@ResumeID,@ResumeNo,@PositionID,@CreateDate,@WordAddress,@Age,@WorkYear,@Salary,@XueLi,@Skill,@CoreSkill,@Major,@OrgScale,@MatchDegree,@AppID,@Version,@RandomNo,@ParentID,@Remark,@LableText,@ExJson,@Status,@OrderNo,@ModifyDate,@CreateUser,@ModifyUser");
            strSql.Append(") ");
            strSql.Append(";select @@IDENTITY");
            SqlParameter[] parameters =
            {
                new SqlParameter("@BaseOn",      SqlDbType.NVarChar, 200),
                new SqlParameter("@ResumeID",    SqlDbType.Int,        4),
                new SqlParameter("@ResumeNo",    SqlDbType.NVarChar,  50),
                new SqlParameter("@PositionID",  SqlDbType.Int,        4),
                new SqlParameter("@CreateDate",  SqlDbType.NVarChar, 200),
                new SqlParameter("@WordAddress", SqlDbType.Int,        4),
                new SqlParameter("@Age",         SqlDbType.Int,        4),
                new SqlParameter("@WorkYear",    SqlDbType.Int,        4),
                new SqlParameter("@Salary",      SqlDbType.Int,        4),
                new SqlParameter("@XueLi",       SqlDbType.Int,        4),
                new SqlParameter("@Skill",       SqlDbType.Int,        4),
                new SqlParameter("@CoreSkill",   SqlDbType.Int,        4),
                new SqlParameter("@Major",       SqlDbType.Int,        4),
                new SqlParameter("@OrgScale",    SqlDbType.Int,        4),
                new SqlParameter("@MatchDegree", SqlDbType.Int,        4),
                new SqlParameter("@AppID",       SqlDbType.NVarChar, 100),
                new SqlParameter("@Version",     SqlDbType.NVarChar, 100),
                new SqlParameter("@RandomNo",    SqlDbType.NVarChar, 200),
                new SqlParameter("@ParentID",    SqlDbType.Int,        4),
                new SqlParameter("@Remark",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@LableText",   SqlDbType.NVarChar,  -1),
                new SqlParameter("@ExJson",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@Status",      SqlDbType.NVarChar,  -1),
                new SqlParameter("@OrderNo",     SqlDbType.Int,        4),
                new SqlParameter("@ModifyDate",  SqlDbType.NVarChar, 200),
                new SqlParameter("@CreateUser",  SqlDbType.Int,        4),
                new SqlParameter("@ModifyUser",  SqlDbType.Int, 4)
            };

            parameters[0].Value  = model.BaseOn;
            parameters[1].Value  = model.ResumeID;
            parameters[2].Value  = model.ResumeNo;
            parameters[3].Value  = model.PositionID;
            parameters[4].Value  = model.CreateDate;
            parameters[5].Value  = model.WordAddress;
            parameters[6].Value  = model.Age;
            parameters[7].Value  = model.WorkYear;
            parameters[8].Value  = model.Salary;
            parameters[9].Value  = model.XueLi;
            parameters[10].Value = model.Skill;
            parameters[11].Value = model.CoreSkill;
            parameters[12].Value = model.Major;
            parameters[13].Value = model.OrgScale;
            parameters[14].Value = model.MatchDegree;
            parameters[15].Value = model.AppID;
            parameters[16].Value = model.Version;
            parameters[17].Value = model.RandomNo;
            parameters[18].Value = model.ParentID;
            parameters[19].Value = model.Remark;
            parameters[20].Value = model.LableText;
            parameters[21].Value = model.ExJson;
            parameters[22].Value = model.Status;
            parameters[23].Value = model.OrderNo;
            parameters[24].Value = model.ModifyDate;
            parameters[25].Value = model.CreateUser;
            parameters[26].Value = model.ModifyUser;

            object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);

            if (obj == null)
            {
                return(0);
            }
            else
            {
                return(Convert.ToInt32(obj));
            }
        }
        void MatchForJD(int PositionID)
        {
            try
            {
                #region
                //
                List <tabCVJDMatchModel> slsCVJDMatch = new List <tabCVJDMatchModel>();//用于存放匹配结果,最大数量为100
                slsCVJDMatch.Capacity = 100;
                //
                #region 获取JD简要模型
                tabPositionOutlineModel modelPosOtln = tabPositionOutlineBLL.GetInstance().GetModel(" PositionID=" + PositionID + " ", 0);
                if (modelPosOtln.IsNull())
                {
                    WinFormControlHelper.AddLog(rtbLog, "MatchForJD", "需要先进行要提取");
                }
                //Skill
                string[]         aryJDSkill = modelPosOtln.RequireSkill.Split(new char[] { ' ', ',' });
                HashSet <string> hsJDSkill  = new HashSet <string>();
                foreach (string str in aryJDSkill)
                {
                    hsJDSkill.Add(str);
                }
                hsJDSkill.Remove("");
                WinFormControlHelper.AddLog(rtbLog, "职位 " + modelPosOtln.PositionName + " 技能关键字", modelPosOtln.RequireSkill);;

                #endregion

                //粗选适合的简历
                string _where = "";
                if (modelPosOtln.RequireSchool.IsNotNull())
                {
                    _where += " ";
                }
                if (modelPosOtln.RequireXueLi.IsNotNull())
                {
                    _where += " ";
                }
                if (modelPosOtln.RequireMajor.IsNotNull())
                {
                    _where += " ";
                }
                string.Format(" id in ( select [KEY] form containstable(tabCVJDMatch,' or  or  or  ',1000) )");
                string _orderby = "";
                int    count    = 0;
                int    pageSize = 100;
                int    pageNo   = 1;
                do
                {
                    #region
                    List <int> lsResumeID = tabCVJDMatchBLL.GetInstance().GetResumeIDListForJD(pageSize, pageNo, _where.ToString(), _orderby, out count);

                    //逐个计算
                    foreach (int ResumeID in lsResumeID)
                    {
                        #region 获取CV简要模型
                        tabResumeOutlineModel modelRmOtln = tabResumeOutlineBLL.GetInstance().GetModel(" ResumeID=" + ResumeID + " ", 0);
                        //Skill
                        string[]         aryCVSkill = modelRmOtln.Skill.Split(new char[] { ' ', ',' });
                        HashSet <string> hsCVSkill  = new HashSet <string>();
                        foreach (string str in aryCVSkill)
                        {
                            hsCVSkill.Add(str);
                        }
                        hsJDSkill.Remove("");
                        WinFormControlHelper.AddLog(rtbLog, "简历" + modelRmOtln.ResumeNo + "技能关键字", modelRmOtln.Skill);;
                        #endregion

                        #region  计算匹配度
                        tabCVJDMatchModel modelMch = new tabCVJDMatchModel();
                        modelMch.PositionID = modelPosOtln.PositionID;
                        modelMch.ResumeID   = modelRmOtln.ResumeID;
                        modelMch.ResumeNo   = modelRmOtln.ResumeNo;
                        modelMch.BaseOn     = "Position";

                        hsCVSkill.IntersectWith(hsJDSkill);
                        modelMch.Skill       = (hsCVSkill.Count * 100) / hsJDSkill.Count;
                        modelMch.MatchDegree = modelMch.Skill;
                        WinFormControlHelper.AddLog(rtbLog, "简历" + modelRmOtln.ResumeNo + "综合评价", modelMch.MatchDegree.ToString());
                        #endregion

                        #region 保存到内存列表中(只保存前100条记录)
                        //是否要删除
                        if (slsCVJDMatch.Count == slsCVJDMatch.Capacity)
                        {
                            tabCVJDMatchModel modelMin = slsCVJDMatch[0];
                            foreach (tabCVJDMatchModel model in slsCVJDMatch)
                            {
                                if (model.MatchDegree < modelMin.MatchDegree)
                                {
                                    modelMin = model;
                                }
                            }
                            slsCVJDMatch.Remove(modelMin);
                        }
                        //是否添加
                        if (slsCVJDMatch.Count < slsCVJDMatch.Capacity)
                        {
                            slsCVJDMatch.Add(modelMch);
                        }


                        #endregion
                    }
                    #endregion
                    pageNo++;//
                }while (pageNo * pageSize < count);
                #region  保存至数据库
                //删除原来的
                tabCVJDMatchBLL.GetInstance().Delete(" PositionID=" + PositionID + " and BaseOn='Position' ");
                //添加新的
                string strLsResumeID = "";
                foreach (tabCVJDMatchModel model in slsCVJDMatch)
                {
                    tabCVJDMatchBLL.GetInstance().Add(model);
                    strLsResumeID += model.ResumeID.ToString() + ",";
                }
                WinFormControlHelper.AddLog(rtbLog, "职位 " + PositionID.ToString() + " 匹配结果", strLsResumeID);

                #endregion

                #endregion
            }
            catch (Exception ex)
            {
                WinFormControlHelper.AddLog(rtbLog, "MatchForJD", ex.Message);
            }
        }