// <summary> /// 取得員工簽核人員 /// </summary> /// <param name="userGuid"></param> /// <returns></returns> public UserSet GetUserSinger(string userGuid) { UserSet userSet = new UserSet(); UserUCO userUCO = new UserUCO(); EBUser ebUser = userUCO.GetEBUser(userGuid); BaseGroup baseGp = ebUser.GetEmployeeDepartment(DepartmentOfUser.Major).Department; //找出所有簽核人員 if (CheckIsDeptSigner(ebUser.UserGUID, baseGp.GroupId) == false) { AddSignerToUserSet(baseGp.GroupId, userSet); } else { //如果目前的簽核人員 if (baseGp.ParnetGroup != null) { AddSignerToUserSet(baseGp.ParnetGroup.GroupId, userSet); } } return(userSet); }
protected void bcoMan_EditButtonOnClick(string[] choiceResult) { if (choiceResult.Length >= 1) { UserUCO userUCO = new UserUCO(); //EBUser eBUser = userUCO.GetEBUser(choiceResult[0]); KYT_EBUser KUser = new KYT_UserPO().GetUserDetailByUserGuid(choiceResult[0]); // 人員 txtAPPLICANT.Text = KUser.Name; hidAPPLICANTGUID.Value = KUser.UserGUID; } }
/// <summary> /// 檢查是否是否是部門主管 /// </summary> /// <returns></returns> private bool CheckIsDeptSuperior(string userGUID, string groupId) { UserUCO userUco = new UserUCO(); bool IsSuperior = false; EBUser ebUser = userUco.GetEBUser(userGUID); EmployeeJobFunctionCollection employeeJobFunctionCollection = ebUser.GetJobFunctionsOfDepartment(groupId); //判斷是否是簽核者, for (int i = 0; i < employeeJobFunctionCollection.Count; i++) { if (employeeJobFunctionCollection[i].FunctionId == "Superior") { IsSuperior = true; break; } } return(IsSuperior); }
public string GetExternalDllSites(string formInfo) { XmlDocument xmlDoc = new XmlDocument(); XmlDocument formXmlDoc = new XmlDocument(); DatabaseHelper DbQueryCompanyTopAccount = new DatabaseHelper(); DatabaseHelper DbQueryGroupName = new DatabaseHelper(); UserUCO userUCO = new UserUCO(); DataSet GroupName = new DataSet(); formXmlDoc.LoadXml(formInfo); account = formXmlDoc.SelectSingleNode("/ExternalFlowSite/ApplicantInfo").Attributes["account"].Value; userGuid = userUCO.GetGUID(account); EBUser ebUser = userUCO.GetEBUser(userGuid); DEPNAME = ebUser.GroupName; //找出公司內最高的主管account CompanyTopAccountDS = DbQueryCompanyTopAccount.ExecuteDataSet("SELECT TOP 1 CompanyTopAccount FROM [UOFTEST].[dbo].[CompanyTopAccount]"); CompanyTopAccount = CompanyTopAccountDS.Tables[0].Rows[0]["CompanyTopAccount"].ToString(); GroupName = DbQueryGroupName.ExecuteDataSet("SELECT [GroupName] FROM [UOFTEST].[dbo].[GROUPNAMETOEF]"); //判斷是不是指定部門,可由簽至副理就結束 foreach (DataRow dr in GroupName.Tables[0].Rows) { if (DEPNAME.Equals(dr["GroupName"].ToString())) { SpecialGroupName = "Y"; break; } else { SpecialGroupName = "N"; } } //找出所有簽核人員,包含主管 FINDALLSINGER(userGuid); return(sites.ConvertToXML()); }
protected void Page_Load(object sender, EventArgs e) { try { //申請者姓名 UserUCO userUCO1 = new UserUCO(); EBUser eBUser = userUCO1.GetEBUser(base.ApplicantGroupId); hdApplicant.Value = eBUser.Name; //申請部門 GroupUCO groupUCO = new GroupUCO(GroupType.Department); hdDept.Value = groupUCO.QueryDepartmentName(base.ApplicantGroupId); } catch { } // base.ApplicantGroupId //這裡不用修改 //欄位的初始化資料都到SetField Method去做 SetField(m_versionField); }
// <summary> /// 取得員工直屬主管 /// </summary> /// <param name="userGuid"></param> /// <returns></returns> public UserSet GetUserSuperior(string userGuid) { UserSet userSet = new UserSet(); UserUCO userUCO = new UserUCO(); EBUser ebUser = userUCO.GetEBUser(userGuid); BaseGroup baseGp = ebUser.GetEmployeeDepartment(DepartmentOfUser.Major).Department; //如果目前簽核人員不是部門主管,那就要找尋該人員目前部門的主管 if (CheckIsDeptSuperior(ebUser.UserGUID, baseGp.GroupId) == false) { AddSuperiorToUserSet(baseGp.GroupId, userSet); } else { //如果目前的簽核人員是部門主管,則要找尋上一個部門的主管 if (baseGp.ParnetGroup != null) { AddSuperiorToUserSet(baseGp.ParnetGroup.GroupId, userSet); } } return(userSet); }
protected void Page_Load(object sender, EventArgs e) { this.ConnectionString = new DatabaseHelper().Command.Connection.ConnectionString; ((Master_DialogMasterPage)this.Master).Button2Text = ""; // Button2不顯示 ((Master_DialogMasterPage)this.Master).Button1Text = ""; // Button1不顯示 string groupID = Request["GROUPID"] != null?HttpUtility.UrlDecode(Request["GROUPID"]) : "Company"; string selectedUsers = Request["selectedUsers"] != null?HttpUtility.UrlDecode(Request["selectedUsers"]) : ""; JArray jArray = null; try { jArray = JArray.Parse(selectedUsers); } catch { } isSingle = Request["isSingle"] != null?HttpUtility.UrlDecode(Request["isSingle"]).ToUpper() == "Y" : false; isGroup = Request["isGroup"] != null?HttpUtility.UrlDecode(Request["isGroup"]).ToUpper() == "Y" : false; string groupConnectionString = this.ConnectionString; string userConnectionString = this.ConnectionString; string groupSql = Request["GroupSql"] != null?HttpUtility.UrlDecode(Request["GroupSql"]) : ""; string userSql = Request["UserSql"] != null?HttpUtility.UrlDecode(Request["UserSql"]) : ""; string searchSql = Request["SearchSql"] != null?HttpUtility.UrlDecode(Request["SearchSql"]) : ""; bool isSearchSelfGroupUsers = Request["isSearchSelfGroupUsers"] != null?HttpUtility.UrlDecode(Request["isSearchSelfGroupUsers"]).ToUpper() == "Y" : false; if (isSearchSelfGroupUsers) { userSql = string.Format(@" SELECT [ACCOUNT], [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME', [USER_GUID], '' AS 'GROUP_ID' FROM TB_EB_USER WHERE USER_GUID IN (SELECT USER_GUID FROM TB_EB_EMPL_DEP WHERE GROUP_ID = @GROUP_ID) AND IS_SUSPENDED = 0 AND (EXPIRE_DATE IS NULL OR EXPIRE_DATE > GETDATE())" ); } bool isUserOnly = !string.IsNullOrEmpty(userSql); if (string.IsNullOrEmpty(groupSql)) { groupSql = @" DECLARE @TABLE TABLE( GROUP_ID NVARCHAR(50) ) INSERT INTO @TABLE SELECT GROUP_ID FROM TB_EB_GROUP WHERE GROUP_ID = @GROUP_ID WHILE @@ROWCOUNT > 0 BEGIN INSERT INTO @TABLE --找到所有下層部門 SELECT GROUP_ID FROM TB_EB_GROUP WHERE PARENT_GROUP_ID IN(SELECT GROUP_ID FROM @TABLE) AND GROUP_ID NOT IN(SELECT GROUP_ID FROM @TABLE) AND (ACTIVE = 1 OR ACTIVE IS NULL) --表示沒停用 END SELECT * FROM TB_EB_GROUP WHERE GROUP_ID IN (SELECT GROUP_ID FROM @TABLE) "; } if (string.IsNullOrEmpty(userSql)) { userSql = @" SELECT [TB_EB_USER].[USER_GUID], [GROUP_ID], [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME', [TB_EB_USER].[ACCOUNT] AS 'ACCOUNT' FROM [TB_EB_EMPL_DEP] INNER JOIN [TB_EB_USER] ON TB_EB_EMPL_DEP.GROUP_ID = @GROUP_ID AND TB_EB_EMPL_DEP.USER_GUID = TB_EB_USER.USER_GUID AND (IS_SUSPENDED = 0 OR IS_SUSPENDED IS NULL) AND (EXPIRE_DATE IS NULL OR EXPIRE_DATE > GETDATE()) "; } if (string.IsNullOrEmpty(searchSql)) { searchSql = @" SELECT [TB_EB_USER].[USER_GUID], [GROUP_ID], [NAME] + '(' +[TB_EB_USER].[ACCOUNT] + ')' AS 'NAME', [TB_EB_USER].[ACCOUNT] AS 'ACCOUNT' FROM [TB_EB_EMPL_DEP] INNER JOIN [TB_EB_USER] ON TB_EB_EMPL_DEP.GROUP_ID IN ({0}) AND ([TB_EB_USER].[ACCOUNT] LIKE '%' + @SEARCHTEXT + '%' OR [TB_EB_USER].[NAME] LIKE '%' + @SEARCHTEXT + '%') AND TB_EB_EMPL_DEP.USER_GUID = TB_EB_USER.USER_GUID AND (IS_SUSPENDED = 0 OR IS_SUSPENDED IS NULL) AND (EXPIRE_DATE IS NULL OR EXPIRE_DATE > GETDATE()) "; } this.GroupInfo = this.DataToDictionary(string.Format("{0}^{1}", groupConnectionString, groupSql)); this.UserInfo = this.DataToDictionary(string.Format("{0}^{1}", userConnectionString, userSql)); this.SearchInfo = this.DataToDictionary(string.Format("{0}^{1}", userConnectionString, searchSql)); if (this.isGroup) { Right1.Attributes["Class"] = "Right1 SelectGroup"; Right2.Attributes["Class"] = "Right2 hidden"; } else { Right1.Attributes["Class"] = "Right1"; Right2.Attributes["Class"] = "Right2 SelectUser"; btnOpen.Attributes["Class"] = "hidden btnOpen SelectUser"; } if (!Page.IsPostBack) // 首次載入網頁 { gvMain.DataSource = this.GetGroup(groupID); gvMain.DataBind(); gvSelect.DataSource = this.CreategvSelect("gvSelect"); gvSelect.DataBind(); if (jArray != null) { foreach (JObject jObj in jArray) { string str_group = jObj["Group"].ToString(); DataTable dt = (DataTable)ViewState["gvSelect"]; foreach (string str in jObj["Users"]) { DataRow dr = dt.NewRow(); EBUser user = new UserUCO().GetEBUser(str); dr["GROUP_ID"] = str_group; string[] AccStr = user.Account.Split('\\'); dr["ACCOUNT"] = AccStr.Length > 1 ? AccStr[1] : AccStr[0]; dr["GUID"] = str; dr["NAME"] = string.Format("{0}({1})", user.Name, user.Account); dt.Rows.Add(dr); } ViewState["gvSelect"] = dt; gvSelect.DataSource = dt; gvSelect.DataBind(); } } if (gvMain.Rows.Count > 0) { chkGROUPID_CheckedChanged(gvMain.Rows[0].FindControl("chkGROUPID"), null); } Right1.Visible = !isUserOnly; } else // 如果是POSTBACK { } }
public void insertData(DataTable p_dtImport) { this.m_db.BeginTransaction(); try { DateTime l_dt = DateTime.Now; string l_dtstr = l_dt.ToString("yyyy-MM-dd HH:mm:sss"); for (int i = 0; i < p_dtImport.Rows.Count; i++) { string l_strUser_Guid = Guid.NewGuid().ToString(); //先刪除舊有的資料 string l_ACCOUNT = p_dtImport.Rows[i]["員工編號"].ToString(); string l_Email = p_dtImport.Rows[i]["伊媚兒"].ToString(); string l_USER_GUID = getUSER_GUIDbyACCOUNT(l_ACCOUNT); if (!l_USER_GUID.Equals("")) { DeleteTB_EB_USER(l_USER_GUID); DeleteTB_EB_EMPL_DEP(l_USER_GUID); DeleteTB_EB_EMPL_FUNC(l_USER_GUID); DeleteTB_EB_EMPL(l_USER_GUID); DeleteTB_EB_EMPL_HR(l_USER_GUID); DeleteTB_EB_EMPL_HR_EDUACTION(l_USER_GUID); } //新增員工主檔 UserUCO userUCO = new UserUCO(); string l_PASSWORD = userUCO.HashPassword(p_dtImport.Rows[i]["員工編號"].ToString(), ""); string l_NAME = p_dtImport.Rows[i]["員工姓名"].ToString(); string l_SID = p_dtImport.Rows[i]["身分證字號"].ToString(); string l_OPTION1 = p_dtImport.Rows[i]["職等名稱"].ToString(); insertTB_EB_USER(l_strUser_Guid, l_ACCOUNT, l_NAME, l_PASSWORD, l_Email, l_dtstr, l_SID, l_OPTION1); //新增部門&職級 string l_GroupID = Utility.ReturnGROUP_ID(p_dtImport.Rows[i]["單位名稱"].ToString()); string l_TITLENAME = getTITLEIDbyTITLENAME(p_dtImport.Rows[i]["職稱名稱"].ToString()); insertTB_EB_EMPL_DEP(l_strUser_Guid, l_GroupID, l_TITLENAME); //新增職務 string l_FUNC_ID = getFUNC_IDbyFUNC_NAME(p_dtImport.Rows[i]["職務名稱"].ToString()); insertTB_EB_EMPL_FUN(l_strUser_Guid, l_GroupID, l_FUNC_ID); //新增兵役 string l_MILITARY_SERVICE = p_dtImport.Rows[i]["服役名稱"].ToString(); string l_MARRIED = CoreMARRIED(p_dtImport.Rows[i]["婚姻狀況"].ToString()); insertTB_EB_EMPL_HR(l_strUser_Guid, l_MARRIED, l_MILITARY_SERVICE); //新增學歷 string l_EDUC_ID = getEDUC_IDbyEDUC_NAME(p_dtImport.Rows[i]["教育程度"].ToString()); string l_SCHOOL = p_dtImport.Rows[i]["畢業學校"].ToString(); string l_MAJOR = p_dtImport.Rows[i]["科系名稱"].ToString(); insertTB_EB_EMPL_HR_EDUACTION(l_strUser_Guid, l_EDUC_ID, l_SCHOOL, l_MAJOR); //新增員工 string l_SEX = CoreSEX(p_dtImport.Rows[i]["性別"].ToString()); string l_BIRTHDAY = p_dtImport.Rows[i]["出生年月日"].ToString(); string l_ARRIVE_DATE = p_dtImport.Rows[i]["到職日"].ToString(); insertTB_EB_EMPL(l_strUser_Guid, l_EDUC_ID, l_ARRIVE_DATE, l_BIRTHDAY, l_SEX); } this.m_db.CommitTransaction(); } catch (Exception ex) { this.m_db.RollbackTransaction(); throw ex; } }
public string GetExternalDllSites(string formInfo) { XmlDocument formXmlDoc = new XmlDocument(); DatabaseHelper DbQuery = new DatabaseHelper(); UserUCO userUCO = new UserUCO(); DataSet GroupName = new DataSet(); string SpecialGroupName = "N"; formXmlDoc.LoadXml(formInfo); string account = formXmlDoc.SelectSingleNode("/ExternalFlowSite/ApplicantInfo").Attributes["account"].Value; string userGuid = userUCO.GetGUID(account); EBUser ebUser = userUCO.GetEBUser(userGuid); string DEPNAME = ebUser.GroupName; GroupName = DbQuery.ExecuteDataSet("SELECT [GroupName] FROM [UOFTEST].[dbo].[GROUPNAMETOEF]"); //判斷是不是指定部門,可由簽至副理就結束 foreach (DataRow dr in GroupName.Tables[0].Rows) { if (DEPNAME.Equals(dr["GroupName"].ToString())) { SpecialGroupName = "Y"; break; } else { SpecialGroupName = "N"; } } //找到申請者的第1層主管 userSet1 = GetUserSuperior(userGuid); UserUCO userUCOsinger1 = new UserUCO(); if (userSet1.Items.Count > 0) { EBUser ebUsersinger1 = userUCOsinger1.GetEBUser(userSet1.Items[0].Key); singer1 = ebUsersinger1.Account; //主管的職級是理級以上就停止,不是就往上找 if (ebUsersinger1.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7) { singer2 = null; } //如果指定部門的主管是副理以上就停止,不是就往上找 else if (SpecialGroupName.Equals("Y") && ebUsersinger1.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9) { singer2 = null; } else { //找到申請者的第2層主管 userSet2 = GetUserSuperior(userSet1.Items[0].Key); UserUCO userUCOsinger2 = new UserUCO(); if (userSet2.Items.Count > 0) { EBUser ebUsersinger2 = userUCOsinger2.GetEBUser(userSet2.Items[0].Key); singer2 = ebUsersinger2.Account; //主管的職級是理級以上就停止,不是就往上找 if (ebUsersinger2.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7) { singer3 = null; } //如果指定部門的主管是副理以上就停止,不是就往上找 else if (SpecialGroupName.Equals("Y") && ebUsersinger2.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9) { singer3 = null; } else { //找到申請者的第3層主管 userSet3 = GetUserSuperior(userSet2.Items[0].Key); UserUCO userUCOsinger3 = new UserUCO(); if (userSet3.Items.Count > 0) { EBUser ebUsersinger3 = userUCOsinger3.GetEBUser(userSet3.Items[0].Key); singer3 = ebUsersinger3.Account; } else { singer3 = null; } } } else { singer2 = null; } } } else { singer1 = null; } //singer1 = "190052"; //singer2 = "120002"; //singer3 = "admin"; //if (ebUser.HasJobFunction("Superior")) //{ // signer = "admin"; //} //else //{ // signer = "Tony"; //} XmlDocument xmlDoc = new XmlDocument(); if (!string.IsNullOrEmpty(singer3)) { //<ReturnValue></ReturnValue> XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue"); //<Flow></Flow> XmlElement flowElement = xmlDoc.CreateElement("Flow"); //<Site></Site> 第1層 XmlElement siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "0"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> XmlElement signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> XmlElement signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer1); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); //<Site></Site> 第2層 siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "1"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer2); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); //<Site></Site> 第3層 siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "2"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer3); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); //<ReturnValue> // <Flow> // <Site order="0" signType="0"> // <Signers> // <Signer account ="Tony"/> // </Signers> // </Site> // </Flow> //</ReturnValue> returnValueElement.AppendChild(flowElement); xmlDoc.AppendChild(returnValueElement); } else if (!string.IsNullOrEmpty(singer2)) { //<ReturnValue></ReturnValue> XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue"); //<Flow></Flow> XmlElement flowElement = xmlDoc.CreateElement("Flow"); //<Site></Site> 第1層 XmlElement siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "0"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> XmlElement signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> XmlElement signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer1); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); //<Site></Site> 第2層 siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "1"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer2); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); returnValueElement.AppendChild(flowElement); xmlDoc.AppendChild(returnValueElement); } else if (!string.IsNullOrEmpty(singer1)) { //<ReturnValue></ReturnValue> XmlElement returnValueElement = xmlDoc.CreateElement("ReturnValue"); //<Flow></Flow> XmlElement flowElement = xmlDoc.CreateElement("Flow"); //<Site></Site> 第1層 XmlElement siteElement = xmlDoc.CreateElement("Site"); //<Site order='' signType='' ></Site> siteElement.SetAttribute("order", "0"); siteElement.SetAttribute("signType", "0"); //<Signers></Signers> XmlElement signersElement = xmlDoc.CreateElement("Signers"); //<Signer></Signer> XmlElement signerElement = xmlDoc.CreateElement("Signer"); //<Signer account='' /> signerElement.SetAttribute("account", singer1); //<Signers> // <Signer account='' /> //</Signers> signersElement.AppendChild(signerElement); //<Site order='' signType='' > // <Signers> // <Signer account='' /> // </Signers> //</Site> siteElement.AppendChild(signersElement); flowElement.AppendChild(siteElement); returnValueElement.AppendChild(flowElement); xmlDoc.AppendChild(returnValueElement); } return(xmlDoc.OuterXml); }
public void FINDALLSINGER(string userGuid) { UserUCO userUCO = new UserUCO(); EBUser ebUser = userUCO.GetEBUser(userGuid); EBUser ebUserHasJobFunction = userUCO.GetEBUser(userGuid); //找到申請者的所有簽核者和主管 while (FLAGGO == true) { BaseGroup baseGroup = new BaseGroup(ebUser.GroupID); //如果沒有上層的部門就停止 if (baseGroup.ParnetGroup == null) { FLAGGO = false; //break; } else { Lib.WKF.ExternalDllSite site1 = new Lib.WKF.ExternalDllSite(); site1.SignType = Lib.WKF.SignType.And; Lib.WKF.ExternalDllSite site2 = new Lib.WKF.ExternalDllSite(); //loop start userSet1 = GetUserSinger(userGuid); if (userSet1.Items.Count > 0) { for (int i = 0; i < userSet1.Items.Count; i++) { ebUserHasJobFunction = userUCO.GetEBUser(userSet1.Items[i].Key); if (!ebUserHasJobFunction.HasJobFunction("Superior")) { //申請者不用再當簽核者 if (!account.Equals(ebUserHasJobFunction.Account)) { site1.Signers.Add(ebUserHasJobFunction.Account); //add site1 singer } } else { site2.Signers.Add(ebUserHasJobFunction.Account); //add site2 singer EBUserSuperior = ebUserHasJobFunction; } //loop end } //有找到簽核人員才新增簽核 if (site1.Signers.Count > 0) { sites.Sites.Add(site1); } //有找到主管新增簽核 if (site2.Signers.Count > 0) { sites.Sites.Add(site2); } } } //如果沒有找到最高主管就繼續找上層部門的簽核人員+主管 if (!EBUserSuperior.Account.Equals(CompanyTopAccount)) { //FINDALLSINGER(Superior); //主管的職級是理級以上就停止,不是就往上找 if (SpecialGroupName.Equals("N") && EBUserSuperior.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 7) { FLAGGO = false; } //如果指定部門的主管是副理以上就停止,不是就往上找 else if (SpecialGroupName.Equals("Y") && EBUserSuperior.GetEmployeeDepartment(DepartmentOfUser.Major).JobTitle.Rank <= 9) { FLAGGO = false; } else { FINDALLSINGER(EBUserSuperior.UserGUID); } } //如果找到最高主管就停止 else { FLAGGO = false; //break; } } }