/// <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); } }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(tabCVJDMatchModel model) { return(dal.Update(model)); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(tabCVJDMatchModel model) { return(dal.Add(model)); }
/// <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); } }
/// <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); } }