protected void Page_Load(object sender, EventArgs e) { ExamineStageId = RequestData.Get <string>("ExamineStageId"); if (!string.IsNullOrEmpty(ExamineStageId)) { esEnt = ExamineStage.Find(ExamineStageId); //如果考核阶段的状态是已生成 任务状态是0 如果是已启动 任务状态为1 state = esEnt.State == 1 ? "0" : "1"; } switch (RequestActionString) { case "AmendTask": //需要添加的任务 ttEnts = TempTask.FindAllByProperties(TempTask.Prop_ExamineStageId, ExamineStageId, TempTask.Prop_AmendState, "+"); int addQuan = ttEnts.Count; foreach (TempTask ttEnt in ttEnts) //特殊任务也连同判断了 { ExamineTask etEnt = new ExamineTask("", ttEnt.ExamineStageId, ttEnt.ToUserId, ttEnt.ToUserName, ttEnt.ToDeptId, ttEnt.ToDeptName, ttEnt.ToRoleCode, ttEnt.ToRoleName, ttEnt.BeUserId, ttEnt.BeUserName, ttEnt.BeDeptId, ttEnt.BeDeptName, ttEnt.BeRoleCode, ttEnt.BeRoleName, null, state, ttEnt.Tag, null, UserInfo.UserID, UserInfo.Name, System.DateTime.Now, ttEnt.ExamineIndicatorId, ttEnt.ExamineRelationId); etEnt.DoCreate(); ttEnt.DoDelete(); } etEnts = ExamineTask.FindAllByProperties(ExamineTask.Prop_ExamineStageId, ExamineStageId, ExamineTask.Prop_AmendState, "-"); int reduceQuan = etEnts.Count; foreach (ExamineTask etEnt in etEnts) { etEnt.DoDelete(); } esEnt.TaskQuan = esEnt.TaskQuan + addQuan - reduceQuan; esEnt.DoUpdate(); PageState.Add("Result", "增补任务数量:【" + addQuan.ToString() + "】 删除任务数量:【" + reduceQuan.ToString() + "】!"); break; case "CancelAmendTask": ttEnts = TempTask.FindAllByProperties(TempTask.Prop_ExamineStageId, ExamineStageId, TempTask.Prop_AmendState, "+"); foreach (TempTask ttEnt in ttEnts) //特殊任务也连同判断了 { ttEnt.DoDelete(); } etEnts = ExamineTask.FindAllByProperties(ExamineTask.Prop_ExamineStageId, ExamineStageId, ExamineTask.Prop_AmendState, "-"); foreach (ExamineTask etEnt in etEnts) { etEnt.AmendState = null; etEnt.DoUpdate(); } break; default: DoSelect(); break; } }
private void AmendTask() { IList <TempTask> ttEnts = TempTask.FindAllByProperty(TempTask.Prop_ExamineStageId, ExamineStageId); IList <ExamineTask> etEnts = null; foreach (TempTask ttEnt in ttEnts) { if (esEnt.StageType == "院级考核") { etEnts = ExamineTask.FindAllByProperties(ExamineTask.Prop_ExamineStageId, ExamineStageId, "BeUserId", ttEnt.BeUserId, "BeRoleCode", ttEnt.BeRoleCode, "BeDeptId", ttEnt.BeDeptId, "ToUserId", ttEnt.ToUserId, "ToRoleCode", ttEnt.ToRoleCode); } else { etEnts = ExamineTask.FindAllByProperties(ExamineTask.Prop_ExamineStageId, ExamineStageId, "BeUserId", ttEnt.BeUserId, "BeDeptId", ttEnt.BeDeptId, "ToUserId", ttEnt.ToUserId); } if (etEnts.Count > 0) { ttEnt.AmendState = "-"; } else { ttEnt.AmendState = "+"; } ttEnt.DoUpdate(); } etEnts = ExamineTask.FindAllByProperty(ExamineTask.Prop_ExamineStageId, ExamineStageId); foreach (ExamineTask etEnt in etEnts) { if (esEnt.StageType == "院级考核") { ttEnts = TempTask.FindAllByProperties("ExamineStageId", ExamineStageId, "BeUserId", etEnt.BeUserId, "BeRoleCode", etEnt.BeRoleCode, "BeDeptId", etEnt.BeDeptId, "ToUserId", etEnt.ToUserId, "ToRoleCode", etEnt.ToRoleCode); } else { ttEnts = TempTask.FindAllByProperties("ExamineStageId", ExamineStageId, "BeUserId", etEnt.BeUserId, "BeDeptId", etEnt.BeDeptId, "ToUserId", etEnt.ToUserId); } if (ttEnts.Count == 0) { etEnt.AmendState = "-"; } etEnt.DoUpdate(); } sql = "delete BJKY_Examine..TempTask where ExamineStageId='" + ExamineStageId + "' and AmendState='-'"; DataHelper.ExecSql(sql); }
private void CreateSpecialTask(string beUserIds, string beUserNames, string beDeptIds, string beDeptNames, ExamineStageDetail esdEnt) //特例 如果被考对象经营目标单位正职 还需要推送一部分任务到 人力资源部 工作业绩打分人 { if (esdEnt.BeRoleCode == "BeBusinessDeptLeader") { IList <PersonConfig> pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupCode, "HRAchievementWritor"); IList <IndicatorFirst> ifEnts = IndicatorFirst.FindAllByProperty(IndicatorFirst.Prop_InsteadColumn, "T");//配置考核项中。 确实有人力资源打分项 if (pcEnts.Count > 0 && ifEnts.Count > 0) { if (!string.IsNullOrEmpty(pcEnts[0].ClerkIds)) { string[] beUserIdArray = new string[] { }; if (!string.IsNullOrEmpty(beUserIds)) { beUserIdArray = beUserIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string[] beUserNameArray = new string[] { }; if (!string.IsNullOrEmpty(beUserNames)) { beUserNameArray = beUserNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string[] beDeptIdArray = new string[] { }; if (!string.IsNullOrEmpty(beDeptIds)) { beDeptIdArray = beDeptIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string[] beDeptNameArray = new string[] { }; if (!string.IsNullOrEmpty(beDeptNames)) { beDeptNameArray = beDeptNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string[] toUserIdArray = new string[] { }; if (!string.IsNullOrEmpty(pcEnts[0].ClerkIds)) { toUserIdArray = pcEnts[0].ClerkIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string[] toUserNameArray = new string[] { }; if (!string.IsNullOrEmpty(pcEnts[0].ClerkNames)) { toUserNameArray = pcEnts[0].ClerkNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } for (int i = 0; i < beUserIdArray.Length; i++) { for (int j = 0; j < toUserIdArray.Length; j++) { if (beUserIdArray[i] != toUserIdArray[j])//防止一个人身兼两职。自己对自己不能打分 { TempTask etEnt = new TempTask(); etEnt.ExamineStageId = esEnt.Id; etEnt.BeRoleCode = esdEnt.BeRoleCode; etEnt.BeRoleName = esdEnt.BeRoleName; etEnt.BeUserId = beUserIdArray[i]; etEnt.BeUserName = beUserNameArray[i]; if (i <= beDeptIdArray.Length - 1) { etEnt.BeDeptId = beDeptIdArray[i]; } if (i <= beDeptNameArray.Length - 1) { etEnt.BeDeptName = beDeptNameArray[i]; } etEnt.ToRoleCode = "HRAchievementWritor"; etEnt.ToRoleName = ifEnts[0].IndicatorFirstName + "填报人"; etEnt.ToUserId = toUserIdArray[j]; etEnt.ToUserName = toUserNameArray[j]; sql = @"select GroupID,Name from SysGroup where PathLevel='4' and PatIndex('%'+GroupID+'%',(select Path from SysGroup where GroupID=(select top 1 GroupID from SysUserGroup where UserID='" + toUserIdArray[j] + "') ))>0";//通过人直接找4级部门 IList <EasyDictionary> dics3 = DataHelper.QueryDictList(sql); if (dics3.Count > 0) { etEnt.ToDeptId = dics3[0].Get <string>("GroupID"); etEnt.ToDeptName = dics3[0].Get <string>("Name"); } etEnt.ExamineRelationId = esdEnt.ExamineRelationId; etEnt.ExamineIndicatorId = esdEnt.ExamineIndicatorId; etEnt.State = "0"; etEnt.Tag = "1"; etEnt.DoCreate(); } } } } } } }
private void CreateTask(string beUserIds, string beUserNames, string beDeptIds, string beDeptNames, ExamineStageDetail esdEnt, string toRoleCode, string toRoleName) { string toUserIds = ""; string toUserNames = ""; string sql = ""; string[] array = null; DataTable dt = new DataTable(); IList <PersonConfig> pcEnts = null; switch (toRoleCode) //对所有的考核对象进行判断 确定参与考核打分的人员 { case "DirectorSecretary": //院长书记 case "DeputyDirector": //副院长 case "EnterpriseDirector": //如果上级里面有控股企业董事长和监事长 case "EnterpriseDeputyDirector": pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupCode, toRoleCode); if (pcEnts.Count > 0) { if (!string.IsNullOrEmpty(pcEnts[0].ClerkIds)) { toUserIds = pcEnts[0].ClerkIds; toUserNames = pcEnts[0].ClerkNames; } } break; case "ExcutiveDeptLeader": //职能服务部门正职 sql = @"select FirstLeaderIds as UserIds,FirstLeaderNames as UserNames from BJKY_Examine..PersonConfig where GroupType='职能服务部门' and GroupID in (select GroupID from BJKY_Examine..ExamineStageDeptDetail where ExamineStageId='" + esEnt.Id + "')"; array = GetUserIdAndName(DataHelper.QueryDictList(sql)); toUserIds = array[0]; toUserNames = array[1]; break; case "BusinessDeptLeader": //经营目标单位正职 sql = @"select FirstLeaderIds as UserIds, FirstLeaderNames as UserNames from BJKY_Examine..PersonConfig where GroupType='经营目标单位' and GroupID in (select GroupID from BJKY_Examine..ExamineStageDeptDetail where ExamineStageId='" + esEnt.Id + "')"; array = GetUserIdAndName(DataHelper.QueryDictList(sql)); toUserIds = array[0]; toUserNames = array[1]; break; case "ExcutiveDeptClerkDelegate": //职能部门员工代表 sql = @"select InstituteClerkDelegateIds as UserIds,InstituteClerkDelegateNames as UserNames from BJKY_Examine..PersonConfig where GroupType='职能服务部门' and GroupID in (select GroupID from BJKY_Examine..ExamineStageDeptDetail where ExamineStageId='" + esEnt.Id + "')"; array = GetUserIdAndName(DataHelper.QueryDictList(sql)); toUserIds = array[0]; toUserNames = array[1]; break; case "BusinessDeptClerkDelegate": //经营单位员工代表 sql = @"select InstituteClerkDelegateIds as UserIds, InstituteClerkDelegateNames as UserNames from BJKY_Examine..PersonConfig where GroupType='经营目标单位' and GroupID in (select GroupID from BJKY_Examine..ExamineStageDeptDetail where ExamineStageId='" + esEnt.Id + "')"; array = GetUserIdAndName(DataHelper.QueryDictList(sql)); toUserIds = array[0]; toUserNames = array[1]; break; case "DeptFirstLeader": //部门正职 只有部门内考核的时候才会有此考核对象编号 pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupID, esEnt.LaunchDeptId); //这个时候需要取考核阶段里面的启动部门 if (pcEnts.Count > 0) { toUserIds = pcEnts[0].FirstLeaderIds; toUserNames = pcEnts[0].FirstLeaderNames; } break; case "DeptSecondLeader": //部门副职 pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupID, esEnt.LaunchDeptId); //这个时候需要取考核阶段里面的启动部门 if (pcEnts.Count > 0) { toUserIds = pcEnts[0].SecondLeaderIds; toUserNames = pcEnts[0].SecondLeaderNames; } break; case "DeptClerkDelegate": pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupID, esEnt.LaunchDeptId); //这个时候需要取考核阶段里面的启动部门 if (pcEnts.Count > 0) { toUserIds = pcEnts[0].DeptClerkDelegateIds; toUserNames = pcEnts[0].DeptClerkDelegateNames; } break; case "DeptClerk": pcEnts = PersonConfig.FindAllByProperty(PersonConfig.Prop_GroupID, esEnt.LaunchDeptId); //这个时候需要取考核阶段里面的启动部门 if (pcEnts.Count > 0) { toUserIds = pcEnts[0].ClerkIds; toUserNames = pcEnts[0].ClerkNames; } break; } string[] beUserIdArray = new string[] { }; string[] beUserNameArray = new string[] { }; string[] beDeptIdArray = new string[] { }; string[] beDeptNameArray = new string[] { }; string[] toUserIdArray = new string[] { }; string[] toUserNameArray = new string[] { }; if (!string.IsNullOrEmpty(beUserIds)) { beUserIdArray = beUserIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } if (!string.IsNullOrEmpty(beUserNames)) { beUserNameArray = beUserNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } if (!string.IsNullOrEmpty(beDeptIds)) { beDeptIdArray = beDeptIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } if (!string.IsNullOrEmpty(beDeptNames)) { beDeptNameArray = beDeptNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } if (!string.IsNullOrEmpty(toUserIds)) { toUserIdArray = toUserIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } if (!string.IsNullOrEmpty(toUserNames)) { toUserNameArray = toUserNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } #region for (int i = 0; i < beUserIdArray.Length; i++) { for (int j = 0; j < toUserIdArray.Length; j++) { if (beUserIdArray[i] != toUserIdArray[j])//防止一个人身兼两职。自己对自己不能打分 { TempTask etEnt = new TempTask(); etEnt.ExamineStageId = esEnt.Id; etEnt.BeRoleCode = esdEnt.BeRoleCode; etEnt.BeRoleName = esdEnt.BeRoleName; etEnt.BeUserId = beUserIdArray[i]; etEnt.BeUserName = beUserNameArray[i]; if (i <= beDeptIdArray.Length - 1) { etEnt.BeDeptId = beDeptIdArray[i]; } if (i <= beDeptNameArray.Length - 1) { etEnt.BeDeptName = beDeptNameArray[i]; } etEnt.ToRoleCode = toRoleCode; etEnt.ToRoleName = toRoleName; etEnt.ToUserId = toUserIdArray[j]; etEnt.ToUserName = toUserNameArray[j]; //考核人的部门获取有待更新 to do sql = @"select GroupID,Name from SysGroup where PathLevel='4' and PatIndex('%'+GroupID+'%',(select Path from SysGroup where GroupID=(select top 1 GroupID from SysUserGroup where UserID='" + toUserIdArray[j] + "') ))>0"; //通过人直接找4级部门 IList <EasyDictionary> dics3 = DataHelper.QueryDictList(sql); if (dics3.Count > 0) { etEnt.ToDeptId = dics3[0].Get <string>("GroupID"); etEnt.ToDeptName = dics3[0].Get <string>("Name"); } etEnt.ExamineRelationId = esdEnt.ExamineRelationId; etEnt.ExamineIndicatorId = esdEnt.ExamineIndicatorId; etEnt.State = "0"; etEnt.DoCreate(); } } } #endregion }
private void StartExamine() { IList <ExamineStageDetail> esdEnts = ExamineStageDetail.FindAllByProperty(ExamineStageDetail.Prop_ExamineStageId, esEnt.Id); if (esEnt.ExamineType == "院级考核") { foreach (ExamineStageDetail esdEnt in esdEnts) { string beUserIds = string.Empty;//存储被考核对象具体的人 string beUserNames = string.Empty; string beDeptIds = string.Empty; string beDeptNames = string.Empty; string[] array = GetBeUsersInfo(esdEnt); beUserIds = array[0]; beUserNames = array[1]; beDeptIds = array[2]; beDeptNames = array[3]; ExamineRelation erEnt = ExamineRelation.Find(esdEnt.ExamineRelationId); ConfirmPara(beUserIds, beUserNames, beDeptIds, beDeptNames, esdEnt, erEnt); CreateSpecialTask(beUserIds, beUserNames, beDeptIds, beDeptNames, esdEnt); } } else//部门级考核 { foreach (ExamineStageDetail esdEnt in esdEnts) { DeptExamineRelation derEnt = DeptExamineRelation.Find(esdEnt.ExamineRelationId); string[] beUserIdArray = new string[] { }; string[] beUserNameArray = new string[] { }; if (!string.IsNullOrEmpty(derEnt.BeUserIds)) { beUserIdArray = derEnt.BeUserIds.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); beUserNameArray = derEnt.BeUserNames.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); } string toUserIds = derEnt.UpLevelUserIds + "," + derEnt.SameLevelUserIds + "," + derEnt.DownLevelUserIds; string toUserNames = derEnt.UpLevelUserNames + "," + derEnt.SameLevelUserNames + "," + derEnt.DownLevelUserNames; string[] toUserIdArray = new string[] { }; string[] toUserNameArray = new string[] { }; if (!string.IsNullOrEmpty(toUserIds)) { toUserIdArray = toUserIds.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); toUserNameArray = toUserNames.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); } for (int i = 0; i < beUserIdArray.Length; i++) { for (int j = 0; j < toUserIdArray.Length; j++) { if (beUserIdArray[i] != toUserIdArray[j]) //防止一个人身兼两职。自己对自己不能打分 { TempTask etEnt = new TempTask(); //部门级考核不存在角色的概念。直接对人生成任务 etEnt.ExamineStageId = esEnt.Id; etEnt.BeUserId = beUserIdArray[i]; etEnt.BeUserName = beUserNameArray[i]; etEnt.BeDeptId = esEnt.LaunchDeptId; etEnt.BeDeptName = esEnt.LaunchDeptName; etEnt.ToUserId = toUserIdArray[j]; etEnt.ToUserName = toUserNameArray[j]; etEnt.ToDeptId = esEnt.LaunchDeptId; etEnt.ToDeptName = esEnt.LaunchDeptName; etEnt.ExamineRelationId = esdEnt.ExamineRelationId; etEnt.ExamineIndicatorId = esdEnt.ExamineIndicatorId; etEnt.State = "0"; etEnt.DoCreate(); } } } } } }
private static IEnumerable <ITask> ParseChildren(XmlNode parent) { if (parent == null || parent.ChildNodes.Count == 0) { return(null); } var tasks = new List <ITask>(); foreach (XmlNode child in parent.ChildNodes) { if (child.NodeType != XmlNodeType.Element) { continue; } var children = ParseChildren(child); ITask task = null; var transliteratePath = child.Attributes["transliteratePath"] != null && bool.Parse(child.Attributes["transliteratePath"].Value); switch (child.Name) { case "copy": var copy = new CopyTask(null, children, child.Attributes["target"].Value, transliteratePath); var overrideMode = OverwriteMode.Rename; if (child.Attributes["overwriteMode"] != null) { overrideMode = (OverwriteMode)Enum.Parse(typeof(OverwriteMode), child.Attributes["overwriteMode"].Value, true); } copy.OverrideMode = overrideMode; task = copy; break; case "xslt": task = new XsltTask(child.Attributes["filePathKey"].Value, null, children); break; case "crop": task = new CropTask(child.Attributes["xKey"].Value, child.Attributes["yKey"].Value, child.Attributes["widthKey"].Value, child.Attributes["heightKey"].Value, null, children); break; case "watermark": task = new WatermarkTask(child.Attributes["textKey"].Value, child.Attributes["textPositionKey"].Value, null, children); break; case "temp": task = new TempTask(null, children); break; case "delete": task = new DeleteTask(null, children, bool.Parse(child.Attributes["deleteEmptyFolders"].Value)); break; case "dpof": var targetDirectory = child.Attributes["targetDirectory"].Value; var channelDirectoryName = child.Attributes["channelDirectoryName"].Value; var copyCountKey = child.Attributes["copyCountKey"].Value; var paperSizeKey = child.Attributes["paperSizeKey"].Value; var channelKey = child.Attributes["printChannelKey"].Value; task = new DpofTask(null, children, copyCountKey, paperSizeKey, channelDirectoryName, channelKey, targetDirectory, transliteratePath); break; case "convert": ConvertTask.ConvertFormat format; Enum.TryParse(child.Attributes["to"].Value, true, out format); task = new ConvertTask(format, null, children); break; } if (task != null) { if (children != null) { foreach (var ch in children) { ch.ParentTask = task; } } tasks.Add(task); } } return(tasks); }